
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void do_function_location(Target_powerpc<64,_true> * this,
   Symbol_location * loc) */

void __thiscall
anon_unknown.dwarf_2af53c::Target_powerpc<64,_true>::do_function_location
          (Target_powerpc<64,_true> *this,Symbol_location *loc)

{
  Object *pOVar1;
  int iVar2;
  uint uVar3;
  uint *puVar4;
  uint uVar5;
  
  uVar5 = loc->shndx;
  if (uVar5 != 0) {
    pOVar1 = loc->object;
    if ((pOVar1->field_0x2c & 1) == 0) {
      if (uVar5 == pOVar1[5].shnum_) {
        iVar2 = *(int *)((int)&pOVar1[6].name_.field_2 + 0xc);
        uVar5 = (uint)loc->offset >> 4;
        if ((uint)((int)pOVar1[6].input_file_ - iVar2 >> 4) <= uVar5) {
                    /* WARNING: Subroutine does not return */
          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc4,"get_opd_ent");
        }
        puVar4 = (uint *)(uVar5 * 0x10 + iVar2);
        if (*puVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc5,"get_opd_ent");
        }
        uVar5 = puVar4[3];
        uVar3 = puVar4[2];
        loc->shndx = *puVar4;
        *(uint *)&loc->offset = uVar3;
        *(uint *)((int)&loc->offset + 4) = uVar5;
      }
    }
    else if (uVar5 == *(uint *)((int)&pOVar1[2].name_.field_2 + 8)) {
      iVar2 = *(int *)((int)&pOVar1[2].offset_ + 4);
      uVar5 = (uint)((int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc)) >> 4;
      if ((uint)(((int)(pOVar1[2].shnum_ - iVar2) >> 2) * -0x55555555) <= uVar5) {
                    /* WARNING: Subroutine does not return */
        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20b,"get_opd_ent");
      }
      puVar4 = (uint *)(iVar2 + uVar5 * 0xc);
      if (*puVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20c,"get_opd_ent");
      }
      uVar5 = puVar4[2];
      uVar3 = puVar4[1];
      loc->shndx = *puVar4;
      *(uint *)&loc->offset = uVar3;
      *(uint *)((int)&loc->offset + 4) = uVar5;
    }
  }
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void FUN_00058000(undefined4 param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  
  iVar1 = param_2[1];
  if (iVar1 != 0) {
    iVar2 = *param_2;
    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {
      if (iVar1 == *(int *)(iVar2 + 0x140)) {
        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;
        if (uVar4 <= (uint)param_2[2] >> 4) {
                    /* WARNING: Subroutine does not return */
          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);
        }
        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));
        if (*piVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);
        }
        iVar1 = piVar3[3];
        iVar2 = piVar3[2];
        param_2[1] = *piVar3;
        param_2[2] = iVar2;
        param_2[3] = iVar1;
      }
    }
    else if (iVar1 == *(int *)(iVar2 + 0x84)) {
      iVar1 = *(int *)(iVar2 + 0x94);
      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;
      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {
                    /* WARNING: Subroutine does not return */
        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);
      }
      piVar3 = (int *)(iVar1 + uVar4 * 0xc);
      if (*piVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);
      }
      iVar1 = piVar3[2];
      iVar2 = piVar3[1];
      param_2[1] = *piVar3;
      param_2[2] = iVar2;
      param_2[3] = iVar1;
    }
  }
  return;
}


PUSH ESI
CALL 0x0004d336
ADD ESI,0x3bbffa
PUSH EBX
SUB ESP,0x4
MOV EAX,dword ptr [ESP + 0x14]
MOV ECX,dword ptr [EAX + 0x4]
TEST ECX,ECX
JZ 0x0005802b
MOV EDX,dword ptr [EAX]
TEST byte ptr [EDX + 0x2c],0x1
JZ 0x00058038
CMP ECX,dword ptr [EDX + 0x84]
JZ 0x00058080
ADD ESP,0x4
POP EBX
POP ESI
RET
CMP ECX,dword ptr [EDX + 0x140]
JNZ 0x0005802b
MOV EBX,dword ptr [EDX + 0x168]
MOV EDX,dword ptr [EDX + 0x16c]
MOV ECX,dword ptr [EAX + 0x8]
SUB EDX,EBX
SHR ECX,0x4
SAR EDX,0x4
CMP ECX,EDX
JNC 0x000580fd
SHL ECX,0x4
ADD ECX,EBX
MOV EDX,dword ptr [ECX]
TEST EDX,EDX
JZ 0x000580e2
MOV EBX,dword ptr [ECX + 0xc]
MOV ECX,dword ptr [ECX + 0x8]
MOV dword ptr [EAX + 0x4],EDX
MOV dword ptr [EAX + 0x8],ECX
MOV dword ptr [EAX + 0xc],EBX
JMP 0x0005802b
MOV EBX,dword ptr [EDX + 0x94]
MOV ECX,dword ptr [EAX + 0x8]
SUB ECX,dword ptr [EDX + 0x88]
MOV EDX,dword ptr [EDX + 0x98]
SHR ECX,0x4
SUB EDX,EBX
SAR EDX,0x2
IMUL EDX,EDX,-0x55555555
CMP ECX,EDX
JNC 0x000580c7
LEA EDX,[ECX + ECX*0x2]
LEA ECX,[EBX + EDX*0x4]
MOV EDX,dword ptr [ECX]
TEST EDX,EDX
JZ 0x00058118
MOV EBX,dword ptr [ECX + 0x8]
MOV ECX,dword ptr [ECX + 0x4]
MOV dword ptr [EAX + 0x4],EDX
MOV dword ptr [EAX + 0x8],ECX
MOV dword ptr [EAX + 0xc],EBX
JMP 0x0005802b
LEA EAX,[ESI + 0xffee15dc]
PUSH EBX
MOV EBX,ESI
PUSH EAX
LEA EAX,[ESI + 0xffee2e84]
PUSH 0x20b
PUSH EAX
CALL 0x000da200
PUSH EAX
LEA EAX,[ESI + 0xffee1948]
MOV EBX,ESI
PUSH EAX
LEA EAX,[ESI + 0xffee2e84]
PUSH 0xc5
PUSH EAX
CALL 0x000da200
LEA EAX,[ESI + 0xffee1948]
PUSH EDX
MOV EBX,ESI
PUSH EAX
LEA EAX,[ESI + 0xffee2e84]
PUSH 0xc4
PUSH EAX
CALL 0x000da200
LEA EAX,[ESI + 0xffee15dc]
PUSH ECX
MOV EBX,ESI
PUSH EAX
LEA EAX,[ESI + 0xffee2e84]
PUSH 0x20c
PUSH EAX
CALL 0x000da200
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nvoid FUN_00058000(undefined4 param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  \n  iVar1 = param_2[1];\n  if (iVar1 != 0) {\n    iVar2 = *param_2;\n    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_00058000(undefined4 param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  \n  iVar1 = param_2[1];\n  if (iVar1 != 0) {\n    iVar2 = *param_2;\n    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00058000(undefined4 param_1,int *param_2)" identifier (parameter_list "(undefined4 param_1,int *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  \n  iVar1 = param_2[1];\n  if (iVar1 != 0) {\n    iVar2 = *param_2;\n    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (expression_statement "iVar1 = param_2[1];" (assignment_expression "iVar1 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar1 != 0) {\n    iVar2 = *param_2;\n    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar2 = *param_2;\n    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }\n  }" { (expression_statement "iVar2 = *param_2;" (assignment_expression "iVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }" if (parenthesized_expression "((*(byte *)(iVar2 + 0x2c) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x2c) & 1)" ( (binary_expression "*(byte *)(iVar2 + 0x2c) & 1" (pointer_expression "*(byte *)(iVar2 + 0x2c)" * (cast_expression "(byte *)(iVar2 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2c)" ( (binary_expression "iVar2 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }" { (if_statement "if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }" if (parenthesized_expression "(iVar1 == *(int *)(iVar2 + 0x140))" ( (binary_expression "iVar1 == *(int *)(iVar2 + 0x140)" identifier == (pointer_expression "*(int *)(iVar2 + 0x140)" * (cast_expression "(int *)(iVar2 + 0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x140)" ( (binary_expression "iVar2 + 0x140" identifier + number_literal) ))))) )) (compound_statement "{\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }" { (expression_statement "uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;" (assignment_expression "uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4" identifier = (binary_expression "*(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4" (binary_expression "*(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168)" (pointer_expression "*(int *)(iVar2 + 0x16c)" * (cast_expression "(int *)(iVar2 + 0x16c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x16c)" ( (binary_expression "iVar2 + 0x16c" identifier + number_literal) )))) - (pointer_expression "*(int *)(iVar2 + 0x168)" * (cast_expression "(int *)(iVar2 + 0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x168)" ( (binary_expression "iVar2 + 0x168" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (uVar4 <= (uint)param_2[2] >> 4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }" if (parenthesized_expression "(uVar4 <= (uint)param_2[2] >> 4)" ( (binary_expression "uVar4 <= (uint)param_2[2] >> 4" identifier <= (binary_expression "(uint)param_2[2] >> 4" (cast_expression "(uint)param_2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) >> number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }" { comment (expression_statement "FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);" (call_expression "FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4)" identifier (argument_list "("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4)" ( (string_literal ""../../gold/powerpc.cc"" " string_content ") , number_literal , (string_literal ""get_opd_ent"" " string_content ") , identifier ))) ;) })) (expression_statement "piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));" (assignment_expression "piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168))" identifier = (cast_expression "(int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168))" ( (binary_expression "((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168)" (binary_expression "((uint)param_2[2] >> 4) * 0x10" (parenthesized_expression "((uint)param_2[2] >> 4)" ( (binary_expression "(uint)param_2[2] >> 4" (cast_expression "(uint)param_2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) >> number_literal) )) * number_literal) + (pointer_expression "*(int *)(iVar2 + 0x168)" * (cast_expression "(int *)(iVar2 + 0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x168)" ( (binary_expression "iVar2 + 0x168" identifier + number_literal) ))))) )))) ;) (if_statement "if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }" if (parenthesized_expression "(*piVar3 == 0)" ( (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" * identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }" { comment (expression_statement "FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);" (call_expression "FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2)" identifier (argument_list "("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2)" ( (string_literal ""../../gold/powerpc.cc"" " string_content ") , number_literal , (string_literal ""get_opd_ent"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar1 = piVar3[3];" (assignment_expression "iVar1 = piVar3[3]" identifier = (subscript_expression "piVar3[3]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = piVar3[2];" (assignment_expression "iVar2 = piVar3[2]" identifier = (subscript_expression "piVar3[2]" identifier [ number_literal ])) ;) (expression_statement "param_2[1] = *piVar3;" (assignment_expression "param_2[1] = *piVar3" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "param_2[2] = iVar2;" (assignment_expression "param_2[2] = iVar2" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[3] = iVar1;" (assignment_expression "param_2[3] = iVar1" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) })) }) (else_clause "else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }" else (if_statement "if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }" if (parenthesized_expression "(iVar1 == *(int *)(iVar2 + 0x84))" ( (binary_expression "iVar1 == *(int *)(iVar2 + 0x84)" identifier == (pointer_expression "*(int *)(iVar2 + 0x84)" * (cast_expression "(int *)(iVar2 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x84)" ( (binary_expression "iVar2 + 0x84" identifier + number_literal) ))))) )) (compound_statement "{\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }" { (expression_statement "iVar1 = *(int *)(iVar2 + 0x94);" (assignment_expression "iVar1 = *(int *)(iVar2 + 0x94)" identifier = (pointer_expression "*(int *)(iVar2 + 0x94)" * (cast_expression "(int *)(iVar2 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x94)" ( (binary_expression "iVar2 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;" (assignment_expression "uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4" identifier = (binary_expression "(uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4" (call_expression "(uint)(param_2[2] - *(int *)(iVar2 + 0x88))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2[2] - *(int *)(iVar2 + 0x88))" ( (binary_expression "param_2[2] - *(int *)(iVar2 + 0x88)" (subscript_expression "param_2[2]" identifier [ number_literal ]) - (pointer_expression "*(int *)(iVar2 + 0x88)" * (cast_expression "(int *)(iVar2 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x88)" ( (binary_expression "iVar2 + 0x88" identifier + number_literal) ))))) ))) >> number_literal)) ;) (if_statement "if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }" if (parenthesized_expression "((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4)" ( (binary_expression "(uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4" (call_expression "(uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555)" ( (binary_expression "(*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555" (parenthesized_expression "(*(int *)(iVar2 + 0x98) - iVar1 >> 2)" ( (binary_expression "*(int *)(iVar2 + 0x98) - iVar1 >> 2" (binary_expression "*(int *)(iVar2 + 0x98) - iVar1" (pointer_expression "*(int *)(iVar2 + 0x98)" * (cast_expression "(int *)(iVar2 + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x98)" ( (binary_expression "iVar2 + 0x98" identifier + number_literal) )))) - identifier) >> number_literal) )) * number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }" { comment (expression_statement "FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);" (call_expression "FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1)" identifier (argument_list "("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1)" ( (string_literal ""../../gold/powerpc.cc"" " string_content ") , number_literal , (string_literal ""get_opd_ent"" " string_content ") , identifier ))) ;) })) (expression_statement "piVar3 = (int *)(iVar1 + uVar4 * 0xc);" (assignment_expression "piVar3 = (int *)(iVar1 + uVar4 * 0xc)" identifier = (cast_expression "(int *)(iVar1 + uVar4 * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + uVar4 * 0xc)" ( (binary_expression "iVar1 + uVar4 * 0xc" identifier + (binary_expression "uVar4 * 0xc" identifier * number_literal)) )))) ;) (if_statement "if (*piVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }" if (parenthesized_expression "(*piVar3 == 0)" ( (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" * identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }" { comment (expression_statement "FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);" (call_expression "FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3)" identifier (argument_list "("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3)" ( (string_literal ""../../gold/powerpc.cc"" " string_content ") , number_literal , (string_literal ""get_opd_ent"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar1 = piVar3[2];" (assignment_expression "iVar1 = piVar3[2]" identifier = (subscript_expression "piVar3[2]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = piVar3[1];" (assignment_expression "iVar2 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;) (expression_statement "param_2[1] = *piVar3;" (assignment_expression "param_2[1] = *piVar3" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "param_2[2] = iVar2;" (assignment_expression "param_2[2] = iVar2" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[3] = iVar1;" (assignment_expression "param_2[3] = iVar1" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) })))) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void do_function_location(Target_powerpc<64,_true> * this,\n   Symbol_location * loc) */\n\nvoid __thiscall\nanon_unknown.dwarf_2af53c::Target_powerpc<64,_true>::do_function_location\n          (Target_powerpc<64,_true> *this,Symbol_location *loc)\n\n{\n  Object *pOVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  \n  uVar5 = loc->shndx;\n  if (uVar5 != 0) {\n    pOVar1 = loc->object;\n    if ((pOVar1->field_0x2c & 1) == 0) {\n      if (uVar5 == pOVar1[5].shnum_) {\n        iVar2 = *(int *)((int)&pOVar1[6].name_.field_2 + 0xc);\n        uVar5 = (uint)loc->offset >> 4;\n        if ((uint)((int)pOVar1[6].input_file_ - iVar2 >> 4) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc4,"get_opd_ent");\n        }\n        puVar4 = (uint *)(uVar5 * 0x10 + iVar2);\n        if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc5,"get_opd_ent");\n        }\n        uVar5 = puVar4[3];\n        uVar3 = puVar4[2];\n        loc->shndx = *puVar4;\n        *(uint *)&loc->offset = uVar3;\n        *(uint *)((int)&loc->offset + 4) = uVar5;\n      }\n    }\n    else if (uVar5 == *(uint *)((int)&pOVar1[2].name_.field_2 + 8)) {\n      iVar2 = *(int *)((int)&pOVar1[2].offset_ + 4);\n      uVar5 = (uint)((int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc)) >> 4;\n      if ((uint)(((int)(pOVar1[2].shnum_ - iVar2) >> 2) * -0x55555555) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20b,"get_opd_ent");\n      }\n      puVar4 = (uint *)(iVar2 + uVar5 * 0xc);\n      if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20c,"get_opd_ent");\n      }\n      uVar5 = puVar4[2];\n      uVar3 = puVar4[1];\n      loc->shndx = *puVar4;\n      *(uint *)&loc->offset = uVar3;\n      *(uint *)((int)&loc->offset + 4) = uVar5;\n    }\n  }\n  return;\n}\n\n" comment comment comment (declaration "void __thiscall\nanon_unknown.dwarf_2af53c::Target_powerpc<64,_true>::do_function_location\n          (Target_powerpc<64,_true> *this,Symbol_location *loc)\n\n{\n  Object *pOVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_2af53c::" identifier . identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::do_function_location\n          (Target_powerpc<64,_true> *this,Symbol_location *loc)\n\n{\n  Object" identifier > : : (function_declarator "do_function_location\n          (Target_powerpc<64,_true> *this,Symbol_location *loc)" identifier (parameter_list "(Target_powerpc<64,_true> *this,Symbol_location *loc)" ( (parameter_declaration "Target_powerpc" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_location *loc" type_identifier (pointer_declarator "*loc" * identifier)) ))) { identifier) (pointer_declarator "*pOVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (expression_statement "uVar5 = loc->shndx;" (assignment_expression "uVar5 = loc->shndx" identifier = (field_expression "loc->shndx" identifier -> field_identifier)) ;) (if_statement "if (uVar5 != 0) {\n    pOVar1 = loc->object;\n    if ((pOVar1->field_0x2c & 1) == 0) {\n      if (uVar5 == pOVar1[5].shnum_) {\n        iVar2 = *(int *)((int)&pOVar1[6].name_.field_2 + 0xc);\n        uVar5 = (uint)loc->offset >> 4;\n        if ((uint)((int)pOVar1[6].input_file_ - iVar2 >> 4) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc4,"get_opd_ent");\n        }\n        puVar4 = (uint *)(uVar5 * 0x10 + iVar2);\n        if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc5,"get_opd_ent");\n        }\n        uVar5 = puVar4[3];\n        uVar3 = puVar4[2];\n        loc->shndx = *puVar4;\n        *(uint *)&loc->offset = uVar3;\n        *(uint *)((int)&loc->offset + 4) = uVar5;\n      }\n    }\n    else if (uVar5 == *(uint *)((int)&pOVar1[2].name_.field_2 + 8)) {\n      iVar2 = *(int *)((int)&pOVar1[2].offset_ + 4);\n      uVar5 = (uint)((int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc)) >> 4;\n      if ((uint)(((int)(pOVar1[2].shnum_ - iVar2) >> 2) * -0x55555555) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20b,"get_opd_ent");\n      }\n      puVar4 = (uint *)(iVar2 + uVar5 * 0xc);\n      if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20c,"get_opd_ent");\n      }\n      uVar5 = puVar4[2];\n      uVar3 = puVar4[1];\n      loc->shndx = *puVar4;\n      *(uint *)&loc->offset = uVar3;\n      *(uint *)((int)&loc->offset + 4) = uVar5;\n    }\n  }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    pOVar1 = loc->object;\n    if ((pOVar1->field_0x2c & 1) == 0) {\n      if (uVar5 == pOVar1[5].shnum_) {\n        iVar2 = *(int *)((int)&pOVar1[6].name_.field_2 + 0xc);\n        uVar5 = (uint)loc->offset >> 4;\n        if ((uint)((int)pOVar1[6].input_file_ - iVar2 >> 4) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc4,"get_opd_ent");\n        }\n        puVar4 = (uint *)(uVar5 * 0x10 + iVar2);\n        if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc5,"get_opd_ent");\n        }\n        uVar5 = puVar4[3];\n        uVar3 = puVar4[2];\n        loc->shndx = *puVar4;\n        *(uint *)&loc->offset = uVar3;\n        *(uint *)((int)&loc->offset + 4) = uVar5;\n      }\n    }\n    else if (uVar5 == *(uint *)((int)&pOVar1[2].name_.field_2 + 8)) {\n      iVar2 = *(int *)((int)&pOVar1[2].offset_ + 4);\n      uVar5 = (uint)((int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc)) >> 4;\n      if ((uint)(((int)(pOVar1[2].shnum_ - iVar2) >> 2) * -0x55555555) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20b,"get_opd_ent");\n      }\n      puVar4 = (uint *)(iVar2 + uVar5 * 0xc);\n      if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20c,"get_opd_ent");\n      }\n      uVar5 = puVar4[2];\n      uVar3 = puVar4[1];\n      loc->shndx = *puVar4;\n      *(uint *)&loc->offset = uVar3;\n      *(uint *)((int)&loc->offset + 4) = uVar5;\n    }\n  }" { (expression_statement "pOVar1 = loc->object;" (assignment_expression "pOVar1 = loc->object" identifier = (field_expression "loc->object" identifier -> field_identifier)) ;) (if_statement "if ((pOVar1->field_0x2c & 1) == 0) {\n      if (uVar5 == pOVar1[5].shnum_) {\n        iVar2 = *(int *)((int)&pOVar1[6].name_.field_2 + 0xc);\n        uVar5 = (uint)loc->offset >> 4;\n        if ((uint)((int)pOVar1[6].input_file_ - iVar2 >> 4) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc4,"get_opd_ent");\n        }\n        puVar4 = (uint *)(uVar5 * 0x10 + iVar2);\n        if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc5,"get_opd_ent");\n        }\n        uVar5 = puVar4[3];\n        uVar3 = puVar4[2];\n        loc->shndx = *puVar4;\n        *(uint *)&loc->offset = uVar3;\n        *(uint *)((int)&loc->offset + 4) = uVar5;\n      }\n    }\n    else if (uVar5 == *(uint *)((int)&pOVar1[2].name_.field_2 + 8)) {\n      iVar2 = *(int *)((int)&pOVar1[2].offset_ + 4);\n      uVar5 = (uint)((int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc)) >> 4;\n      if ((uint)(((int)(pOVar1[2].shnum_ - iVar2) >> 2) * -0x55555555) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20b,"get_opd_ent");\n      }\n      puVar4 = (uint *)(iVar2 + uVar5 * 0xc);\n      if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20c,"get_opd_ent");\n      }\n      uVar5 = puVar4[2];\n      uVar3 = puVar4[1];\n      loc->shndx = *puVar4;\n      *(uint *)&loc->offset = uVar3;\n      *(uint *)((int)&loc->offset + 4) = uVar5;\n    }" if (parenthesized_expression "((pOVar1->field_0x2c & 1) == 0)" ( (binary_expression "(pOVar1->field_0x2c & 1) == 0" (parenthesized_expression "(pOVar1->field_0x2c & 1)" ( (binary_expression "pOVar1->field_0x2c & 1" (field_expression "pOVar1->field_0x2c" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (uVar5 == pOVar1[5].shnum_) {\n        iVar2 = *(int *)((int)&pOVar1[6].name_.field_2 + 0xc);\n        uVar5 = (uint)loc->offset >> 4;\n        if ((uint)((int)pOVar1[6].input_file_ - iVar2 >> 4) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc4,"get_opd_ent");\n        }\n        puVar4 = (uint *)(uVar5 * 0x10 + iVar2);\n        if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc5,"get_opd_ent");\n        }\n        uVar5 = puVar4[3];\n        uVar3 = puVar4[2];\n        loc->shndx = *puVar4;\n        *(uint *)&loc->offset = uVar3;\n        *(uint *)((int)&loc->offset + 4) = uVar5;\n      }\n    }" { (if_statement "if (uVar5 == pOVar1[5].shnum_) {\n        iVar2 = *(int *)((int)&pOVar1[6].name_.field_2 + 0xc);\n        uVar5 = (uint)loc->offset >> 4;\n        if ((uint)((int)pOVar1[6].input_file_ - iVar2 >> 4) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc4,"get_opd_ent");\n        }\n        puVar4 = (uint *)(uVar5 * 0x10 + iVar2);\n        if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc5,"get_opd_ent");\n        }\n        uVar5 = puVar4[3];\n        uVar3 = puVar4[2];\n        loc->shndx = *puVar4;\n        *(uint *)&loc->offset = uVar3;\n        *(uint *)((int)&loc->offset + 4) = uVar5;\n      }" if (parenthesized_expression "(uVar5 == pOVar1[5].shnum_)" ( (binary_expression "uVar5 == pOVar1[5].shnum_" identifier == (field_expression "pOVar1[5].shnum_" (subscript_expression "pOVar1[5]" identifier [ number_literal ]) . field_identifier)) )) (compound_statement "{\n        iVar2 = *(int *)((int)&pOVar1[6].name_.field_2 + 0xc);\n        uVar5 = (uint)loc->offset >> 4;\n        if ((uint)((int)pOVar1[6].input_file_ - iVar2 >> 4) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc4,"get_opd_ent");\n        }\n        puVar4 = (uint *)(uVar5 * 0x10 + iVar2);\n        if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc5,"get_opd_ent");\n        }\n        uVar5 = puVar4[3];\n        uVar3 = puVar4[2];\n        loc->shndx = *puVar4;\n        *(uint *)&loc->offset = uVar3;\n        *(uint *)((int)&loc->offset + 4) = uVar5;\n      }" { (expression_statement "iVar2 = *(int *)((int)&pOVar1[6].name_.field_2 + 0xc);" (assignment_expression "iVar2 = *(int *)((int)&pOVar1[6].name_.field_2 + 0xc)" identifier = (pointer_expression "*(int *)((int)&pOVar1[6].name_.field_2 + 0xc)" * (cast_expression "(int *)((int)&pOVar1[6].name_.field_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pOVar1[6].name_.field_2 + 0xc)" ( (binary_expression "(int)&pOVar1[6].name_.field_2 + 0xc" (cast_expression "(int)&pOVar1[6].name_.field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pOVar1[6].name_.field_2" & (field_expression "pOVar1[6].name_.field_2" (field_expression "pOVar1[6].name_" (subscript_expression "pOVar1[6]" identifier [ number_literal ]) . field_identifier) . field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar5 = (uint)loc->offset >> 4;" (assignment_expression "uVar5 = (uint)loc->offset >> 4" identifier = (binary_expression "(uint)loc->offset >> 4" (cast_expression "(uint)loc->offset" ( (type_descriptor "uint" type_identifier) ) (field_expression "loc->offset" identifier -> field_identifier)) >> number_literal)) ;) (if_statement "if ((uint)((int)pOVar1[6].input_file_ - iVar2 >> 4) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc4,"get_opd_ent");\n        }" if (parenthesized_expression "((uint)((int)pOVar1[6].input_file_ - iVar2 >> 4) <= uVar5)" ( (binary_expression "(uint)((int)pOVar1[6].input_file_ - iVar2 >> 4) <= uVar5" (call_expression "(uint)((int)pOVar1[6].input_file_ - iVar2 >> 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pOVar1[6].input_file_ - iVar2 >> 4)" ( (binary_expression "(int)pOVar1[6].input_file_ - iVar2 >> 4" (binary_expression "(int)pOVar1[6].input_file_ - iVar2" (cast_expression "(int)pOVar1[6].input_file_" ( (type_descriptor "int" primitive_type) ) (field_expression "pOVar1[6].input_file_" (subscript_expression "pOVar1[6]" identifier [ number_literal ]) . field_identifier)) - identifier) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc4,"get_opd_ent");\n        }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/powerpc.cc",0xc4,"get_opd_ent");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/powerpc.cc",0xc4,"get_opd_ent");" (call_expression "do_gold_unreachable("../../gold/powerpc.cc",0xc4,"get_opd_ent")" identifier (argument_list "("../../gold/powerpc.cc",0xc4,"get_opd_ent")" ( (string_literal ""../../gold/powerpc.cc"" " string_content ") , number_literal , (string_literal ""get_opd_ent"" " string_content ") ))) ;)) })) (expression_statement "puVar4 = (uint *)(uVar5 * 0x10 + iVar2);" (assignment_expression "puVar4 = (uint *)(uVar5 * 0x10 + iVar2)" identifier = (cast_expression "(uint *)(uVar5 * 0x10 + iVar2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 * 0x10 + iVar2)" ( (binary_expression "uVar5 * 0x10 + iVar2" (binary_expression "uVar5 * 0x10" identifier * number_literal) + identifier) )))) ;) (if_statement "if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc5,"get_opd_ent");\n        }" if (parenthesized_expression "(*puVar4 == 0)" ( (binary_expression "*puVar4 == 0" (pointer_expression "*puVar4" * identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/powerpc.cc",0xc5,"get_opd_ent");\n        }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/powerpc.cc",0xc5,"get_opd_ent");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/powerpc.cc",0xc5,"get_opd_ent");" (call_expression "do_gold_unreachable("../../gold/powerpc.cc",0xc5,"get_opd_ent")" identifier (argument_list "("../../gold/powerpc.cc",0xc5,"get_opd_ent")" ( (string_literal ""../../gold/powerpc.cc"" " string_content ") , number_literal , (string_literal ""get_opd_ent"" " string_content ") ))) ;)) })) (expression_statement "uVar5 = puVar4[3];" (assignment_expression "uVar5 = puVar4[3]" identifier = (subscript_expression "puVar4[3]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = puVar4[2];" (assignment_expression "uVar3 = puVar4[2]" identifier = (subscript_expression "puVar4[2]" identifier [ number_literal ])) ;) (expression_statement "loc->shndx = *puVar4;" (assignment_expression "loc->shndx = *puVar4" (field_expression "loc->shndx" identifier -> field_identifier) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "*(uint *)&loc->offset = uVar3;" (assignment_expression "*(uint *)&loc->offset = uVar3" (pointer_expression "*(uint *)&loc->offset" * (cast_expression "(uint *)&loc->offset" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&loc->offset" & (field_expression "loc->offset" identifier -> field_identifier)))) = identifier) ;) (expression_statement "*(uint *)((int)&loc->offset + 4) = uVar5;" (assignment_expression "*(uint *)((int)&loc->offset + 4) = uVar5" (pointer_expression "*(uint *)((int)&loc->offset + 4)" * (cast_expression "(uint *)((int)&loc->offset + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&loc->offset + 4)" ( (binary_expression "(int)&loc->offset + 4" (cast_expression "(int)&loc->offset" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&loc->offset" & (field_expression "loc->offset" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) })) }) (else_clause "else if (uVar5 == *(uint *)((int)&pOVar1[2].name_.field_2 + 8)) {\n      iVar2 = *(int *)((int)&pOVar1[2].offset_ + 4);\n      uVar5 = (uint)((int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc)) >> 4;\n      if ((uint)(((int)(pOVar1[2].shnum_ - iVar2) >> 2) * -0x55555555) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20b,"get_opd_ent");\n      }\n      puVar4 = (uint *)(iVar2 + uVar5 * 0xc);\n      if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20c,"get_opd_ent");\n      }\n      uVar5 = puVar4[2];\n      uVar3 = puVar4[1];\n      loc->shndx = *puVar4;\n      *(uint *)&loc->offset = uVar3;\n      *(uint *)((int)&loc->offset + 4) = uVar5;\n    }" else (if_statement "if (uVar5 == *(uint *)((int)&pOVar1[2].name_.field_2 + 8)) {\n      iVar2 = *(int *)((int)&pOVar1[2].offset_ + 4);\n      uVar5 = (uint)((int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc)) >> 4;\n      if ((uint)(((int)(pOVar1[2].shnum_ - iVar2) >> 2) * -0x55555555) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20b,"get_opd_ent");\n      }\n      puVar4 = (uint *)(iVar2 + uVar5 * 0xc);\n      if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20c,"get_opd_ent");\n      }\n      uVar5 = puVar4[2];\n      uVar3 = puVar4[1];\n      loc->shndx = *puVar4;\n      *(uint *)&loc->offset = uVar3;\n      *(uint *)((int)&loc->offset + 4) = uVar5;\n    }" if (parenthesized_expression "(uVar5 == *(uint *)((int)&pOVar1[2].name_.field_2 + 8))" ( (binary_expression "uVar5 == *(uint *)((int)&pOVar1[2].name_.field_2 + 8)" identifier == (pointer_expression "*(uint *)((int)&pOVar1[2].name_.field_2 + 8)" * (cast_expression "(uint *)((int)&pOVar1[2].name_.field_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pOVar1[2].name_.field_2 + 8)" ( (binary_expression "(int)&pOVar1[2].name_.field_2 + 8" (cast_expression "(int)&pOVar1[2].name_.field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pOVar1[2].name_.field_2" & (field_expression "pOVar1[2].name_.field_2" (field_expression "pOVar1[2].name_" (subscript_expression "pOVar1[2]" identifier [ number_literal ]) . field_identifier) . field_identifier))) + number_literal) ))))) )) (compound_statement "{\n      iVar2 = *(int *)((int)&pOVar1[2].offset_ + 4);\n      uVar5 = (uint)((int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc)) >> 4;\n      if ((uint)(((int)(pOVar1[2].shnum_ - iVar2) >> 2) * -0x55555555) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20b,"get_opd_ent");\n      }\n      puVar4 = (uint *)(iVar2 + uVar5 * 0xc);\n      if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20c,"get_opd_ent");\n      }\n      uVar5 = puVar4[2];\n      uVar3 = puVar4[1];\n      loc->shndx = *puVar4;\n      *(uint *)&loc->offset = uVar3;\n      *(uint *)((int)&loc->offset + 4) = uVar5;\n    }" { (expression_statement "iVar2 = *(int *)((int)&pOVar1[2].offset_ + 4);" (assignment_expression "iVar2 = *(int *)((int)&pOVar1[2].offset_ + 4)" identifier = (pointer_expression "*(int *)((int)&pOVar1[2].offset_ + 4)" * (cast_expression "(int *)((int)&pOVar1[2].offset_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pOVar1[2].offset_ + 4)" ( (binary_expression "(int)&pOVar1[2].offset_ + 4" (cast_expression "(int)&pOVar1[2].offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pOVar1[2].offset_" & (field_expression "pOVar1[2].offset_" (subscript_expression "pOVar1[2]" identifier [ number_literal ]) . field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar5 = (uint)((int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc)) >> 4;" (assignment_expression "uVar5 = (uint)((int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc)) >> 4" identifier = (binary_expression "(uint)((int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc)) >> 4" (call_expression "(uint)((int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc))" ( (binary_expression "(int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc)" (cast_expression "(int)loc->offset" ( (type_descriptor "int" primitive_type) ) (field_expression "loc->offset" identifier -> field_identifier)) - (pointer_expression "*(int *)((int)&pOVar1[2].name_.field_2 + 0xc)" * (cast_expression "(int *)((int)&pOVar1[2].name_.field_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pOVar1[2].name_.field_2 + 0xc)" ( (binary_expression "(int)&pOVar1[2].name_.field_2 + 0xc" (cast_expression "(int)&pOVar1[2].name_.field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pOVar1[2].name_.field_2" & (field_expression "pOVar1[2].name_.field_2" (field_expression "pOVar1[2].name_" (subscript_expression "pOVar1[2]" identifier [ number_literal ]) . field_identifier) . field_identifier))) + number_literal) ))))) ))) >> number_literal)) ;) (if_statement "if ((uint)(((int)(pOVar1[2].shnum_ - iVar2) >> 2) * -0x55555555) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20b,"get_opd_ent");\n      }" if (parenthesized_expression "((uint)(((int)(pOVar1[2].shnum_ - iVar2) >> 2) * -0x55555555) <= uVar5)" ( (binary_expression "(uint)(((int)(pOVar1[2].shnum_ - iVar2) >> 2) * -0x55555555) <= uVar5" (call_expression "(uint)(((int)(pOVar1[2].shnum_ - iVar2) >> 2) * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((int)(pOVar1[2].shnum_ - iVar2) >> 2) * -0x55555555)" ( (binary_expression "((int)(pOVar1[2].shnum_ - iVar2) >> 2) * -0x55555555" (parenthesized_expression "((int)(pOVar1[2].shnum_ - iVar2) >> 2)" ( (binary_expression "(int)(pOVar1[2].shnum_ - iVar2) >> 2" (cast_expression "(int)(pOVar1[2].shnum_ - iVar2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pOVar1[2].shnum_ - iVar2)" ( (binary_expression "pOVar1[2].shnum_ - iVar2" (field_expression "pOVar1[2].shnum_" (subscript_expression "pOVar1[2]" identifier [ number_literal ]) . field_identifier) - identifier) ))) >> number_literal) )) * number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20b,"get_opd_ent");\n      }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/powerpc.cc",0x20b,"get_opd_ent");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/powerpc.cc",0x20b,"get_opd_ent");" (call_expression "do_gold_unreachable("../../gold/powerpc.cc",0x20b,"get_opd_ent")" identifier (argument_list "("../../gold/powerpc.cc",0x20b,"get_opd_ent")" ( (string_literal ""../../gold/powerpc.cc"" " string_content ") , number_literal , (string_literal ""get_opd_ent"" " string_content ") ))) ;)) })) (expression_statement "puVar4 = (uint *)(iVar2 + uVar5 * 0xc);" (assignment_expression "puVar4 = (uint *)(iVar2 + uVar5 * 0xc)" identifier = (cast_expression "(uint *)(iVar2 + uVar5 * 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + uVar5 * 0xc)" ( (binary_expression "iVar2 + uVar5 * 0xc" identifier + (binary_expression "uVar5 * 0xc" identifier * number_literal)) )))) ;) (if_statement "if (*puVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20c,"get_opd_ent");\n      }" if (parenthesized_expression "(*puVar4 == 0)" ( (binary_expression "*puVar4 == 0" (pointer_expression "*puVar4" * identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/powerpc.cc",0x20c,"get_opd_ent");\n      }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/powerpc.cc",0x20c,"get_opd_ent");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/powerpc.cc",0x20c,"get_opd_ent");" (call_expression "do_gold_unreachable("../../gold/powerpc.cc",0x20c,"get_opd_ent")" identifier (argument_list "("../../gold/powerpc.cc",0x20c,"get_opd_ent")" ( (string_literal ""../../gold/powerpc.cc"" " string_content ") , number_literal , (string_literal ""get_opd_ent"" " string_content ") ))) ;)) })) (expression_statement "uVar5 = puVar4[2];" (assignment_expression "uVar5 = puVar4[2]" identifier = (subscript_expression "puVar4[2]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = puVar4[1];" (assignment_expression "uVar3 = puVar4[1]" identifier = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "loc->shndx = *puVar4;" (assignment_expression "loc->shndx = *puVar4" (field_expression "loc->shndx" identifier -> field_identifier) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "*(uint *)&loc->offset = uVar3;" (assignment_expression "*(uint *)&loc->offset = uVar3" (pointer_expression "*(uint *)&loc->offset" * (cast_expression "(uint *)&loc->offset" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&loc->offset" & (field_expression "loc->offset" identifier -> field_identifier)))) = identifier) ;) (expression_statement "*(uint *)((int)&loc->offset + 4) = uVar5;" (assignment_expression "*(uint *)((int)&loc->offset + 4) = uVar5" (pointer_expression "*(uint *)((int)&loc->offset + 4)" * (cast_expression "(uint *)((int)&loc->offset + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&loc->offset + 4)" ( (binary_expression "(int)&loc->offset + 4" (cast_expression "(int)&loc->offset" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&loc->offset" & (field_expression "loc->offset" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) })))) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_00058000(undefined4 param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  \n  iVar1 = param_2[1];\n  if (iVar1 != 0) {\n    iVar2 = *param_2;\n    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00058000(undefined4 param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  \n  iVar1 = param_2[1];\n  if (iVar1 != 0) {\n    iVar2 = *param_2;\n    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00058000(undefined4 param_1,int *param_2)" identifier (parameter_list "(undefined4 param_1,int *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  \n  iVar1 = param_2[1];\n  if (iVar1 != 0) {\n    iVar2 = *param_2;\n    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (expression_statement "iVar1 = param_2[1];" (assignment_expression "iVar1 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar1 != 0) {\n    iVar2 = *param_2;\n    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar2 = *param_2;\n    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }\n  }" { (expression_statement "iVar2 = *param_2;" (assignment_expression "iVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }" if (parenthesized_expression "((*(byte *)(iVar2 + 0x2c) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x2c) & 1)" ( (binary_expression "*(byte *)(iVar2 + 0x2c) & 1" (pointer_expression "*(byte *)(iVar2 + 0x2c)" * (cast_expression "(byte *)(iVar2 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2c)" ( (binary_expression "iVar2 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }" { (if_statement "if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }" if (parenthesized_expression "(iVar1 == *(int *)(iVar2 + 0x140))" ( (binary_expression "iVar1 == *(int *)(iVar2 + 0x140)" identifier == (pointer_expression "*(int *)(iVar2 + 0x140)" * (cast_expression "(int *)(iVar2 + 0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x140)" ( (binary_expression "iVar2 + 0x140" identifier + number_literal) ))))) )) (compound_statement "{\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }" { (expression_statement "uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;" (assignment_expression "uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4" identifier = (binary_expression "*(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4" (binary_expression "*(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168)" (pointer_expression "*(int *)(iVar2 + 0x16c)" * (cast_expression "(int *)(iVar2 + 0x16c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x16c)" ( (binary_expression "iVar2 + 0x16c" identifier + number_literal) )))) - (pointer_expression "*(int *)(iVar2 + 0x168)" * (cast_expression "(int *)(iVar2 + 0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x168)" ( (binary_expression "iVar2 + 0x168" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }" if (parenthesized_expression "(uVar4 <= (uint)param_2[2] >> 4)" ( (binary_expression "uVar4 <= (uint)param_2[2] >> 4" identifier <= (binary_expression "(uint)param_2[2] >> 4" (cast_expression "(uint)param_2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) >> number_literal)) )) (compound_statement "{\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }" { (expression_statement "FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);" (call_expression "FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4)" identifier (argument_list "("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4)" ( (string_literal ""../../gold/powerpc.cc"" " string_content ") , number_literal , (string_literal ""get_opd_ent"" " string_content ") , identifier ))) ;) })) (expression_statement "piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));" (assignment_expression "piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168))" identifier = (cast_expression "(int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168))" ( (binary_expression "((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168)" (binary_expression "((uint)param_2[2] >> 4) * 0x10" (parenthesized_expression "((uint)param_2[2] >> 4)" ( (binary_expression "(uint)param_2[2] >> 4" (cast_expression "(uint)param_2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) >> number_literal) )) * number_literal) + (pointer_expression "*(int *)(iVar2 + 0x168)" * (cast_expression "(int *)(iVar2 + 0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x168)" ( (binary_expression "iVar2 + 0x168" identifier + number_literal) ))))) )))) ;) (if_statement "if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }" if (parenthesized_expression "(*piVar3 == 0)" ( (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" * identifier) == number_literal) )) (compound_statement "{\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }" { (expression_statement "FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);" (call_expression "FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2)" identifier (argument_list "("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2)" ( (string_literal ""../../gold/powerpc.cc"" " string_content ") , number_literal , (string_literal ""get_opd_ent"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar1 = piVar3[3];" (assignment_expression "iVar1 = piVar3[3]" identifier = (subscript_expression "piVar3[3]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = piVar3[2];" (assignment_expression "iVar2 = piVar3[2]" identifier = (subscript_expression "piVar3[2]" identifier [ number_literal ])) ;) (expression_statement "param_2[1] = *piVar3;" (assignment_expression "param_2[1] = *piVar3" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "param_2[2] = iVar2;" (assignment_expression "param_2[2] = iVar2" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[3] = iVar1;" (assignment_expression "param_2[3] = iVar1" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) })) }) (else_clause "else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }" else (if_statement "if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }" if (parenthesized_expression "(iVar1 == *(int *)(iVar2 + 0x84))" ( (binary_expression "iVar1 == *(int *)(iVar2 + 0x84)" identifier == (pointer_expression "*(int *)(iVar2 + 0x84)" * (cast_expression "(int *)(iVar2 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x84)" ( (binary_expression "iVar2 + 0x84" identifier + number_literal) ))))) )) (compound_statement "{\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }" { (expression_statement "iVar1 = *(int *)(iVar2 + 0x94);" (assignment_expression "iVar1 = *(int *)(iVar2 + 0x94)" identifier = (pointer_expression "*(int *)(iVar2 + 0x94)" * (cast_expression "(int *)(iVar2 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x94)" ( (binary_expression "iVar2 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;" (assignment_expression "uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4" identifier = (binary_expression "(uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4" (call_expression "(uint)(param_2[2] - *(int *)(iVar2 + 0x88))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2[2] - *(int *)(iVar2 + 0x88))" ( (binary_expression "param_2[2] - *(int *)(iVar2 + 0x88)" (subscript_expression "param_2[2]" identifier [ number_literal ]) - (pointer_expression "*(int *)(iVar2 + 0x88)" * (cast_expression "(int *)(iVar2 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x88)" ( (binary_expression "iVar2 + 0x88" identifier + number_literal) ))))) ))) >> number_literal)) ;) (if_statement "if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }" if (parenthesized_expression "((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4)" ( (binary_expression "(uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4" (call_expression "(uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555)" ( (binary_expression "(*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555" (parenthesized_expression "(*(int *)(iVar2 + 0x98) - iVar1 >> 2)" ( (binary_expression "*(int *)(iVar2 + 0x98) - iVar1 >> 2" (binary_expression "*(int *)(iVar2 + 0x98) - iVar1" (pointer_expression "*(int *)(iVar2 + 0x98)" * (cast_expression "(int *)(iVar2 + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x98)" ( (binary_expression "iVar2 + 0x98" identifier + number_literal) )))) - identifier) >> number_literal) )) * number_literal) ))) <= identifier) )) (compound_statement "{\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }" { (expression_statement "FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);" (call_expression "FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1)" identifier (argument_list "("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1)" ( (string_literal ""../../gold/powerpc.cc"" " string_content ") , number_literal , (string_literal ""get_opd_ent"" " string_content ") , identifier ))) ;) })) (expression_statement "piVar3 = (int *)(iVar1 + uVar4 * 0xc);" (assignment_expression "piVar3 = (int *)(iVar1 + uVar4 * 0xc)" identifier = (cast_expression "(int *)(iVar1 + uVar4 * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + uVar4 * 0xc)" ( (binary_expression "iVar1 + uVar4 * 0xc" identifier + (binary_expression "uVar4 * 0xc" identifier * number_literal)) )))) ;) (if_statement "if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }" if (parenthesized_expression "(*piVar3 == 0)" ( (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" * identifier) == number_literal) )) (compound_statement "{\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }" { (expression_statement "FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);" (call_expression "FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3)" identifier (argument_list "("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3)" ( (string_literal ""../../gold/powerpc.cc"" " string_content ") , number_literal , (string_literal ""get_opd_ent"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar1 = piVar3[2];" (assignment_expression "iVar1 = piVar3[2]" identifier = (subscript_expression "piVar3[2]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = piVar3[1];" (assignment_expression "iVar2 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;) (expression_statement "param_2[1] = *piVar3;" (assignment_expression "param_2[1] = *piVar3" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "param_2[2] = iVar2;" (assignment_expression "param_2[2] = iVar2" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[3] = iVar1;" (assignment_expression "param_2[3] = iVar1" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) })))) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) >> LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) >> LIT) )) * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (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 = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) >> LIT) )) * LIT) ))) <= IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })))) })) (return_statement return ;) })))
(function_definition "void FUN_00058000(undefined4 param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  \n  iVar1 = param_2[1];\n  if (iVar1 != 0) {\n    iVar2 = *param_2;\n    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00058000(undefined4 param_1,int *param_2)" (identifier "FUN_00058000") (parameter_list "(undefined4 param_1,int *param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  \n  iVar1 = param_2[1];\n  if (iVar1 != 0) {\n    iVar2 = *param_2;\n    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (expression_statement "iVar1 = param_2[1];" (assignment_expression "iVar1 = param_2[1]" (identifier "iVar1") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar1 != 0) {\n    iVar2 = *param_2;\n    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }\n  }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar2 = *param_2;\n    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }\n  }" ({ "{") (expression_statement "iVar2 = *param_2;" (assignment_expression "iVar2 = *param_2" (identifier "iVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }\n    else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }" (if "if") (parenthesized_expression "((*(byte *)(iVar2 + 0x2c) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(iVar2 + 0x2c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x2c) & 1)" (( "(") (binary_expression "*(byte *)(iVar2 + 0x2c) & 1" (pointer_expression "*(byte *)(iVar2 + 0x2c)" (* "*") (cast_expression "(byte *)(iVar2 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x2c)" (( "(") (binary_expression "iVar2 + 0x2c" (identifier "iVar2") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }\n    }" ({ "{") (if_statement "if (iVar1 == *(int *)(iVar2 + 0x140)) {\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }" (if "if") (parenthesized_expression "(iVar1 == *(int *)(iVar2 + 0x140))" (( "(") (binary_expression "iVar1 == *(int *)(iVar2 + 0x140)" (identifier "iVar1") (== "==") (pointer_expression "*(int *)(iVar2 + 0x140)" (* "*") (cast_expression "(int *)(iVar2 + 0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x140)" (( "(") (binary_expression "iVar2 + 0x140" (identifier "iVar2") (+ "+") (number_literal "0x140")) () ")"))))) () ")")) (compound_statement "{\n        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;\n        if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }\n        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));\n        if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }\n        iVar1 = piVar3[3];\n        iVar2 = piVar3[2];\n        param_2[1] = *piVar3;\n        param_2[2] = iVar2;\n        param_2[3] = iVar1;\n      }" ({ "{") (expression_statement "uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;" (assignment_expression "uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4" (identifier "uVar4") (= "=") (binary_expression "*(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4" (binary_expression "*(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168)" (pointer_expression "*(int *)(iVar2 + 0x16c)" (* "*") (cast_expression "(int *)(iVar2 + 0x16c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x16c)" (( "(") (binary_expression "iVar2 + 0x16c" (identifier "iVar2") (+ "+") (number_literal "0x16c")) () ")")))) (- "-") (pointer_expression "*(int *)(iVar2 + 0x168)" (* "*") (cast_expression "(int *)(iVar2 + 0x168)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x168)" (( "(") (binary_expression "iVar2 + 0x168" (identifier "iVar2") (+ "+") (number_literal "0x168")) () ")"))))) (>> ">>") (number_literal "4"))) (; ";")) (if_statement "if (uVar4 <= (uint)param_2[2] >> 4) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }" (if "if") (parenthesized_expression "(uVar4 <= (uint)param_2[2] >> 4)" (( "(") (binary_expression "uVar4 <= (uint)param_2[2] >> 4" (identifier "uVar4") (<= "<=") (binary_expression "(uint)param_2[2] >> 4" (cast_expression "(uint)param_2[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (>> ">>") (number_literal "4"))) () ")")) (compound_statement "{\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);\n        }" ({ "{") (expression_statement "FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);" (call_expression "FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4)" (identifier "FUN_000da200") (argument_list "("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4)" (( "(") (string_literal ""../../gold/powerpc.cc"" (" """) (string_content "../../gold/powerpc.cc") (" """)) (, ",") (number_literal "0xc4") (, ",") (string_literal ""get_opd_ent"" (" """) (string_content "get_opd_ent") (" """)) (, ",") (identifier "uVar4") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));" (assignment_expression "piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168))" (identifier "piVar3") (= "=") (cast_expression "(int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168))" (( "(") (binary_expression "((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168)" (binary_expression "((uint)param_2[2] >> 4) * 0x10" (parenthesized_expression "((uint)param_2[2] >> 4)" (( "(") (binary_expression "(uint)param_2[2] >> 4" (cast_expression "(uint)param_2[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (>> ">>") (number_literal "4")) () ")")) (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*(int *)(iVar2 + 0x168)" (* "*") (cast_expression "(int *)(iVar2 + 0x168)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x168)" (( "(") (binary_expression "iVar2 + 0x168" (identifier "iVar2") (+ "+") (number_literal "0x168")) () ")"))))) () ")")))) (; ";")) (if_statement "if (*piVar3 == 0) {\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }" (if "if") (parenthesized_expression "(*piVar3 == 0)" (( "(") (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);\n        }" ({ "{") (expression_statement "FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);" (call_expression "FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2)" (identifier "FUN_000da200") (argument_list "("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2)" (( "(") (string_literal ""../../gold/powerpc.cc"" (" """) (string_content "../../gold/powerpc.cc") (" """)) (, ",") (number_literal "0xc5") (, ",") (string_literal ""get_opd_ent"" (" """) (string_content "get_opd_ent") (" """)) (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = piVar3[3];" (assignment_expression "iVar1 = piVar3[3]" (identifier "iVar1") (= "=") (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "iVar2 = piVar3[2];" (assignment_expression "iVar2 = piVar3[2]" (identifier "iVar2") (= "=") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "param_2[1] = *piVar3;" (assignment_expression "param_2[1] = *piVar3" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "param_2[2] = iVar2;" (assignment_expression "param_2[2] = iVar2" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "param_2[3] = iVar1;" (assignment_expression "param_2[3] = iVar1" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (} "}")) (else_clause "else if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }" (else "else") (if_statement "if (iVar1 == *(int *)(iVar2 + 0x84)) {\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }" (if "if") (parenthesized_expression "(iVar1 == *(int *)(iVar2 + 0x84))" (( "(") (binary_expression "iVar1 == *(int *)(iVar2 + 0x84)" (identifier "iVar1") (== "==") (pointer_expression "*(int *)(iVar2 + 0x84)" (* "*") (cast_expression "(int *)(iVar2 + 0x84)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x84)" (( "(") (binary_expression "iVar2 + 0x84" (identifier "iVar2") (+ "+") (number_literal "0x84")) () ")"))))) () ")")) (compound_statement "{\n      iVar1 = *(int *)(iVar2 + 0x94);\n      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;\n      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }\n      piVar3 = (int *)(iVar1 + uVar4 * 0xc);\n      if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }\n      iVar1 = piVar3[2];\n      iVar2 = piVar3[1];\n      param_2[1] = *piVar3;\n      param_2[2] = iVar2;\n      param_2[3] = iVar1;\n    }" ({ "{") (expression_statement "iVar1 = *(int *)(iVar2 + 0x94);" (assignment_expression "iVar1 = *(int *)(iVar2 + 0x94)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(iVar2 + 0x94)" (* "*") (cast_expression "(int *)(iVar2 + 0x94)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x94)" (( "(") (binary_expression "iVar2 + 0x94" (identifier "iVar2") (+ "+") (number_literal "0x94")) () ")"))))) (; ";")) (expression_statement "uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;" (assignment_expression "uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4" (identifier "uVar4") (= "=") (binary_expression "(uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4" (call_expression "(uint)(param_2[2] - *(int *)(iVar2 + 0x88))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2[2] - *(int *)(iVar2 + 0x88))" (( "(") (binary_expression "param_2[2] - *(int *)(iVar2 + 0x88)" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (- "-") (pointer_expression "*(int *)(iVar2 + 0x88)" (* "*") (cast_expression "(int *)(iVar2 + 0x88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x88)" (( "(") (binary_expression "iVar2 + 0x88" (identifier "iVar2") (+ "+") (number_literal "0x88")) () ")"))))) () ")"))) (>> ">>") (number_literal "4"))) (; ";")) (if_statement "if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }" (if "if") (parenthesized_expression "((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4)" (( "(") (binary_expression "(uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4" (call_expression "(uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555)" (( "(") (binary_expression "(*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555" (parenthesized_expression "(*(int *)(iVar2 + 0x98) - iVar1 >> 2)" (( "(") (binary_expression "*(int *)(iVar2 + 0x98) - iVar1 >> 2" (binary_expression "*(int *)(iVar2 + 0x98) - iVar1" (pointer_expression "*(int *)(iVar2 + 0x98)" (* "*") (cast_expression "(int *)(iVar2 + 0x98)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x98)" (( "(") (binary_expression "iVar2 + 0x98" (identifier "iVar2") (+ "+") (number_literal "0x98")) () ")")))) (- "-") (identifier "iVar1")) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "-0x55555555")) () ")"))) (<= "<=") (identifier "uVar4")) () ")")) (compound_statement "{\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);\n      }" ({ "{") (expression_statement "FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);" (call_expression "FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1)" (identifier "FUN_000da200") (argument_list "("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1)" (( "(") (string_literal ""../../gold/powerpc.cc"" (" """) (string_content "../../gold/powerpc.cc") (" """)) (, ",") (number_literal "0x20b") (, ",") (string_literal ""get_opd_ent"" (" """) (string_content "get_opd_ent") (" """)) (, ",") (identifier "iVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar3 = (int *)(iVar1 + uVar4 * 0xc);" (assignment_expression "piVar3 = (int *)(iVar1 + uVar4 * 0xc)" (identifier "piVar3") (= "=") (cast_expression "(int *)(iVar1 + uVar4 * 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + uVar4 * 0xc)" (( "(") (binary_expression "iVar1 + uVar4 * 0xc" (identifier "iVar1") (+ "+") (binary_expression "uVar4 * 0xc" (identifier "uVar4") (* "*") (number_literal "0xc"))) () ")")))) (; ";")) (if_statement "if (*piVar3 == 0) {\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }" (if "if") (parenthesized_expression "(*piVar3 == 0)" (( "(") (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);\n      }" ({ "{") (expression_statement "FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);" (call_expression "FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3)" (identifier "FUN_000da200") (argument_list "("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3)" (( "(") (string_literal ""../../gold/powerpc.cc"" (" """) (string_content "../../gold/powerpc.cc") (" """)) (, ",") (number_literal "0x20c") (, ",") (string_literal ""get_opd_ent"" (" """) (string_content "get_opd_ent") (" """)) (, ",") (identifier "piVar3") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = piVar3[2];" (assignment_expression "iVar1 = piVar3[2]" (identifier "iVar1") (= "=") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar2 = piVar3[1];" (assignment_expression "iVar2 = piVar3[1]" (identifier "iVar2") (= "=") (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_2[1] = *piVar3;" (assignment_expression "param_2[1] = *piVar3" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "param_2[2] = iVar2;" (assignment_expression "param_2[2] = iVar2" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "param_2[3] = iVar1;" (assignment_expression "param_2[3] = iVar1" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar1")) (; ";")) (} "}"))))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void do_function_location(Target_powerpc<64,_true> * this,
   Symbol_location * loc) */

void __thiscall
anon_unknown.dwarf_2af53c::Target_powerpc<64,_true>::do_function_location
          (Target_powerpc<64,_true> *this,Symbol_location *loc)

{
  Object *pOVar1;
  int var_2;
  type_1 uVar3;
  type_1 *puVar4;
  type_1 var_1;
  
  var_1 = loc->shndx;
  if (var_1 != 0) {
    pOVar1 = loc->object;
    if ((pOVar1->field_0x2c & 1) == 0) {
      if (var_1 == pOVar1[5].shnum_) {
        var_2 = *(int *)((int)&pOVar1[6].name_.field_2 + 0xc);
        var_1 = (type_1)loc->offset >> 4;
        if ((type_1)((int)pOVar1[6].input_file_ - var_2 >> 4) <= var_1) {
                    /* WARNING: Subroutine does not return */
          gold::var_3("../../gold/powerpc.cc",0xc4,"get_opd_ent");
        }
        puVar4 = (type_1 *)(var_1 * 0x10 + var_2);
        if (*puVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          gold::var_3("../../gold/powerpc.cc",0xc5,"get_opd_ent");
        }
        var_1 = puVar4[3];
        uVar3 = puVar4[2];
        loc->shndx = *puVar4;
        *(type_1 *)&loc->offset = uVar3;
        *(type_1 *)((int)&loc->offset + 4) = var_1;
      }
    }
    else if (var_1 == *(type_1 *)((int)&pOVar1[2].name_.field_2 + 8)) {
      var_2 = *(int *)((int)&pOVar1[2].offset_ + 4);
      var_1 = (type_1)((int)loc->offset - *(int *)((int)&pOVar1[2].name_.field_2 + 0xc)) >> 4;
      if ((type_1)(((int)(pOVar1[2].shnum_ - var_2) >> 2) * -0x55555555) <= var_1) {
                    /* WARNING: Subroutine does not return */
        gold::var_3("../../gold/powerpc.cc",0x20b,"get_opd_ent");
      }
      puVar4 = (type_1 *)(var_2 + var_1 * 0xc);
      if (*puVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        gold::var_3("../../gold/powerpc.cc",0x20c,"get_opd_ent");
      }
      var_1 = puVar4[2];
      uVar3 = puVar4[1];
      loc->shndx = *puVar4;
      *(type_1 *)&loc->offset = uVar3;
      *(type_1 *)((int)&loc->offset + 4) = var_1;
    }
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)) right: (number_literal))) right: (number_literal)))) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))))))) (return_statement))))

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void MASKED(undefined4 param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  
  iVar1 = param_2[1];
  if (iVar1 != 0) {
    iVar2 = *param_2;
    if ((*(byte *)(iVar2 + 0x2c) & 1) == 0) {
      if (iVar1 == *(int *)(iVar2 + 0x140)) {
        uVar4 = *(int *)(iVar2 + 0x16c) - *(int *)(iVar2 + 0x168) >> 4;
        if (uVar4 <= (uint)param_2[2] >> 4) {
                    /* WARNING: Subroutine does not return */
          FUN_000da200("../../gold/powerpc.cc",0xc4,"get_opd_ent",uVar4);
        }
        piVar3 = (int *)(((uint)param_2[2] >> 4) * 0x10 + *(int *)(iVar2 + 0x168));
        if (*piVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          FUN_000da200("../../gold/powerpc.cc",0xc5,"get_opd_ent",param_2);
        }
        iVar1 = piVar3[3];
        iVar2 = piVar3[2];
        param_2[1] = *piVar3;
        param_2[2] = iVar2;
        param_2[3] = iVar1;
      }
    }
    else if (iVar1 == *(int *)(iVar2 + 0x84)) {
      iVar1 = *(int *)(iVar2 + 0x94);
      uVar4 = (uint)(param_2[2] - *(int *)(iVar2 + 0x88)) >> 4;
      if ((uint)((*(int *)(iVar2 + 0x98) - iVar1 >> 2) * -0x55555555) <= uVar4) {
                    /* WARNING: Subroutine does not return */
        FUN_000da200("../../gold/powerpc.cc",0x20b,"get_opd_ent",iVar1);
      }
      piVar3 = (int *)(iVar1 + uVar4 * 0xc);
      if (*piVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_000da200("../../gold/powerpc.cc",0x20c,"get_opd_ent",piVar3);
      }
      iVar1 = piVar3[2];
      iVar2 = piVar3[1];
      param_2[1] = *piVar3;
      param_2[2] = iVar2;
      param_2[3] = iVar1;
    }
  }
  return;
}

