
/* DWARF original prototype: bool operator()(Weak_alias_sorter<32> * this, Sized_symbol<32> * s1,
   Sized_symbol<32> * s2) */

bool __thiscall
gold::Weak_alias_sorter<32>::operator()
          (Weak_alias_sorter<32> *this,Sized_symbol<32> *s1,Sized_symbol<32> *s2)

{
  uint uVar1;
  uint uVar2;
  char *pcVar3;
  _Alloc_hider _Var4;
  int iVar5;
  size_t sVar6;
  byte bVar7;
  char *pcVar8;
  size_type __n;
  byte bVar9;
  bool bVar10;
  ulong uVar11;
  _Alloc_hider _Var12;
  bool bVar13;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_78;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_58;
  
  if (((s1->super_Symbol).field_0x3a & 7) == 0) {
    uVar1 = (s1->super_Symbol).u2_.shndx;
    if (((s1->super_Symbol).field_0x3b & 0x20) == 0) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/symtab.cc",0x6af,"operator()");
    }
    if (((s2->super_Symbol).field_0x3a & 7) == 0) {
      uVar2 = (s2->super_Symbol).u2_.shndx;
      bVar9 = (byte)(s2->super_Symbol).field_0x3b >> 5;
      bVar10 = (bool)(bVar9 & 1);
      if ((bVar9 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/symtab.cc",0x6b1,"operator()");
      }
      if (uVar2 == uVar1) {
        bVar13 = s1->value_ < s2->value_;
        if (s1->value_ == s2->value_) {
          bVar9 = (byte)(s1->super_Symbol).field_0x38 >> 4;
          bVar7 = (byte)(s2->super_Symbol).field_0x38 >> 4;
          if (bVar9 != bVar7) {
            if (bVar9 == 2) {
              return bVar10;
            }
            if (bVar7 == 2) {
              return false;
            }
          }
          pcVar3 = (s2->super_Symbol).name_;
          pcVar8 = (char *)0xffffffffffffffff;
          local_58._M_dataplus._M_p = (pointer)&local_58.field_2;
          if (pcVar3 != (char *)0x0) {
            sVar6 = strlen(pcVar3);
            pcVar8 = pcVar3 + sVar6;
          }
          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
          _M_construct<char_const*>(&local_58,pcVar3,pcVar8);
          pcVar3 = (s1->super_Symbol).name_;
          local_78._M_dataplus._M_p = (pointer)&local_78.field_2;
          pcVar8 = (char *)0xffffffffffffffff;
          if (pcVar3 != (char *)0x0) {
            sVar6 = strlen(pcVar3);
            pcVar8 = pcVar3 + sVar6;
          }
                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */
          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
          _M_construct<char_const*>(&local_78,pcVar3,pcVar8);
          _Var12._M_p = local_58._M_dataplus._M_p;
          _Var4._M_p = local_78._M_dataplus._M_p;
          __n = local_58._M_string_length;
          if (local_78._M_string_length <= local_58._M_string_length) {
            __n = local_78._M_string_length;
          }
          if ((__n == 0) ||
             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0))
          {
            uVar11 = local_78._M_string_length - local_58._M_string_length;
            if ((long)uVar11 < 0x80000000) {
              bVar13 = bVar10;
              if (-0x80000001 < (long)uVar11) {
                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);
              }
            }
            else {
              bVar13 = false;
            }
          }
          else {
            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);
          }
          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
               *)_Var4._M_p != &local_78.field_2) {
            operator_delete(_Var4._M_p);
            _Var12._M_p = local_58._M_dataplus._M_p;
          }
          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
               *)_Var12._M_p != &local_58.field_2) {
            operator_delete(_Var12._M_p);
          }
        }
      }
      else {
        bVar13 = uVar1 < uVar2;
      }
      return bVar13;
    }
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/symtab.h",0xaa,"shndx");
}



ulong FUN_002859a0(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)

{
  char *pcVar1;
  undefined1 *puVar2;
  uint uVar3;
  size_t sVar4;
  char *pcVar5;
  ulong __n;
  byte bVar6;
  ulong uVar7;
  undefined1 *puVar8;
  undefined1 *local_78;
  ulong local_70;
  undefined1 local_68 [16];
  undefined1 *local_58;
  ulong local_50;
  undefined1 local_48 [24];
  
  if ((*(byte *)((long)param_2 + 0x3a) & 7) == 0) {
    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");
    }
    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {
      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;
      uVar7 = (ulong)(bVar6 & 1);
      if ((bVar6 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");
      }
      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {
        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));
      }
      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {
        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));
      }
      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {
        if (*(byte *)(param_2 + 7) >> 4 == 2) {
          return uVar7;
        }
        if (*(byte *)(param_3 + 7) >> 4 == 2) {
          return 0;
        }
      }
      pcVar1 = (char *)*param_3;
      pcVar5 = (char *)0xffffffffffffffff;
      local_58 = local_48;
      if (pcVar1 != (char *)0x0) {
        sVar4 = strlen(pcVar1);
        pcVar5 = pcVar1 + sVar4;
      }
      FUN_001665c0(&local_58,pcVar1,pcVar5);
      pcVar1 = (char *)*param_2;
      local_78 = local_68;
      pcVar5 = (char *)0xffffffffffffffff;
      if (pcVar1 != (char *)0x0) {
        sVar4 = strlen(pcVar1);
        pcVar5 = pcVar1 + sVar4;
      }
                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */
      FUN_001665c0(&local_78,pcVar1,pcVar5);
      puVar8 = local_58;
      puVar2 = local_78;
      __n = local_50;
      if (local_70 <= local_50) {
        __n = local_70;
      }
      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {
        local_70 = local_70 - local_50;
        if ((long)local_70 < 0x80000000) {
          if (-0x80000001 < (long)local_70) {
            uVar7 = local_70 >> 0x1f & 1;
          }
        }
        else {
          uVar7 = 0;
        }
      }
      else {
        uVar7 = (ulong)(uVar3 >> 0x1f);
      }
      if (puVar2 != local_68) {
        FUN_002dac70(puVar2);
        puVar8 = local_58;
      }
      if (puVar8 != local_48) {
        FUN_002dac70(puVar8);
      }
      return uVar7;
    }
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/symtab.h",0xaa,"shndx");
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x58
TEST byte ptr [RSI + 0x3a],0x7
JNZ 0x00285b44
MOV RBP,RSI
MOV EAX,dword ptr [RSI + 0x18]
TEST byte ptr [RSI + 0x3b],0x20
JZ 0x00285b74
TEST byte ptr [RDX + 0x3a],0x7
JNZ 0x00285b44
MOVZX EBX,byte ptr [RDX + 0x3b]
MOV ECX,dword ptr [RDX + 0x18]
SHR BL,0x5
AND EBX,0x1
JZ 0x00285b5c
CMP ECX,EAX
JNZ 0x00285a08
MOV EAX,dword ptr [RDX + 0x40]
CMP dword ptr [RSI + 0x40],EAX
JZ 0x00285a10
SETC BL
ADD RSP,0x58
MOV EAX,EBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
SETA BL
JMP 0x002859f4
MOVZX EAX,byte ptr [RSI + 0x38]
MOVZX ECX,byte ptr [RDX + 0x38]
SHR AL,0x4
SHR CL,0x4
CMP AL,CL
JZ 0x00285a2f
CMP AL,0x2
JZ 0x002859f4
CMP CL,0x2
JZ 0x00285b30
MOV R13,qword ptr [RDX]
LEA R12,[RSP + 0x30]
MOV RDX,-0x1
LEA RAX,[R12 + 0x10]
MOV qword ptr [RSP + 0x30],RAX
TEST R13,R13
JZ 0x00285a5a
MOV RDI,R13
CALL 0x00147490
LEA RDX,[R13 + RAX*0x1]
MOV RSI,R13
MOV RDI,R12
LEA R13,[RSP + 0x10]
CALL 0x001665c0
MOV RBP,qword ptr [RBP]
LEA RAX,[R13 + 0x10]
MOV RDX,-0x1
MOV qword ptr [RSP + 0x10],RAX
TEST RBP,RBP
JZ 0x00285a90
MOV RDI,RBP
CALL 0x00147490
LEA RDX,[RBP + RAX*0x1]
MOV RSI,RBP
MOV RDI,R13
CALL 0x001665c0
MOV RBP,qword ptr [RSP + 0x18]
MOV R15,qword ptr [RSP + 0x38]
MOV R14,qword ptr [RSP + 0x30]
MOV RCX,qword ptr [RSP + 0x10]
CMP RBP,R15
MOV RDX,R15
CMOVBE RDX,RBP
TEST RDX,RDX
JZ 0x00285ad7
MOV RDI,RCX
MOV RSI,R14
MOV qword ptr [RSP + 0x8],RCX
CALL 0x00147840
MOV RCX,qword ptr [RSP + 0x8]
TEST EAX,EAX
JNZ 0x00285b28
SUB RBP,R15
CMP RBP,0x7fffffff
JG 0x00285b40
CMP RBP,-0x80000000
JL 0x00285af1
SHR EBP,0x1f
MOV EBX,EBP
ADD R13,0x10
CMP RCX,R13
JZ 0x00285b07
MOV RDI,RCX
CALL 0x002dac70
MOV R14,qword ptr [RSP + 0x30]
ADD R12,0x10
CMP R14,R12
JZ 0x002859f4
MOV RDI,R14
CALL 0x002dac70
JMP 0x002859f4
SHR EAX,0x1f
MOV EBX,EAX
JMP 0x00285af1
XOR EBX,EBX
JMP 0x002859f4
XOR EBX,EBX
JMP 0x00285af1
LEA RDX,[0x3874e7]
MOV ESI,0xaa
LEA RDI,[0x3726ed]
CALL 0x0017c650
LEA RDX,[0x386d40]
MOV ESI,0x6b1
LEA RDI,[0x386751]
CALL 0x0017c650
LEA RDX,[0x386d40]
MOV ESI,0x6af
LEA RDI,[0x386751]
CALL 0x0017c650
(translation_unit "ulong FUN_002859a0(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)\n\n{\n  char *pcVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *pcVar5;\n  ulong __n;\n  byte bVar6;\n  ulong uVar7;\n  undefined1 *puVar8;\n  undefined1 *local_78;\n  ulong local_70;\n  undefined1 local_68 [16];\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)((long)param_2 + 0x3a) & 7) == 0) {\n    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/symtab.h",0xaa,"shndx");\n}\n\n" (function_definition "ulong FUN_002859a0(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)\n\n{\n  char *pcVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *pcVar5;\n  ulong __n;\n  byte bVar6;\n  ulong uVar7;\n  undefined1 *puVar8;\n  undefined1 *local_78;\n  ulong local_70;\n  undefined1 local_68 [16];\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)((long)param_2 + 0x3a) & 7) == 0) {\n    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/symtab.h",0xaa,"shndx");\n}" type_identifier (function_declarator "FUN_002859a0(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)" identifier (parameter_list "(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *pcVar5;\n  ulong __n;\n  byte bVar6;\n  ulong uVar7;\n  undefined1 *puVar8;\n  undefined1 *local_78;\n  ulong local_70;\n  undefined1 local_68 [16];\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)((long)param_2 + 0x3a) & 7) == 0) {\n    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/symtab.h",0xaa,"shndx");\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "ulong __n;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined1 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "ulong local_70;" type_identifier identifier ;) (declaration "undefined1 local_68 [16];" type_identifier (array_declarator "local_68 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "undefined1 local_48 [24];" type_identifier (array_declarator "local_48 [24]" identifier [ number_literal ]) ;) (if_statement "if ((*(byte *)((long)param_2 + 0x3a) & 7) == 0) {\n    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }\n  }" if (parenthesized_expression "((*(byte *)((long)param_2 + 0x3a) & 7) == 0)" ( (binary_expression "(*(byte *)((long)param_2 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)((long)param_2 + 0x3a) & 7)" ( (binary_expression "*(byte *)((long)param_2 + 0x3a) & 7" (pointer_expression "*(byte *)((long)param_2 + 0x3a)" * (cast_expression "(byte *)((long)param_2 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x3a)" ( (binary_expression "(long)param_2 + 0x3a" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }\n  }" { (if_statement "if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }" if (parenthesized_expression "((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)param_2 + 0x3b) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)param_2 + 0x3b) & 0x20)" ( (binary_expression "*(byte *)((long)param_2 + 0x3b) & 0x20" (pointer_expression "*(byte *)((long)param_2 + 0x3b)" * (cast_expression "(byte *)((long)param_2 + 0x3b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x3b)" ( (binary_expression "(long)param_2 + 0x3b" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }" { comment (expression_statement "FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");" (call_expression "FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()")" identifier (argument_list "("../../gold/symtab.cc",0x6af,"operator()")" ( (string_literal ""../../gold/symtab.cc"" " string_content ") , number_literal , (string_literal ""operator()"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }" if (parenthesized_expression "((*(byte *)((long)param_3 + 0x3a) & 7) == 0)" ( (binary_expression "(*(byte *)((long)param_3 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)((long)param_3 + 0x3a) & 7)" ( (binary_expression "*(byte *)((long)param_3 + 0x3a) & 7" (pointer_expression "*(byte *)((long)param_3 + 0x3a)" * (cast_expression "(byte *)((long)param_3 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + 0x3a)" ( (binary_expression "(long)param_3 + 0x3a" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }" { (expression_statement "bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;" (assignment_expression "bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5" identifier = (binary_expression "*(byte *)((long)param_3 + 0x3b) >> 5" (pointer_expression "*(byte *)((long)param_3 + 0x3b)" * (cast_expression "(byte *)((long)param_3 + 0x3b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + 0x3b)" ( (binary_expression "(long)param_3 + 0x3b" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal)) ;) (expression_statement "uVar7 = (ulong)(bVar6 & 1);" (assignment_expression "uVar7 = (ulong)(bVar6 & 1)" identifier = (call_expression "(ulong)(bVar6 & 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar6 & 1)" ( (binary_expression "bVar6 & 1" identifier & number_literal) )))) ;) (if_statement "if ((bVar6 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }" if (parenthesized_expression "((bVar6 & 1) == 0)" ( (binary_expression "(bVar6 & 1) == 0" (parenthesized_expression "(bVar6 & 1)" ( (binary_expression "bVar6 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }" { comment (expression_statement "FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");" (call_expression "FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()")" identifier (argument_list "("../../gold/symtab.cc",0x6b1,"operator()")" ( (string_literal ""../../gold/symtab.cc"" " string_content ") , number_literal , (string_literal ""operator()"" " string_content ") ))) ;) })) (if_statement "if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }" if (parenthesized_expression "(*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3))" ( (binary_expression "*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)" (pointer_expression "*(uint *)(param_3 + 3)" * (cast_expression "(uint *)(param_3 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 3)" ( (binary_expression "param_3 + 3" identifier + number_literal) )))) != (pointer_expression "*(uint *)(param_2 + 3)" * (cast_expression "(uint *)(param_2 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) ))))) )) (compound_statement "{\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }" { (return_statement "return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));" return (call_expression "(ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3))" ( (binary_expression "*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3)" (pointer_expression "*(uint *)(param_2 + 3)" * (cast_expression "(uint *)(param_2 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_3 + 3)" * (cast_expression "(uint *)(param_3 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 3)" ( (binary_expression "param_3 + 3" identifier + number_literal) ))))) ))) ;) })) (if_statement "if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }" if (parenthesized_expression "(*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8))" ( (binary_expression "*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)" (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) != (pointer_expression "*(uint *)(param_3 + 8)" * (cast_expression "(uint *)(param_3 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }" { (return_statement "return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));" return (call_expression "(ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8))" ( (binary_expression "*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8)" (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_3 + 8)" * (cast_expression "(uint *)(param_3 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) ))))) ))) ;) })) (if_statement "if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }" if (parenthesized_expression "(*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4)" ( (binary_expression "*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4" (binary_expression "*(byte *)(param_2 + 7) >> 4" (pointer_expression "*(byte *)(param_2 + 7)" * (cast_expression "(byte *)(param_2 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) >> number_literal) != (binary_expression "*(byte *)(param_3 + 7) >> 4" (pointer_expression "*(byte *)(param_3 + 7)" * (cast_expression "(byte *)(param_3 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 7)" ( (binary_expression "param_3 + 7" identifier + number_literal) )))) >> number_literal)) )) (compound_statement "{\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }" { (if_statement "if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }" if (parenthesized_expression "(*(byte *)(param_2 + 7) >> 4 == 2)" ( (binary_expression "*(byte *)(param_2 + 7) >> 4 == 2" (binary_expression "*(byte *)(param_2 + 7) >> 4" (pointer_expression "*(byte *)(param_2 + 7)" * (cast_expression "(byte *)(param_2 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) >> number_literal) == number_literal) )) (compound_statement "{\n          return uVar7;\n        }" { (return_statement "return uVar7;" return identifier ;) })) (if_statement "if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }" if (parenthesized_expression "(*(byte *)(param_3 + 7) >> 4 == 2)" ( (binary_expression "*(byte *)(param_3 + 7) >> 4 == 2" (binary_expression "*(byte *)(param_3 + 7) >> 4" (pointer_expression "*(byte *)(param_3 + 7)" * (cast_expression "(byte *)(param_3 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 7)" ( (binary_expression "param_3 + 7" identifier + number_literal) )))) >> number_literal) == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "pcVar1 = (char *)*param_3;" (assignment_expression "pcVar1 = (char *)*param_3" identifier = (cast_expression "(char *)*param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (expression_statement "pcVar5 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar5 = (char *)0xffffffffffffffff" identifier = (cast_expression "(char *)0xffffffffffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (if_statement "if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }" if (parenthesized_expression "(pcVar1 != (char *)0x0)" ( (binary_expression "pcVar1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }" { (expression_statement "sVar4 = strlen(pcVar1);" (assignment_expression "sVar4 = strlen(pcVar1)" identifier = (call_expression "strlen(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier )))) ;) (expression_statement "pcVar5 = pcVar1 + sVar4;" (assignment_expression "pcVar5 = pcVar1 + sVar4" identifier = (binary_expression "pcVar1 + sVar4" identifier + identifier)) ;) })) (expression_statement "FUN_001665c0(&local_58,pcVar1,pcVar5);" (call_expression "FUN_001665c0(&local_58,pcVar1,pcVar5)" identifier (argument_list "(&local_58,pcVar1,pcVar5)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (expression_statement "pcVar1 = (char *)*param_2;" (assignment_expression "pcVar1 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "local_78 = local_68;" (assignment_expression "local_78 = local_68" identifier = identifier) ;) (expression_statement "pcVar5 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar5 = (char *)0xffffffffffffffff" identifier = (cast_expression "(char *)0xffffffffffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }" if (parenthesized_expression "(pcVar1 != (char *)0x0)" ( (binary_expression "pcVar1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }" { (expression_statement "sVar4 = strlen(pcVar1);" (assignment_expression "sVar4 = strlen(pcVar1)" identifier = (call_expression "strlen(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier )))) ;) (expression_statement "pcVar5 = pcVar1 + sVar4;" (assignment_expression "pcVar5 = pcVar1 + sVar4" identifier = (binary_expression "pcVar1 + sVar4" identifier + identifier)) ;) })) comment (expression_statement "FUN_001665c0(&local_78,pcVar1,pcVar5);" (call_expression "FUN_001665c0(&local_78,pcVar1,pcVar5)" identifier (argument_list "(&local_78,pcVar1,pcVar5)" ( (pointer_expression "&local_78" & identifier) , identifier , identifier ))) ;) (expression_statement "puVar8 = local_58;" (assignment_expression "puVar8 = local_58" identifier = identifier) ;) (expression_statement "puVar2 = local_78;" (assignment_expression "puVar2 = local_78" identifier = identifier) ;) (expression_statement "__n = local_50;" (assignment_expression "__n = local_50" identifier = identifier) ;) (if_statement "if (local_70 <= local_50) {\n        __n = local_70;\n      }" if (parenthesized_expression "(local_70 <= local_50)" ( (binary_expression "local_70 <= local_50" identifier <= identifier) )) (compound_statement "{\n        __n = local_70;\n      }" { (expression_statement "__n = local_70;" (assignment_expression "__n = local_70" identifier = identifier) ;) })) (if_statement "if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }" if (parenthesized_expression "((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0))" ( (binary_expression "(__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)" (parenthesized_expression "(__n == 0)" ( (binary_expression "__n == 0" identifier == number_literal) )) || (parenthesized_expression "(uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)" ( (comma_expression "uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0" (assignment_expression "uVar3 = memcmp(local_78,local_58,__n)" identifier = (call_expression "memcmp(local_78,local_58,__n)" identifier (argument_list "(local_78,local_58,__n)" ( identifier , identifier , identifier )))) , (binary_expression "uVar3 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }" { (expression_statement "local_70 = local_70 - local_50;" (assignment_expression "local_70 = local_70 - local_50" identifier = (binary_expression "local_70 - local_50" identifier - identifier)) ;) (if_statement "if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }" if (parenthesized_expression "((long)local_70 < 0x80000000)" ( (binary_expression "(long)local_70 < 0x80000000" (cast_expression "(long)local_70" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }" { (if_statement "if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }" if (parenthesized_expression "(-0x80000001 < (long)local_70)" ( (binary_expression "-0x80000001 < (long)local_70" number_literal < (cast_expression "(long)local_70" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar7 = local_70 >> 0x1f & 1;\n          }" { (expression_statement "uVar7 = local_70 >> 0x1f & 1;" (assignment_expression "uVar7 = local_70 >> 0x1f & 1" identifier = (binary_expression "local_70 >> 0x1f & 1" (binary_expression "local_70 >> 0x1f" identifier >> number_literal) & number_literal)) ;) })) }) (else_clause "else {\n          uVar7 = 0;\n        }" else (compound_statement "{\n          uVar7 = 0;\n        }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }" else (compound_statement "{\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }" { (expression_statement "uVar7 = (ulong)(uVar3 >> 0x1f);" (assignment_expression "uVar7 = (ulong)(uVar3 >> 0x1f)" identifier = (call_expression "(ulong)(uVar3 >> 0x1f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar3 >> 0x1f)" ( (binary_expression "uVar3 >> 0x1f" identifier >> number_literal) )))) ;) }))) (if_statement "if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }" if (parenthesized_expression "(puVar2 != local_68)" ( (binary_expression "puVar2 != local_68" identifier != identifier) )) (compound_statement "{\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }" { (expression_statement "FUN_002dac70(puVar2);" (call_expression "FUN_002dac70(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (expression_statement "puVar8 = local_58;" (assignment_expression "puVar8 = local_58" identifier = identifier) ;) })) (if_statement "if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }" if (parenthesized_expression "(puVar8 != local_48)" ( (binary_expression "puVar8 != local_48" identifier != identifier) )) (compound_statement "{\n        FUN_002dac70(puVar8);\n      }" { (expression_statement "FUN_002dac70(puVar8);" (call_expression "FUN_002dac70(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) ;) })) (return_statement "return uVar7;" return identifier ;) })) })) comment (expression_statement "FUN_0017c650("../../gold/symtab.h",0xaa,"shndx");" (call_expression "FUN_0017c650("../../gold/symtab.h",0xaa,"shndx")" identifier (argument_list "("../../gold/symtab.h",0xaa,"shndx")" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal , (string_literal ""shndx"" " string_content ") ))) ;) })))
(translation_unit "/* DWARF original prototype: bool operator()(Weak_alias_sorter<32> * this, Sized_symbol<32> * s1,\n   Sized_symbol<32> * s2) */\n\nbool __thiscall\ngold::Weak_alias_sorter<32>::operator()\n          (Weak_alias_sorter<32> *this,Sized_symbol<32> *s1,Sized_symbol<32> *s2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  char *pcVar3;\n  _Alloc_hider _Var4;\n  int iVar5;\n  size_t sVar6;\n  byte bVar7;\n  char *pcVar8;\n  size_type __n;\n  byte bVar9;\n  bool bVar10;\n  ulong uVar11;\n  _Alloc_hider _Var12;\n  bool bVar13;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_78;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_58;\n  \n  if (((s1->super_Symbol).field_0x3a & 7) == 0) {\n    uVar1 = (s1->super_Symbol).u2_.shndx;\n    if (((s1->super_Symbol).field_0x3b & 0x20) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if (((s2->super_Symbol).field_0x3a & 7) == 0) {\n      uVar2 = (s2->super_Symbol).u2_.shndx;\n      bVar9 = (byte)(s2->super_Symbol).field_0x3b >> 5;\n      bVar10 = (bool)(bVar9 & 1);\n      if ((bVar9 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (uVar2 == uVar1) {\n        bVar13 = s1->value_ < s2->value_;\n        if (s1->value_ == s2->value_) {\n          bVar9 = (byte)(s1->super_Symbol).field_0x38 >> 4;\n          bVar7 = (byte)(s2->super_Symbol).field_0x38 >> 4;\n          if (bVar9 != bVar7) {\n            if (bVar9 == 2) {\n              return bVar10;\n            }\n            if (bVar7 == 2) {\n              return false;\n            }\n          }\n          pcVar3 = (s2->super_Symbol).name_;\n          pcVar8 = (char *)0xffffffffffffffff;\n          local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_58,pcVar3,pcVar8);\n          pcVar3 = (s1->super_Symbol).name_;\n          local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n          pcVar8 = (char *)0xffffffffffffffff;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_78,pcVar3,pcVar8);\n          _Var12._M_p = local_58._M_dataplus._M_p;\n          _Var4._M_p = local_78._M_dataplus._M_p;\n          __n = local_58._M_string_length;\n          if (local_78._M_string_length <= local_58._M_string_length) {\n            __n = local_78._M_string_length;\n          }\n          if ((__n == 0) ||\n             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0))\n          {\n            uVar11 = local_78._M_string_length - local_58._M_string_length;\n            if ((long)uVar11 < 0x80000000) {\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }\n            else {\n              bVar13 = false;\n            }\n          }\n          else {\n            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2) {\n            operator_delete(_Var4._M_p);\n            _Var12._M_p = local_58._M_dataplus._M_p;\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2) {\n            operator_delete(_Var12._M_p);\n          }\n        }\n      }\n      else {\n        bVar13 = uVar1 < uVar2;\n      }\n      return bVar13;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/symtab.h",0xaa,"shndx");\n}\n\n" comment (function_definition "bool __thiscall\ngold::Weak_alias_sorter<32>::operator()\n          (Weak_alias_sorter<32> *this,Sized_symbol<32> *s1,Sized_symbol<32> *s2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  char *pcVar3;\n  _Alloc_hider _Var4;\n  int iVar5;\n  size_t sVar6;\n  byte bVar7;\n  char *pcVar8;\n  size_type __n;\n  byte bVar9;\n  bool bVar10;\n  ulong uVar11;\n  _Alloc_hider _Var12;\n  bool bVar13;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_78;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_58;\n  \n  if (((s1->super_Symbol).field_0x3a & 7) == 0) {\n    uVar1 = (s1->super_Symbol).u2_.shndx;\n    if (((s1->super_Symbol).field_0x3b & 0x20) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if (((s2->super_Symbol).field_0x3a & 7) == 0) {\n      uVar2 = (s2->super_Symbol).u2_.shndx;\n      bVar9 = (byte)(s2->super_Symbol).field_0x3b >> 5;\n      bVar10 = (bool)(bVar9 & 1);\n      if ((bVar9 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (uVar2 == uVar1) {\n        bVar13 = s1->value_ < s2->value_;\n        if (s1->value_ == s2->value_) {\n          bVar9 = (byte)(s1->super_Symbol).field_0x38 >> 4;\n          bVar7 = (byte)(s2->super_Symbol).field_0x38 >> 4;\n          if (bVar9 != bVar7) {\n            if (bVar9 == 2) {\n              return bVar10;\n            }\n            if (bVar7 == 2) {\n              return false;\n            }\n          }\n          pcVar3 = (s2->super_Symbol).name_;\n          pcVar8 = (char *)0xffffffffffffffff;\n          local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_58,pcVar3,pcVar8);\n          pcVar3 = (s1->super_Symbol).name_;\n          local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n          pcVar8 = (char *)0xffffffffffffffff;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_78,pcVar3,pcVar8);\n          _Var12._M_p = local_58._M_dataplus._M_p;\n          _Var4._M_p = local_78._M_dataplus._M_p;\n          __n = local_58._M_string_length;\n          if (local_78._M_string_length <= local_58._M_string_length) {\n            __n = local_78._M_string_length;\n          }\n          if ((__n == 0) ||\n             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0))\n          {\n            uVar11 = local_78._M_string_length - local_58._M_string_length;\n            if ((long)uVar11 < 0x80000000) {\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }\n            else {\n              bVar13 = false;\n            }\n          }\n          else {\n            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2) {\n            operator_delete(_Var4._M_p);\n            _Var12._M_p = local_58._M_dataplus._M_p;\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2) {\n            operator_delete(_Var12._M_p);\n          }\n        }\n      }\n      else {\n        bVar13 = uVar1 < uVar2;\n      }\n      return bVar13;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/symtab.h",0xaa,"shndx");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Weak_alias_sorter<32>::" identifier : : identifier < number_literal > : :) (function_declarator "operator()\n          (Weak_alias_sorter<32> *this,Sized_symbol<32> *s1,Sized_symbol<32> *s2)" (function_declarator "operator()" identifier (parameter_list "()" ( ))) (parameter_list "(Weak_alias_sorter<32> *this,Sized_symbol<32> *s1,Sized_symbol<32> *s2)" ( (parameter_declaration "Weak_alias_sorter<32> *this" type_identifier (ERROR "<32>" < number_literal >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Sized_symbol<32> *s1" type_identifier (ERROR "<32>" < number_literal >) (pointer_declarator "*s1" * identifier)) , (parameter_declaration "Sized_symbol<32> *s2" type_identifier (ERROR "<32>" < number_literal >) (pointer_declarator "*s2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  char *pcVar3;\n  _Alloc_hider _Var4;\n  int iVar5;\n  size_t sVar6;\n  byte bVar7;\n  char *pcVar8;\n  size_type __n;\n  byte bVar9;\n  bool bVar10;\n  ulong uVar11;\n  _Alloc_hider _Var12;\n  bool bVar13;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_78;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_58;\n  \n  if (((s1->super_Symbol).field_0x3a & 7) == 0) {\n    uVar1 = (s1->super_Symbol).u2_.shndx;\n    if (((s1->super_Symbol).field_0x3b & 0x20) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if (((s2->super_Symbol).field_0x3a & 7) == 0) {\n      uVar2 = (s2->super_Symbol).u2_.shndx;\n      bVar9 = (byte)(s2->super_Symbol).field_0x3b >> 5;\n      bVar10 = (bool)(bVar9 & 1);\n      if ((bVar9 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (uVar2 == uVar1) {\n        bVar13 = s1->value_ < s2->value_;\n        if (s1->value_ == s2->value_) {\n          bVar9 = (byte)(s1->super_Symbol).field_0x38 >> 4;\n          bVar7 = (byte)(s2->super_Symbol).field_0x38 >> 4;\n          if (bVar9 != bVar7) {\n            if (bVar9 == 2) {\n              return bVar10;\n            }\n            if (bVar7 == 2) {\n              return false;\n            }\n          }\n          pcVar3 = (s2->super_Symbol).name_;\n          pcVar8 = (char *)0xffffffffffffffff;\n          local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_58,pcVar3,pcVar8);\n          pcVar3 = (s1->super_Symbol).name_;\n          local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n          pcVar8 = (char *)0xffffffffffffffff;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_78,pcVar3,pcVar8);\n          _Var12._M_p = local_58._M_dataplus._M_p;\n          _Var4._M_p = local_78._M_dataplus._M_p;\n          __n = local_58._M_string_length;\n          if (local_78._M_string_length <= local_58._M_string_length) {\n            __n = local_78._M_string_length;\n          }\n          if ((__n == 0) ||\n             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0))\n          {\n            uVar11 = local_78._M_string_length - local_58._M_string_length;\n            if ((long)uVar11 < 0x80000000) {\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }\n            else {\n              bVar13 = false;\n            }\n          }\n          else {\n            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2) {\n            operator_delete(_Var4._M_p);\n            _Var12._M_p = local_58._M_dataplus._M_p;\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2) {\n            operator_delete(_Var12._M_p);\n          }\n        }\n      }\n      else {\n        bVar13 = uVar1 < uVar2;\n      }\n      return bVar13;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/symtab.h",0xaa,"shndx");\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "_Alloc_hider _Var4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "size_type __n;" type_identifier identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "_Alloc_hider _Var12;" type_identifier identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_> local_78;" (binary_expression "allocator<char>_> local_78" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) ;) (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_> local_58;" (binary_expression "allocator<char>_> local_58" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) ;) (if_statement "if (((s1->super_Symbol).field_0x3a & 7) == 0) {\n    uVar1 = (s1->super_Symbol).u2_.shndx;\n    if (((s1->super_Symbol).field_0x3b & 0x20) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if (((s2->super_Symbol).field_0x3a & 7) == 0) {\n      uVar2 = (s2->super_Symbol).u2_.shndx;\n      bVar9 = (byte)(s2->super_Symbol).field_0x3b >> 5;\n      bVar10 = (bool)(bVar9 & 1);\n      if ((bVar9 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (uVar2 == uVar1) {\n        bVar13 = s1->value_ < s2->value_;\n        if (s1->value_ == s2->value_) {\n          bVar9 = (byte)(s1->super_Symbol).field_0x38 >> 4;\n          bVar7 = (byte)(s2->super_Symbol).field_0x38 >> 4;\n          if (bVar9 != bVar7) {\n            if (bVar9 == 2) {\n              return bVar10;\n            }\n            if (bVar7 == 2) {\n              return false;\n            }\n          }\n          pcVar3 = (s2->super_Symbol).name_;\n          pcVar8 = (char *)0xffffffffffffffff;\n          local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_58,pcVar3,pcVar8);\n          pcVar3 = (s1->super_Symbol).name_;\n          local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n          pcVar8 = (char *)0xffffffffffffffff;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_78,pcVar3,pcVar8);\n          _Var12._M_p = local_58._M_dataplus._M_p;\n          _Var4._M_p = local_78._M_dataplus._M_p;\n          __n = local_58._M_string_length;\n          if (local_78._M_string_length <= local_58._M_string_length) {\n            __n = local_78._M_string_length;\n          }\n          if ((__n == 0) ||\n             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0))\n          {\n            uVar11 = local_78._M_string_length - local_58._M_string_length;\n            if ((long)uVar11 < 0x80000000) {\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }\n            else {\n              bVar13 = false;\n            }\n          }\n          else {\n            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2) {\n            operator_delete(_Var4._M_p);\n            _Var12._M_p = local_58._M_dataplus._M_p;\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2) {\n            operator_delete(_Var12._M_p);\n          }\n        }\n      }\n      else {\n        bVar13 = uVar1 < uVar2;\n      }\n      return bVar13;\n    }\n  }" if (parenthesized_expression "(((s1->super_Symbol).field_0x3a & 7) == 0)" ( (binary_expression "((s1->super_Symbol).field_0x3a & 7) == 0" (parenthesized_expression "((s1->super_Symbol).field_0x3a & 7)" ( (binary_expression "(s1->super_Symbol).field_0x3a & 7" (field_expression "(s1->super_Symbol).field_0x3a" (parenthesized_expression "(s1->super_Symbol)" ( (field_expression "s1->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar1 = (s1->super_Symbol).u2_.shndx;\n    if (((s1->super_Symbol).field_0x3b & 0x20) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if (((s2->super_Symbol).field_0x3a & 7) == 0) {\n      uVar2 = (s2->super_Symbol).u2_.shndx;\n      bVar9 = (byte)(s2->super_Symbol).field_0x3b >> 5;\n      bVar10 = (bool)(bVar9 & 1);\n      if ((bVar9 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (uVar2 == uVar1) {\n        bVar13 = s1->value_ < s2->value_;\n        if (s1->value_ == s2->value_) {\n          bVar9 = (byte)(s1->super_Symbol).field_0x38 >> 4;\n          bVar7 = (byte)(s2->super_Symbol).field_0x38 >> 4;\n          if (bVar9 != bVar7) {\n            if (bVar9 == 2) {\n              return bVar10;\n            }\n            if (bVar7 == 2) {\n              return false;\n            }\n          }\n          pcVar3 = (s2->super_Symbol).name_;\n          pcVar8 = (char *)0xffffffffffffffff;\n          local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_58,pcVar3,pcVar8);\n          pcVar3 = (s1->super_Symbol).name_;\n          local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n          pcVar8 = (char *)0xffffffffffffffff;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_78,pcVar3,pcVar8);\n          _Var12._M_p = local_58._M_dataplus._M_p;\n          _Var4._M_p = local_78._M_dataplus._M_p;\n          __n = local_58._M_string_length;\n          if (local_78._M_string_length <= local_58._M_string_length) {\n            __n = local_78._M_string_length;\n          }\n          if ((__n == 0) ||\n             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0))\n          {\n            uVar11 = local_78._M_string_length - local_58._M_string_length;\n            if ((long)uVar11 < 0x80000000) {\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }\n            else {\n              bVar13 = false;\n            }\n          }\n          else {\n            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2) {\n            operator_delete(_Var4._M_p);\n            _Var12._M_p = local_58._M_dataplus._M_p;\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2) {\n            operator_delete(_Var12._M_p);\n          }\n        }\n      }\n      else {\n        bVar13 = uVar1 < uVar2;\n      }\n      return bVar13;\n    }\n  }" { (expression_statement "uVar1 = (s1->super_Symbol).u2_.shndx;" (assignment_expression "uVar1 = (s1->super_Symbol).u2_.shndx" identifier = (field_expression "(s1->super_Symbol).u2_.shndx" (field_expression "(s1->super_Symbol).u2_" (parenthesized_expression "(s1->super_Symbol)" ( (field_expression "s1->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (((s1->super_Symbol).field_0x3b & 0x20) == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/symtab.cc",0x6af,"operator()");\n    }" if (parenthesized_expression "(((s1->super_Symbol).field_0x3b & 0x20) == 0)" ( (binary_expression "((s1->super_Symbol).field_0x3b & 0x20) == 0" (parenthesized_expression "((s1->super_Symbol).field_0x3b & 0x20)" ( (binary_expression "(s1->super_Symbol).field_0x3b & 0x20" (field_expression "(s1->super_Symbol).field_0x3b" (parenthesized_expression "(s1->super_Symbol)" ( (field_expression "s1->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/symtab.cc",0x6af,"operator()");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/symtab.cc",0x6af,"operator()");" (call_expression "do_gold_unreachable("../../gold/symtab.cc",0x6af,"operator()")" identifier (argument_list "("../../gold/symtab.cc",0x6af,"operator()")" ( (string_literal ""../../gold/symtab.cc"" " string_content ") , number_literal , (string_literal ""operator()"" " string_content ") ))) ;) })) (if_statement "if (((s2->super_Symbol).field_0x3a & 7) == 0) {\n      uVar2 = (s2->super_Symbol).u2_.shndx;\n      bVar9 = (byte)(s2->super_Symbol).field_0x3b >> 5;\n      bVar10 = (bool)(bVar9 & 1);\n      if ((bVar9 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (uVar2 == uVar1) {\n        bVar13 = s1->value_ < s2->value_;\n        if (s1->value_ == s2->value_) {\n          bVar9 = (byte)(s1->super_Symbol).field_0x38 >> 4;\n          bVar7 = (byte)(s2->super_Symbol).field_0x38 >> 4;\n          if (bVar9 != bVar7) {\n            if (bVar9 == 2) {\n              return bVar10;\n            }\n            if (bVar7 == 2) {\n              return false;\n            }\n          }\n          pcVar3 = (s2->super_Symbol).name_;\n          pcVar8 = (char *)0xffffffffffffffff;\n          local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_58,pcVar3,pcVar8);\n          pcVar3 = (s1->super_Symbol).name_;\n          local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n          pcVar8 = (char *)0xffffffffffffffff;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_78,pcVar3,pcVar8);\n          _Var12._M_p = local_58._M_dataplus._M_p;\n          _Var4._M_p = local_78._M_dataplus._M_p;\n          __n = local_58._M_string_length;\n          if (local_78._M_string_length <= local_58._M_string_length) {\n            __n = local_78._M_string_length;\n          }\n          if ((__n == 0) ||\n             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0))\n          {\n            uVar11 = local_78._M_string_length - local_58._M_string_length;\n            if ((long)uVar11 < 0x80000000) {\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }\n            else {\n              bVar13 = false;\n            }\n          }\n          else {\n            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2) {\n            operator_delete(_Var4._M_p);\n            _Var12._M_p = local_58._M_dataplus._M_p;\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2) {\n            operator_delete(_Var12._M_p);\n          }\n        }\n      }\n      else {\n        bVar13 = uVar1 < uVar2;\n      }\n      return bVar13;\n    }" if (parenthesized_expression "(((s2->super_Symbol).field_0x3a & 7) == 0)" ( (binary_expression "((s2->super_Symbol).field_0x3a & 7) == 0" (parenthesized_expression "((s2->super_Symbol).field_0x3a & 7)" ( (binary_expression "(s2->super_Symbol).field_0x3a & 7" (field_expression "(s2->super_Symbol).field_0x3a" (parenthesized_expression "(s2->super_Symbol)" ( (field_expression "s2->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar2 = (s2->super_Symbol).u2_.shndx;\n      bVar9 = (byte)(s2->super_Symbol).field_0x3b >> 5;\n      bVar10 = (bool)(bVar9 & 1);\n      if ((bVar9 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (uVar2 == uVar1) {\n        bVar13 = s1->value_ < s2->value_;\n        if (s1->value_ == s2->value_) {\n          bVar9 = (byte)(s1->super_Symbol).field_0x38 >> 4;\n          bVar7 = (byte)(s2->super_Symbol).field_0x38 >> 4;\n          if (bVar9 != bVar7) {\n            if (bVar9 == 2) {\n              return bVar10;\n            }\n            if (bVar7 == 2) {\n              return false;\n            }\n          }\n          pcVar3 = (s2->super_Symbol).name_;\n          pcVar8 = (char *)0xffffffffffffffff;\n          local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_58,pcVar3,pcVar8);\n          pcVar3 = (s1->super_Symbol).name_;\n          local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n          pcVar8 = (char *)0xffffffffffffffff;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_78,pcVar3,pcVar8);\n          _Var12._M_p = local_58._M_dataplus._M_p;\n          _Var4._M_p = local_78._M_dataplus._M_p;\n          __n = local_58._M_string_length;\n          if (local_78._M_string_length <= local_58._M_string_length) {\n            __n = local_78._M_string_length;\n          }\n          if ((__n == 0) ||\n             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0))\n          {\n            uVar11 = local_78._M_string_length - local_58._M_string_length;\n            if ((long)uVar11 < 0x80000000) {\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }\n            else {\n              bVar13 = false;\n            }\n          }\n          else {\n            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2) {\n            operator_delete(_Var4._M_p);\n            _Var12._M_p = local_58._M_dataplus._M_p;\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2) {\n            operator_delete(_Var12._M_p);\n          }\n        }\n      }\n      else {\n        bVar13 = uVar1 < uVar2;\n      }\n      return bVar13;\n    }" { (expression_statement "uVar2 = (s2->super_Symbol).u2_.shndx;" (assignment_expression "uVar2 = (s2->super_Symbol).u2_.shndx" identifier = (field_expression "(s2->super_Symbol).u2_.shndx" (field_expression "(s2->super_Symbol).u2_" (parenthesized_expression "(s2->super_Symbol)" ( (field_expression "s2->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "bVar9 = (byte)(s2->super_Symbol).field_0x3b >> 5;" (assignment_expression "bVar9 = (byte)(s2->super_Symbol).field_0x3b >> 5" identifier = (binary_expression "(byte)(s2->super_Symbol).field_0x3b >> 5" (field_expression "(byte)(s2->super_Symbol).field_0x3b" (call_expression "(byte)(s2->super_Symbol)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(s2->super_Symbol)" ( (field_expression "s2->super_Symbol" identifier -> field_identifier) ))) . field_identifier) >> number_literal)) ;) (expression_statement "bVar10 = (bool)(bVar9 & 1);" (assignment_expression "bVar10 = (bool)(bVar9 & 1)" identifier = (cast_expression "(bool)(bVar9 & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar9 & 1)" ( (binary_expression "bVar9 & 1" identifier & number_literal) )))) ;) (if_statement "if ((bVar9 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/symtab.cc",0x6b1,"operator()");\n      }" if (parenthesized_expression "((bVar9 & 1) == 0)" ( (binary_expression "(bVar9 & 1) == 0" (parenthesized_expression "(bVar9 & 1)" ( (binary_expression "bVar9 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/symtab.cc",0x6b1,"operator()");\n      }" { comment (expression_statement "do_gold_unreachable("../../gold/symtab.cc",0x6b1,"operator()");" (call_expression "do_gold_unreachable("../../gold/symtab.cc",0x6b1,"operator()")" identifier (argument_list "("../../gold/symtab.cc",0x6b1,"operator()")" ( (string_literal ""../../gold/symtab.cc"" " string_content ") , number_literal , (string_literal ""operator()"" " string_content ") ))) ;) })) (if_statement "if (uVar2 == uVar1) {\n        bVar13 = s1->value_ < s2->value_;\n        if (s1->value_ == s2->value_) {\n          bVar9 = (byte)(s1->super_Symbol).field_0x38 >> 4;\n          bVar7 = (byte)(s2->super_Symbol).field_0x38 >> 4;\n          if (bVar9 != bVar7) {\n            if (bVar9 == 2) {\n              return bVar10;\n            }\n            if (bVar7 == 2) {\n              return false;\n            }\n          }\n          pcVar3 = (s2->super_Symbol).name_;\n          pcVar8 = (char *)0xffffffffffffffff;\n          local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_58,pcVar3,pcVar8);\n          pcVar3 = (s1->super_Symbol).name_;\n          local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n          pcVar8 = (char *)0xffffffffffffffff;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_78,pcVar3,pcVar8);\n          _Var12._M_p = local_58._M_dataplus._M_p;\n          _Var4._M_p = local_78._M_dataplus._M_p;\n          __n = local_58._M_string_length;\n          if (local_78._M_string_length <= local_58._M_string_length) {\n            __n = local_78._M_string_length;\n          }\n          if ((__n == 0) ||\n             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0))\n          {\n            uVar11 = local_78._M_string_length - local_58._M_string_length;\n            if ((long)uVar11 < 0x80000000) {\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }\n            else {\n              bVar13 = false;\n            }\n          }\n          else {\n            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2) {\n            operator_delete(_Var4._M_p);\n            _Var12._M_p = local_58._M_dataplus._M_p;\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2) {\n            operator_delete(_Var12._M_p);\n          }\n        }\n      }\n      else {\n        bVar13 = uVar1 < uVar2;\n      }" if (parenthesized_expression "(uVar2 == uVar1)" ( (binary_expression "uVar2 == uVar1" identifier == identifier) )) (compound_statement "{\n        bVar13 = s1->value_ < s2->value_;\n        if (s1->value_ == s2->value_) {\n          bVar9 = (byte)(s1->super_Symbol).field_0x38 >> 4;\n          bVar7 = (byte)(s2->super_Symbol).field_0x38 >> 4;\n          if (bVar9 != bVar7) {\n            if (bVar9 == 2) {\n              return bVar10;\n            }\n            if (bVar7 == 2) {\n              return false;\n            }\n          }\n          pcVar3 = (s2->super_Symbol).name_;\n          pcVar8 = (char *)0xffffffffffffffff;\n          local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_58,pcVar3,pcVar8);\n          pcVar3 = (s1->super_Symbol).name_;\n          local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n          pcVar8 = (char *)0xffffffffffffffff;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_78,pcVar3,pcVar8);\n          _Var12._M_p = local_58._M_dataplus._M_p;\n          _Var4._M_p = local_78._M_dataplus._M_p;\n          __n = local_58._M_string_length;\n          if (local_78._M_string_length <= local_58._M_string_length) {\n            __n = local_78._M_string_length;\n          }\n          if ((__n == 0) ||\n             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0))\n          {\n            uVar11 = local_78._M_string_length - local_58._M_string_length;\n            if ((long)uVar11 < 0x80000000) {\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }\n            else {\n              bVar13 = false;\n            }\n          }\n          else {\n            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2) {\n            operator_delete(_Var4._M_p);\n            _Var12._M_p = local_58._M_dataplus._M_p;\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2) {\n            operator_delete(_Var12._M_p);\n          }\n        }\n      }" { (expression_statement "bVar13 = s1->value_ < s2->value_;" (assignment_expression "bVar13 = s1->value_ < s2->value_" identifier = (binary_expression "s1->value_ < s2->value_" (field_expression "s1->value_" identifier -> field_identifier) < (field_expression "s2->value_" identifier -> field_identifier))) ;) (if_statement "if (s1->value_ == s2->value_) {\n          bVar9 = (byte)(s1->super_Symbol).field_0x38 >> 4;\n          bVar7 = (byte)(s2->super_Symbol).field_0x38 >> 4;\n          if (bVar9 != bVar7) {\n            if (bVar9 == 2) {\n              return bVar10;\n            }\n            if (bVar7 == 2) {\n              return false;\n            }\n          }\n          pcVar3 = (s2->super_Symbol).name_;\n          pcVar8 = (char *)0xffffffffffffffff;\n          local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_58,pcVar3,pcVar8);\n          pcVar3 = (s1->super_Symbol).name_;\n          local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n          pcVar8 = (char *)0xffffffffffffffff;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_78,pcVar3,pcVar8);\n          _Var12._M_p = local_58._M_dataplus._M_p;\n          _Var4._M_p = local_78._M_dataplus._M_p;\n          __n = local_58._M_string_length;\n          if (local_78._M_string_length <= local_58._M_string_length) {\n            __n = local_78._M_string_length;\n          }\n          if ((__n == 0) ||\n             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0))\n          {\n            uVar11 = local_78._M_string_length - local_58._M_string_length;\n            if ((long)uVar11 < 0x80000000) {\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }\n            else {\n              bVar13 = false;\n            }\n          }\n          else {\n            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2) {\n            operator_delete(_Var4._M_p);\n            _Var12._M_p = local_58._M_dataplus._M_p;\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2) {\n            operator_delete(_Var12._M_p);\n          }\n        }" if (parenthesized_expression "(s1->value_ == s2->value_)" ( (binary_expression "s1->value_ == s2->value_" (field_expression "s1->value_" identifier -> field_identifier) == (field_expression "s2->value_" identifier -> field_identifier)) )) (compound_statement "{\n          bVar9 = (byte)(s1->super_Symbol).field_0x38 >> 4;\n          bVar7 = (byte)(s2->super_Symbol).field_0x38 >> 4;\n          if (bVar9 != bVar7) {\n            if (bVar9 == 2) {\n              return bVar10;\n            }\n            if (bVar7 == 2) {\n              return false;\n            }\n          }\n          pcVar3 = (s2->super_Symbol).name_;\n          pcVar8 = (char *)0xffffffffffffffff;\n          local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_58,pcVar3,pcVar8);\n          pcVar3 = (s1->super_Symbol).name_;\n          local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n          pcVar8 = (char *)0xffffffffffffffff;\n          if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }\n                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */\n          std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_78,pcVar3,pcVar8);\n          _Var12._M_p = local_58._M_dataplus._M_p;\n          _Var4._M_p = local_78._M_dataplus._M_p;\n          __n = local_58._M_string_length;\n          if (local_78._M_string_length <= local_58._M_string_length) {\n            __n = local_78._M_string_length;\n          }\n          if ((__n == 0) ||\n             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0))\n          {\n            uVar11 = local_78._M_string_length - local_58._M_string_length;\n            if ((long)uVar11 < 0x80000000) {\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }\n            else {\n              bVar13 = false;\n            }\n          }\n          else {\n            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2) {\n            operator_delete(_Var4._M_p);\n            _Var12._M_p = local_58._M_dataplus._M_p;\n          }\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2) {\n            operator_delete(_Var12._M_p);\n          }\n        }" { (expression_statement "bVar9 = (byte)(s1->super_Symbol).field_0x38 >> 4;" (assignment_expression "bVar9 = (byte)(s1->super_Symbol).field_0x38 >> 4" identifier = (binary_expression "(byte)(s1->super_Symbol).field_0x38 >> 4" (field_expression "(byte)(s1->super_Symbol).field_0x38" (call_expression "(byte)(s1->super_Symbol)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(s1->super_Symbol)" ( (field_expression "s1->super_Symbol" identifier -> field_identifier) ))) . field_identifier) >> number_literal)) ;) (expression_statement "bVar7 = (byte)(s2->super_Symbol).field_0x38 >> 4;" (assignment_expression "bVar7 = (byte)(s2->super_Symbol).field_0x38 >> 4" identifier = (binary_expression "(byte)(s2->super_Symbol).field_0x38 >> 4" (field_expression "(byte)(s2->super_Symbol).field_0x38" (call_expression "(byte)(s2->super_Symbol)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(s2->super_Symbol)" ( (field_expression "s2->super_Symbol" identifier -> field_identifier) ))) . field_identifier) >> number_literal)) ;) (if_statement "if (bVar9 != bVar7) {\n            if (bVar9 == 2) {\n              return bVar10;\n            }\n            if (bVar7 == 2) {\n              return false;\n            }\n          }" if (parenthesized_expression "(bVar9 != bVar7)" ( (binary_expression "bVar9 != bVar7" identifier != identifier) )) (compound_statement "{\n            if (bVar9 == 2) {\n              return bVar10;\n            }\n            if (bVar7 == 2) {\n              return false;\n            }\n          }" { (if_statement "if (bVar9 == 2) {\n              return bVar10;\n            }" if (parenthesized_expression "(bVar9 == 2)" ( (binary_expression "bVar9 == 2" identifier == number_literal) )) (compound_statement "{\n              return bVar10;\n            }" { (return_statement "return bVar10;" return identifier ;) })) (if_statement "if (bVar7 == 2) {\n              return false;\n            }" if (parenthesized_expression "(bVar7 == 2)" ( (binary_expression "bVar7 == 2" identifier == number_literal) )) (compound_statement "{\n              return false;\n            }" { (return_statement "return false;" return false ;) })) })) (expression_statement "pcVar3 = (s2->super_Symbol).name_;" (assignment_expression "pcVar3 = (s2->super_Symbol).name_" identifier = (field_expression "(s2->super_Symbol).name_" (parenthesized_expression "(s2->super_Symbol)" ( (field_expression "s2->super_Symbol" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pcVar8 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar8 = (char *)0xffffffffffffffff" identifier = (cast_expression "(char *)0xffffffffffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_58._M_dataplus._M_p = (pointer)&local_58.field_2;" (assignment_expression "local_58._M_dataplus._M_p = (pointer)&local_58.field_2" (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&local_58.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "local_58.field_2" identifier . field_identifier))) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }" { (expression_statement "sVar6 = strlen(pcVar3);" (assignment_expression "sVar6 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "pcVar8 = pcVar3 + sVar6;" (assignment_expression "pcVar8 = pcVar3 + sVar6" identifier = (binary_expression "pcVar3 + sVar6" identifier + identifier)) ;) })) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_58,pcVar3,pcVar8);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&local_58,pcVar3,pcVar8);" (binary_expression "_M_construct<char_const*>(&local_58,pcVar3,pcVar8)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&local_58,pcVar3,pcVar8)" ( (comma_expression "&local_58,pcVar3,pcVar8" (pointer_expression "&local_58" & identifier) , (comma_expression "pcVar3,pcVar8" identifier , identifier)) ))) ;)) (expression_statement "pcVar3 = (s1->super_Symbol).name_;" (assignment_expression "pcVar3 = (s1->super_Symbol).name_" identifier = (field_expression "(s1->super_Symbol).name_" (parenthesized_expression "(s1->super_Symbol)" ( (field_expression "s1->super_Symbol" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "local_78._M_dataplus._M_p = (pointer)&local_78.field_2;" (assignment_expression "local_78._M_dataplus._M_p = (pointer)&local_78.field_2" (field_expression "local_78._M_dataplus._M_p" (field_expression "local_78._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&local_78.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "local_78.field_2" identifier . field_identifier))) ;) (expression_statement "pcVar8 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar8 = (char *)0xffffffffffffffff" identifier = (cast_expression "(char *)0xffffffffffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            sVar6 = strlen(pcVar3);\n            pcVar8 = pcVar3 + sVar6;\n          }" { (expression_statement "sVar6 = strlen(pcVar3);" (assignment_expression "sVar6 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "pcVar8 = pcVar3 + sVar6;" (assignment_expression "pcVar8 = pcVar3 + sVar6" identifier = (binary_expression "pcVar3 + sVar6" identifier + identifier)) ;) })) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char_const*>(&local_78,pcVar3,pcVar8);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&local_78,pcVar3,pcVar8);" (binary_expression "_M_construct<char_const*>(&local_78,pcVar3,pcVar8)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&local_78,pcVar3,pcVar8)" ( (comma_expression "&local_78,pcVar3,pcVar8" (pointer_expression "&local_78" & identifier) , (comma_expression "pcVar3,pcVar8" identifier , identifier)) ))) ;)) (expression_statement "_Var12._M_p = local_58._M_dataplus._M_p;" (assignment_expression "_Var12._M_p = local_58._M_dataplus._M_p" (field_expression "_Var12._M_p" identifier . field_identifier) = (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier)) ;) (expression_statement "_Var4._M_p = local_78._M_dataplus._M_p;" (assignment_expression "_Var4._M_p = local_78._M_dataplus._M_p" (field_expression "_Var4._M_p" identifier . field_identifier) = (field_expression "local_78._M_dataplus._M_p" (field_expression "local_78._M_dataplus" identifier . field_identifier) . field_identifier)) ;) (expression_statement "__n = local_58._M_string_length;" (assignment_expression "__n = local_58._M_string_length" identifier = (field_expression "local_58._M_string_length" identifier . field_identifier)) ;) (if_statement "if (local_78._M_string_length <= local_58._M_string_length) {\n            __n = local_78._M_string_length;\n          }" if (parenthesized_expression "(local_78._M_string_length <= local_58._M_string_length)" ( (binary_expression "local_78._M_string_length <= local_58._M_string_length" (field_expression "local_78._M_string_length" identifier . field_identifier) <= (field_expression "local_58._M_string_length" identifier . field_identifier)) )) (compound_statement "{\n            __n = local_78._M_string_length;\n          }" { (expression_statement "__n = local_78._M_string_length;" (assignment_expression "__n = local_78._M_string_length" identifier = (field_expression "local_78._M_string_length" identifier . field_identifier)) ;) })) (if_statement "if ((__n == 0) ||\n             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0))\n          {\n            uVar11 = local_78._M_string_length - local_58._M_string_length;\n            if ((long)uVar11 < 0x80000000) {\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }\n            else {\n              bVar13 = false;\n            }\n          }\n          else {\n            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);\n          }" if (parenthesized_expression "((__n == 0) ||\n             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0))" ( (binary_expression "(__n == 0) ||\n             (iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0)" (parenthesized_expression "(__n == 0)" ( (binary_expression "__n == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0)" ( (comma_expression "iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n), iVar5 == 0" (assignment_expression "iVar5 = memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n)" identifier = (call_expression "memcmp(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n)" identifier (argument_list "(local_78._M_dataplus._M_p,local_58._M_dataplus._M_p,__n)" ( (field_expression "local_78._M_dataplus._M_p" (field_expression "local_78._M_dataplus" identifier . field_identifier) . field_identifier) , (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) , identifier )))) , (binary_expression "iVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n            uVar11 = local_78._M_string_length - local_58._M_string_length;\n            if ((long)uVar11 < 0x80000000) {\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }\n            else {\n              bVar13 = false;\n            }\n          }" { (expression_statement "uVar11 = local_78._M_string_length - local_58._M_string_length;" (assignment_expression "uVar11 = local_78._M_string_length - local_58._M_string_length" identifier = (binary_expression "local_78._M_string_length - local_58._M_string_length" (field_expression "local_78._M_string_length" identifier . field_identifier) - (field_expression "local_58._M_string_length" identifier . field_identifier))) ;) (if_statement "if ((long)uVar11 < 0x80000000) {\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }\n            else {\n              bVar13 = false;\n            }" if (parenthesized_expression "((long)uVar11 < 0x80000000)" ( (binary_expression "(long)uVar11 < 0x80000000" (cast_expression "(long)uVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n              bVar13 = bVar10;\n              if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }\n            }" { (expression_statement "bVar13 = bVar10;" (assignment_expression "bVar13 = bVar10" identifier = identifier) ;) (if_statement "if (-0x80000001 < (long)uVar11) {\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }" if (parenthesized_expression "(-0x80000001 < (long)uVar11)" ( (binary_expression "-0x80000001 < (long)uVar11" number_literal < (cast_expression "(long)uVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n                bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);\n              }" { (expression_statement "bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1);" (assignment_expression "bVar13 = (bool)((byte)(uVar11 >> 0x1f) & 1)" identifier = (cast_expression "(bool)((byte)(uVar11 >> 0x1f) & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "((byte)(uVar11 >> 0x1f) & 1)" ( (binary_expression "(byte)(uVar11 >> 0x1f) & 1" (call_expression "(byte)(uVar11 >> 0x1f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar11 >> 0x1f)" ( (binary_expression "uVar11 >> 0x1f" identifier >> number_literal) ))) & number_literal) )))) ;) })) }) (else_clause "else {\n              bVar13 = false;\n            }" else (compound_statement "{\n              bVar13 = false;\n            }" { (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) }))) }) (else_clause "else {\n            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);\n          }" else (compound_statement "{\n            bVar13 = SUB41((uint)iVar5 >> 0x1f,0);\n          }" { (expression_statement "bVar13 = SUB41((uint)iVar5 >> 0x1f,0);" (assignment_expression "bVar13 = SUB41((uint)iVar5 >> 0x1f,0)" identifier = (call_expression "SUB41((uint)iVar5 >> 0x1f,0)" identifier (argument_list "((uint)iVar5 >> 0x1f,0)" ( (binary_expression "(uint)iVar5 >> 0x1f" (cast_expression "(uint)iVar5" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) , number_literal )))) ;) }))) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2) {\n            operator_delete(_Var4._M_p);\n            _Var12._M_p = local_58._M_dataplus._M_p;\n          }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n               *)_Var4._M_p != &local_78.field_2" (binary_expression "allocator<char>_>_9\n               *)_Var4._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n               *)_Var4._M_p" identifier * (ERROR ")" )) (field_expression "_Var4._M_p" identifier . field_identifier))) != (pointer_expression "&local_78.field_2" & (field_expression "local_78.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n            operator_delete(_Var4._M_p);\n            _Var12._M_p = local_58._M_dataplus._M_p;\n          }" { (expression_statement "operator_delete(_Var4._M_p);" (call_expression "operator_delete(_Var4._M_p)" identifier (argument_list "(_Var4._M_p)" ( (field_expression "_Var4._M_p" identifier . field_identifier) ))) ;) (expression_statement "_Var12._M_p = local_58._M_dataplus._M_p;" (assignment_expression "_Var12._M_p = local_58._M_dataplus._M_p" (field_expression "_Var12._M_p" identifier . field_identifier) = (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier)) ;) })) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2) {\n            operator_delete(_Var12._M_p);\n          }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n               *)_Var12._M_p != &local_58.field_2" (binary_expression "allocator<char>_>_9\n               *)_Var12._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n               *)_Var12._M_p" identifier * (ERROR ")" )) (field_expression "_Var12._M_p" identifier . field_identifier))) != (pointer_expression "&local_58.field_2" & (field_expression "local_58.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n            operator_delete(_Var12._M_p);\n          }" { (expression_statement "operator_delete(_Var12._M_p);" (call_expression "operator_delete(_Var12._M_p)" identifier (argument_list "(_Var12._M_p)" ( (field_expression "_Var12._M_p" identifier . field_identifier) ))) ;) })) })) }) (else_clause "else {\n        bVar13 = uVar1 < uVar2;\n      }" else (compound_statement "{\n        bVar13 = uVar1 < uVar2;\n      }" { (expression_statement "bVar13 = uVar1 < uVar2;" (assignment_expression "bVar13 = uVar1 < uVar2" identifier = (binary_expression "uVar1 < uVar2" identifier < identifier)) ;) }))) (return_statement "return bVar13;" return identifier ;) })) })) comment (expression_statement "do_gold_unreachable("../../gold/symtab.h",0xaa,"shndx");" (call_expression "do_gold_unreachable("../../gold/symtab.h",0xaa,"shndx")" identifier (argument_list "("../../gold/symtab.h",0xaa,"shndx")" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal , (string_literal ""shndx"" " string_content ") ))) ;) })))
(translation_unit "ulong FUN_002859a0(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)\n\n{\n  char *pcVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *pcVar5;\n  ulong __n;\n  byte bVar6;\n  ulong uVar7;\n  undefined1 *puVar8;\n  undefined1 *local_78;\n  ulong local_70;\n  undefined1 local_68 [16];\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)((long)param_2 + 0x3a) & 7) == 0) {\n    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    \n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    \n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }\n  }\n                    \n  FUN_0017c650("../../gold/symtab.h",0xaa,"shndx");\n}\n\n" (function_definition "ulong FUN_002859a0(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)\n\n{\n  char *pcVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *pcVar5;\n  ulong __n;\n  byte bVar6;\n  ulong uVar7;\n  undefined1 *puVar8;\n  undefined1 *local_78;\n  ulong local_70;\n  undefined1 local_68 [16];\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)((long)param_2 + 0x3a) & 7) == 0) {\n    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    \n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    \n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }\n  }\n                    \n  FUN_0017c650("../../gold/symtab.h",0xaa,"shndx");\n}" type_identifier (function_declarator "FUN_002859a0(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)" identifier (parameter_list "(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *pcVar5;\n  ulong __n;\n  byte bVar6;\n  ulong uVar7;\n  undefined1 *puVar8;\n  undefined1 *local_78;\n  ulong local_70;\n  undefined1 local_68 [16];\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)((long)param_2 + 0x3a) & 7) == 0) {\n    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    \n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    \n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }\n  }\n                    \n  FUN_0017c650("../../gold/symtab.h",0xaa,"shndx");\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "ulong __n;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined1 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "ulong local_70;" type_identifier identifier ;) (declaration "undefined1 local_68 [16];" type_identifier (array_declarator "local_68 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "undefined1 local_48 [24];" type_identifier (array_declarator "local_48 [24]" identifier [ number_literal ]) ;) (if_statement "if ((*(byte *)((long)param_2 + 0x3a) & 7) == 0) {\n    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    \n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    \n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }\n  }" if (parenthesized_expression "((*(byte *)((long)param_2 + 0x3a) & 7) == 0)" ( (binary_expression "(*(byte *)((long)param_2 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)((long)param_2 + 0x3a) & 7)" ( (binary_expression "*(byte *)((long)param_2 + 0x3a) & 7" (pointer_expression "*(byte *)((long)param_2 + 0x3a)" * (cast_expression "(byte *)((long)param_2 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x3a)" ( (binary_expression "(long)param_2 + 0x3a" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    \n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    \n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }\n  }" { (if_statement "if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    \n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }" if (parenthesized_expression "((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)param_2 + 0x3b) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)param_2 + 0x3b) & 0x20)" ( (binary_expression "*(byte *)((long)param_2 + 0x3b) & 0x20" (pointer_expression "*(byte *)((long)param_2 + 0x3b)" * (cast_expression "(byte *)((long)param_2 + 0x3b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x3b)" ( (binary_expression "(long)param_2 + 0x3b" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }" { (expression_statement "FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");" (call_expression "FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()")" identifier (argument_list "("../../gold/symtab.cc",0x6af,"operator()")" ( (string_literal ""../../gold/symtab.cc"" " string_content ") , number_literal , (string_literal ""operator()"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    \n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }" if (parenthesized_expression "((*(byte *)((long)param_3 + 0x3a) & 7) == 0)" ( (binary_expression "(*(byte *)((long)param_3 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)((long)param_3 + 0x3a) & 7)" ( (binary_expression "*(byte *)((long)param_3 + 0x3a) & 7" (pointer_expression "*(byte *)((long)param_3 + 0x3a)" * (cast_expression "(byte *)((long)param_3 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + 0x3a)" ( (binary_expression "(long)param_3 + 0x3a" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    \n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }" { (expression_statement "bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;" (assignment_expression "bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5" identifier = (binary_expression "*(byte *)((long)param_3 + 0x3b) >> 5" (pointer_expression "*(byte *)((long)param_3 + 0x3b)" * (cast_expression "(byte *)((long)param_3 + 0x3b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + 0x3b)" ( (binary_expression "(long)param_3 + 0x3b" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal)) ;) (expression_statement "uVar7 = (ulong)(bVar6 & 1);" (assignment_expression "uVar7 = (ulong)(bVar6 & 1)" identifier = (call_expression "(ulong)(bVar6 & 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar6 & 1)" ( (binary_expression "bVar6 & 1" identifier & number_literal) )))) ;) (if_statement "if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }" if (parenthesized_expression "((bVar6 & 1) == 0)" ( (binary_expression "(bVar6 & 1) == 0" (parenthesized_expression "(bVar6 & 1)" ( (binary_expression "bVar6 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }" { (expression_statement "FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");" (call_expression "FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()")" identifier (argument_list "("../../gold/symtab.cc",0x6b1,"operator()")" ( (string_literal ""../../gold/symtab.cc"" " string_content ") , number_literal , (string_literal ""operator()"" " string_content ") ))) ;) })) (if_statement "if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }" if (parenthesized_expression "(*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3))" ( (binary_expression "*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)" (pointer_expression "*(uint *)(param_3 + 3)" * (cast_expression "(uint *)(param_3 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 3)" ( (binary_expression "param_3 + 3" identifier + number_literal) )))) != (pointer_expression "*(uint *)(param_2 + 3)" * (cast_expression "(uint *)(param_2 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) ))))) )) (compound_statement "{\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }" { (return_statement "return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));" return (call_expression "(ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3))" ( (binary_expression "*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3)" (pointer_expression "*(uint *)(param_2 + 3)" * (cast_expression "(uint *)(param_2 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_3 + 3)" * (cast_expression "(uint *)(param_3 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 3)" ( (binary_expression "param_3 + 3" identifier + number_literal) ))))) ))) ;) })) (if_statement "if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }" if (parenthesized_expression "(*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8))" ( (binary_expression "*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)" (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) != (pointer_expression "*(uint *)(param_3 + 8)" * (cast_expression "(uint *)(param_3 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }" { (return_statement "return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));" return (call_expression "(ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8))" ( (binary_expression "*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8)" (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_3 + 8)" * (cast_expression "(uint *)(param_3 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) ))))) ))) ;) })) (if_statement "if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }" if (parenthesized_expression "(*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4)" ( (binary_expression "*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4" (binary_expression "*(byte *)(param_2 + 7) >> 4" (pointer_expression "*(byte *)(param_2 + 7)" * (cast_expression "(byte *)(param_2 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) >> number_literal) != (binary_expression "*(byte *)(param_3 + 7) >> 4" (pointer_expression "*(byte *)(param_3 + 7)" * (cast_expression "(byte *)(param_3 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 7)" ( (binary_expression "param_3 + 7" identifier + number_literal) )))) >> number_literal)) )) (compound_statement "{\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }" { (if_statement "if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }" if (parenthesized_expression "(*(byte *)(param_2 + 7) >> 4 == 2)" ( (binary_expression "*(byte *)(param_2 + 7) >> 4 == 2" (binary_expression "*(byte *)(param_2 + 7) >> 4" (pointer_expression "*(byte *)(param_2 + 7)" * (cast_expression "(byte *)(param_2 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) >> number_literal) == number_literal) )) (compound_statement "{\n          return uVar7;\n        }" { (return_statement "return uVar7;" return identifier ;) })) (if_statement "if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }" if (parenthesized_expression "(*(byte *)(param_3 + 7) >> 4 == 2)" ( (binary_expression "*(byte *)(param_3 + 7) >> 4 == 2" (binary_expression "*(byte *)(param_3 + 7) >> 4" (pointer_expression "*(byte *)(param_3 + 7)" * (cast_expression "(byte *)(param_3 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 7)" ( (binary_expression "param_3 + 7" identifier + number_literal) )))) >> number_literal) == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "pcVar1 = (char *)*param_3;" (assignment_expression "pcVar1 = (char *)*param_3" identifier = (cast_expression "(char *)*param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (expression_statement "pcVar5 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar5 = (char *)0xffffffffffffffff" identifier = (cast_expression "(char *)0xffffffffffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (if_statement "if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }" if (parenthesized_expression "(pcVar1 != (char *)0x0)" ( (binary_expression "pcVar1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }" { (expression_statement "sVar4 = strlen(pcVar1);" (assignment_expression "sVar4 = strlen(pcVar1)" identifier = (call_expression "strlen(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier )))) ;) (expression_statement "pcVar5 = pcVar1 + sVar4;" (assignment_expression "pcVar5 = pcVar1 + sVar4" identifier = (binary_expression "pcVar1 + sVar4" identifier + identifier)) ;) })) (expression_statement "FUN_001665c0(&local_58,pcVar1,pcVar5);" (call_expression "FUN_001665c0(&local_58,pcVar1,pcVar5)" identifier (argument_list "(&local_58,pcVar1,pcVar5)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (expression_statement "pcVar1 = (char *)*param_2;" (assignment_expression "pcVar1 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "local_78 = local_68;" (assignment_expression "local_78 = local_68" identifier = identifier) ;) (expression_statement "pcVar5 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar5 = (char *)0xffffffffffffffff" identifier = (cast_expression "(char *)0xffffffffffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }" if (parenthesized_expression "(pcVar1 != (char *)0x0)" ( (binary_expression "pcVar1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }" { (expression_statement "sVar4 = strlen(pcVar1);" (assignment_expression "sVar4 = strlen(pcVar1)" identifier = (call_expression "strlen(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier )))) ;) (expression_statement "pcVar5 = pcVar1 + sVar4;" (assignment_expression "pcVar5 = pcVar1 + sVar4" identifier = (binary_expression "pcVar1 + sVar4" identifier + identifier)) ;) })) (expression_statement "FUN_001665c0(&local_78,pcVar1,pcVar5);" (call_expression "FUN_001665c0(&local_78,pcVar1,pcVar5)" identifier (argument_list "(&local_78,pcVar1,pcVar5)" ( (pointer_expression "&local_78" & identifier) , identifier , identifier ))) ;) (expression_statement "puVar8 = local_58;" (assignment_expression "puVar8 = local_58" identifier = identifier) ;) (expression_statement "puVar2 = local_78;" (assignment_expression "puVar2 = local_78" identifier = identifier) ;) (expression_statement "__n = local_50;" (assignment_expression "__n = local_50" identifier = identifier) ;) (if_statement "if (local_70 <= local_50) {\n        __n = local_70;\n      }" if (parenthesized_expression "(local_70 <= local_50)" ( (binary_expression "local_70 <= local_50" identifier <= identifier) )) (compound_statement "{\n        __n = local_70;\n      }" { (expression_statement "__n = local_70;" (assignment_expression "__n = local_70" identifier = identifier) ;) })) (if_statement "if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }" if (parenthesized_expression "((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0))" ( (binary_expression "(__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)" (parenthesized_expression "(__n == 0)" ( (binary_expression "__n == 0" identifier == number_literal) )) || (parenthesized_expression "(uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)" ( (comma_expression "uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0" (assignment_expression "uVar3 = memcmp(local_78,local_58,__n)" identifier = (call_expression "memcmp(local_78,local_58,__n)" identifier (argument_list "(local_78,local_58,__n)" ( identifier , identifier , identifier )))) , (binary_expression "uVar3 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }" { (expression_statement "local_70 = local_70 - local_50;" (assignment_expression "local_70 = local_70 - local_50" identifier = (binary_expression "local_70 - local_50" identifier - identifier)) ;) (if_statement "if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }" if (parenthesized_expression "((long)local_70 < 0x80000000)" ( (binary_expression "(long)local_70 < 0x80000000" (cast_expression "(long)local_70" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }" { (if_statement "if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }" if (parenthesized_expression "(-0x80000001 < (long)local_70)" ( (binary_expression "-0x80000001 < (long)local_70" number_literal < (cast_expression "(long)local_70" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar7 = local_70 >> 0x1f & 1;\n          }" { (expression_statement "uVar7 = local_70 >> 0x1f & 1;" (assignment_expression "uVar7 = local_70 >> 0x1f & 1" identifier = (binary_expression "local_70 >> 0x1f & 1" (binary_expression "local_70 >> 0x1f" identifier >> number_literal) & number_literal)) ;) })) }) (else_clause "else {\n          uVar7 = 0;\n        }" else (compound_statement "{\n          uVar7 = 0;\n        }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }" else (compound_statement "{\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }" { (expression_statement "uVar7 = (ulong)(uVar3 >> 0x1f);" (assignment_expression "uVar7 = (ulong)(uVar3 >> 0x1f)" identifier = (call_expression "(ulong)(uVar3 >> 0x1f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar3 >> 0x1f)" ( (binary_expression "uVar3 >> 0x1f" identifier >> number_literal) )))) ;) }))) (if_statement "if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }" if (parenthesized_expression "(puVar2 != local_68)" ( (binary_expression "puVar2 != local_68" identifier != identifier) )) (compound_statement "{\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }" { (expression_statement "FUN_002dac70(puVar2);" (call_expression "FUN_002dac70(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (expression_statement "puVar8 = local_58;" (assignment_expression "puVar8 = local_58" identifier = identifier) ;) })) (if_statement "if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }" if (parenthesized_expression "(puVar8 != local_48)" ( (binary_expression "puVar8 != local_48" identifier != identifier) )) (compound_statement "{\n        FUN_002dac70(puVar8);\n      }" { (expression_statement "FUN_002dac70(puVar8);" (call_expression "FUN_002dac70(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) ;) })) (return_statement "return uVar7;" return identifier ;) })) })) (expression_statement "FUN_0017c650("../../gold/symtab.h",0xaa,"shndx");" (call_expression "FUN_0017c650("../../gold/symtab.h",0xaa,"shndx")" identifier (argument_list "("../../gold/symtab.h",0xaa,"shndx")" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal , (string_literal ""shndx"" " string_content ") ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_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) ))))) )) (compound_statement { (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (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) ))))) ))) ;) })) (if_statement if (parenthesized_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) ))))) )) (compound_statement { (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (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) ))))) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) != (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) == LIT) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & LIT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (return_statement return IDENT ;) })) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "ulong FUN_002859a0(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)\n\n{\n  char *pcVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *pcVar5;\n  ulong __n;\n  byte bVar6;\n  ulong uVar7;\n  undefined1 *puVar8;\n  undefined1 *local_78;\n  ulong local_70;\n  undefined1 local_68 [16];\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)((long)param_2 + 0x3a) & 7) == 0) {\n    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    \n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    \n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }\n  }\n                    \n  FUN_0017c650("../../gold/symtab.h",0xaa,"shndx");\n}" (type_identifier "ulong") (function_declarator "FUN_002859a0(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)" (identifier "FUN_002859a0") (parameter_list "(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined8 *param_3" (type_identifier "undefined8") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  char *pcVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  size_t sVar4;\n  char *pcVar5;\n  ulong __n;\n  byte bVar6;\n  ulong uVar7;\n  undefined1 *puVar8;\n  undefined1 *local_78;\n  ulong local_70;\n  undefined1 local_68 [16];\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  if ((*(byte *)((long)param_2 + 0x3a) & 7) == 0) {\n    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    \n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    \n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }\n  }\n                    \n  FUN_0017c650("../../gold/symtab.h",0xaa,"shndx");\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "undefined1 *puVar2;" (type_identifier "undefined1") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "ulong __n;" (type_identifier "ulong") (identifier "__n") (; ";")) (declaration "byte bVar6;" (type_identifier "byte") (identifier "bVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "undefined1 *puVar8;" (type_identifier "undefined1") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined1 *local_78;" (type_identifier "undefined1") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "ulong local_70;" (type_identifier "ulong") (identifier "local_70") (; ";")) (declaration "undefined1 local_68 [16];" (type_identifier "undefined1") (array_declarator "local_68 [16]" (identifier "local_68") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 *local_58;" (type_identifier "undefined1") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "ulong local_50;" (type_identifier "ulong") (identifier "local_50") (; ";")) (declaration "undefined1 local_48 [24];" (type_identifier "undefined1") (array_declarator "local_48 [24]" (identifier "local_48") ([ "[") (number_literal "24") (] "]")) (; ";")) (if_statement "if ((*(byte *)((long)param_2 + 0x3a) & 7) == 0) {\n    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    \n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    \n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }\n  }" (if "if") (parenthesized_expression "((*(byte *)((long)param_2 + 0x3a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)((long)param_2 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)((long)param_2 + 0x3a) & 7)" (( "(") (binary_expression "*(byte *)((long)param_2 + 0x3a) & 7" (pointer_expression "*(byte *)((long)param_2 + 0x3a)" (* "*") (cast_expression "(byte *)((long)param_2 + 0x3a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 0x3a)" (( "(") (binary_expression "(long)param_2 + 0x3a" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "0x3a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    \n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }\n    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    \n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }\n  }" ({ "{") (if_statement "if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {\n                    \n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }" (if "if") (parenthesized_expression "((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)((long)param_2 + 0x3b) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)param_2 + 0x3b) & 0x20)" (( "(") (binary_expression "*(byte *)((long)param_2 + 0x3b) & 0x20" (pointer_expression "*(byte *)((long)param_2 + 0x3b)" (* "*") (cast_expression "(byte *)((long)param_2 + 0x3b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 0x3b)" (( "(") (binary_expression "(long)param_2 + 0x3b" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "0x3b")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");\n    }" ({ "{") (expression_statement "FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");" (call_expression "FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()")" (identifier "FUN_0017c650") (argument_list "("../../gold/symtab.cc",0x6af,"operator()")" (( "(") (string_literal ""../../gold/symtab.cc"" (" """) (string_content "../../gold/symtab.cc") (" """)) (, ",") (number_literal "0x6af") (, ",") (string_literal ""operator()"" (" """) (string_content "operator()") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    \n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }" (if "if") (parenthesized_expression "((*(byte *)((long)param_3 + 0x3a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)((long)param_3 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)((long)param_3 + 0x3a) & 7)" (( "(") (binary_expression "*(byte *)((long)param_3 + 0x3a) & 7" (pointer_expression "*(byte *)((long)param_3 + 0x3a)" (* "*") (cast_expression "(byte *)((long)param_3 + 0x3a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_3 + 0x3a)" (( "(") (binary_expression "(long)param_3 + 0x3a" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (+ "+") (number_literal "0x3a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;\n      uVar7 = (ulong)(bVar6 & 1);\n      if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }\n      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }\n      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }\n      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }\n      pcVar1 = (char *)*param_3;\n      pcVar5 = (char *)0xffffffffffffffff;\n      local_58 = local_48;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n      FUN_001665c0(&local_58,pcVar1,pcVar5);\n      pcVar1 = (char *)*param_2;\n      local_78 = local_68;\n      pcVar5 = (char *)0xffffffffffffffff;\n      if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }\n                    \n      FUN_001665c0(&local_78,pcVar1,pcVar5);\n      puVar8 = local_58;\n      puVar2 = local_78;\n      __n = local_50;\n      if (local_70 <= local_50) {\n        __n = local_70;\n      }\n      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }\n      if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }\n      if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }\n      return uVar7;\n    }" ({ "{") (expression_statement "bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;" (assignment_expression "bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5" (identifier "bVar6") (= "=") (binary_expression "*(byte *)((long)param_3 + 0x3b) >> 5" (pointer_expression "*(byte *)((long)param_3 + 0x3b)" (* "*") (cast_expression "(byte *)((long)param_3 + 0x3b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_3 + 0x3b)" (( "(") (binary_expression "(long)param_3 + 0x3b" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (+ "+") (number_literal "0x3b")) () ")")))) (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "uVar7 = (ulong)(bVar6 & 1);" (assignment_expression "uVar7 = (ulong)(bVar6 & 1)" (identifier "uVar7") (= "=") (call_expression "(ulong)(bVar6 & 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar6 & 1)" (( "(") (binary_expression "bVar6 & 1" (identifier "bVar6") (& "&") (number_literal "1")) () ")")))) (; ";")) (if_statement "if ((bVar6 & 1) == 0) {\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }" (if "if") (parenthesized_expression "((bVar6 & 1) == 0)" (( "(") (binary_expression "(bVar6 & 1) == 0" (parenthesized_expression "(bVar6 & 1)" (( "(") (binary_expression "bVar6 & 1" (identifier "bVar6") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");\n      }" ({ "{") (expression_statement "FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");" (call_expression "FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()")" (identifier "FUN_0017c650") (argument_list "("../../gold/symtab.cc",0x6b1,"operator()")" (( "(") (string_literal ""../../gold/symtab.cc"" (" """) (string_content "../../gold/symtab.cc") (" """)) (, ",") (number_literal "0x6b1") (, ",") (string_literal ""operator()"" (" """) (string_content "operator()") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }" (if "if") (parenthesized_expression "(*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3))" (( "(") (binary_expression "*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)" (pointer_expression "*(uint *)(param_3 + 3)" (* "*") (cast_expression "(uint *)(param_3 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 3)" (( "(") (binary_expression "param_3 + 3" (identifier "param_3") (+ "+") (number_literal "3")) () ")")))) (!= "!=") (pointer_expression "*(uint *)(param_2 + 3)" (* "*") (cast_expression "(uint *)(param_2 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")"))))) () ")")) (compound_statement "{\n        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));\n      }" ({ "{") (return_statement "return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));" (return "return") (call_expression "(ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3))" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3))" (( "(") (binary_expression "*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3)" (pointer_expression "*(uint *)(param_2 + 3)" (* "*") (cast_expression "(uint *)(param_2 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")")))) (< "<") (pointer_expression "*(uint *)(param_3 + 3)" (* "*") (cast_expression "(uint *)(param_3 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 3)" (( "(") (binary_expression "param_3 + 3" (identifier "param_3") (+ "+") (number_literal "3")) () ")"))))) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }" (if "if") (parenthesized_expression "(*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8))" (( "(") (binary_expression "*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)" (pointer_expression "*(uint *)(param_2 + 8)" (* "*") (cast_expression "(uint *)(param_2 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (pointer_expression "*(uint *)(param_3 + 8)" (* "*") (cast_expression "(uint *)(param_3 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));\n      }" ({ "{") (return_statement "return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));" (return "return") (call_expression "(ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8))" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8))" (( "(") (binary_expression "*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8)" (pointer_expression "*(uint *)(param_2 + 8)" (* "*") (cast_expression "(uint *)(param_2 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (< "<") (pointer_expression "*(uint *)(param_3 + 8)" (* "*") (cast_expression "(uint *)(param_3 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")"))))) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }" (if "if") (parenthesized_expression "(*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4)" (( "(") (binary_expression "*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4" (binary_expression "*(byte *)(param_2 + 7) >> 4" (pointer_expression "*(byte *)(param_2 + 7)" (* "*") (cast_expression "(byte *)(param_2 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 7)" (( "(") (binary_expression "param_2 + 7" (identifier "param_2") (+ "+") (number_literal "7")) () ")")))) (>> ">>") (number_literal "4")) (!= "!=") (binary_expression "*(byte *)(param_3 + 7) >> 4" (pointer_expression "*(byte *)(param_3 + 7)" (* "*") (cast_expression "(byte *)(param_3 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 7)" (( "(") (binary_expression "param_3 + 7" (identifier "param_3") (+ "+") (number_literal "7")) () ")")))) (>> ">>") (number_literal "4"))) () ")")) (compound_statement "{\n        if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }\n        if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }\n      }" ({ "{") (if_statement "if (*(byte *)(param_2 + 7) >> 4 == 2) {\n          return uVar7;\n        }" (if "if") (parenthesized_expression "(*(byte *)(param_2 + 7) >> 4 == 2)" (( "(") (binary_expression "*(byte *)(param_2 + 7) >> 4 == 2" (binary_expression "*(byte *)(param_2 + 7) >> 4" (pointer_expression "*(byte *)(param_2 + 7)" (* "*") (cast_expression "(byte *)(param_2 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 7)" (( "(") (binary_expression "param_2 + 7" (identifier "param_2") (+ "+") (number_literal "7")) () ")")))) (>> ">>") (number_literal "4")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n          return uVar7;\n        }" ({ "{") (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}"))) (if_statement "if (*(byte *)(param_3 + 7) >> 4 == 2) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(*(byte *)(param_3 + 7) >> 4 == 2)" (( "(") (binary_expression "*(byte *)(param_3 + 7) >> 4 == 2" (binary_expression "*(byte *)(param_3 + 7) >> 4" (pointer_expression "*(byte *)(param_3 + 7)" (* "*") (cast_expression "(byte *)(param_3 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 7)" (( "(") (binary_expression "param_3 + 7" (identifier "param_3") (+ "+") (number_literal "7")) () ")")))) (>> ">>") (number_literal "4")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (expression_statement "pcVar1 = (char *)*param_3;" (assignment_expression "pcVar1 = (char *)*param_3" (identifier "pcVar1") (= "=") (cast_expression "(char *)*param_3" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (; ";")) (expression_statement "pcVar5 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar5 = (char *)0xffffffffffffffff" (identifier "pcVar5") (= "=") (cast_expression "(char *)0xffffffffffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffffffffffff"))) (; ";")) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" (identifier "local_58") (= "=") (identifier "local_48")) (; ";")) (if_statement "if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }" (if "if") (parenthesized_expression "(pcVar1 != (char *)0x0)" (( "(") (binary_expression "pcVar1 != (char *)0x0" (identifier "pcVar1") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }" ({ "{") (expression_statement "sVar4 = strlen(pcVar1);" (assignment_expression "sVar4 = strlen(pcVar1)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar1)" (identifier "strlen") (argument_list "(pcVar1)" (( "(") (identifier "pcVar1") () ")")))) (; ";")) (expression_statement "pcVar5 = pcVar1 + sVar4;" (assignment_expression "pcVar5 = pcVar1 + sVar4" (identifier "pcVar5") (= "=") (binary_expression "pcVar1 + sVar4" (identifier "pcVar1") (+ "+") (identifier "sVar4"))) (; ";")) (} "}"))) (expression_statement "FUN_001665c0(&local_58,pcVar1,pcVar5);" (call_expression "FUN_001665c0(&local_58,pcVar1,pcVar5)" (identifier "FUN_001665c0") (argument_list "(&local_58,pcVar1,pcVar5)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "pcVar1") (, ",") (identifier "pcVar5") () ")"))) (; ";")) (expression_statement "pcVar1 = (char *)*param_2;" (assignment_expression "pcVar1 = (char *)*param_2" (identifier "pcVar1") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "local_78 = local_68;" (assignment_expression "local_78 = local_68" (identifier "local_78") (= "=") (identifier "local_68")) (; ";")) (expression_statement "pcVar5 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar5 = (char *)0xffffffffffffffff" (identifier "pcVar5") (= "=") (cast_expression "(char *)0xffffffffffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffffffffffff"))) (; ";")) (if_statement "if (pcVar1 != (char *)0x0) {\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }" (if "if") (parenthesized_expression "(pcVar1 != (char *)0x0)" (( "(") (binary_expression "pcVar1 != (char *)0x0" (identifier "pcVar1") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        sVar4 = strlen(pcVar1);\n        pcVar5 = pcVar1 + sVar4;\n      }" ({ "{") (expression_statement "sVar4 = strlen(pcVar1);" (assignment_expression "sVar4 = strlen(pcVar1)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar1)" (identifier "strlen") (argument_list "(pcVar1)" (( "(") (identifier "pcVar1") () ")")))) (; ";")) (expression_statement "pcVar5 = pcVar1 + sVar4;" (assignment_expression "pcVar5 = pcVar1 + sVar4" (identifier "pcVar5") (= "=") (binary_expression "pcVar1 + sVar4" (identifier "pcVar1") (+ "+") (identifier "sVar4"))) (; ";")) (} "}"))) (expression_statement "FUN_001665c0(&local_78,pcVar1,pcVar5);" (call_expression "FUN_001665c0(&local_78,pcVar1,pcVar5)" (identifier "FUN_001665c0") (argument_list "(&local_78,pcVar1,pcVar5)" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (identifier "pcVar1") (, ",") (identifier "pcVar5") () ")"))) (; ";")) (expression_statement "puVar8 = local_58;" (assignment_expression "puVar8 = local_58" (identifier "puVar8") (= "=") (identifier "local_58")) (; ";")) (expression_statement "puVar2 = local_78;" (assignment_expression "puVar2 = local_78" (identifier "puVar2") (= "=") (identifier "local_78")) (; ";")) (expression_statement "__n = local_50;" (assignment_expression "__n = local_50" (identifier "__n") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (local_70 <= local_50) {\n        __n = local_70;\n      }" (if "if") (parenthesized_expression "(local_70 <= local_50)" (( "(") (binary_expression "local_70 <= local_50" (identifier "local_70") (<= "<=") (identifier "local_50")) () ")")) (compound_statement "{\n        __n = local_70;\n      }" ({ "{") (expression_statement "__n = local_70;" (assignment_expression "__n = local_70" (identifier "__n") (= "=") (identifier "local_70")) (; ";")) (} "}"))) (if_statement "if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }\n      else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }" (if "if") (parenthesized_expression "((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0))" (( "(") (binary_expression "(__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)" (parenthesized_expression "(__n == 0)" (( "(") (binary_expression "__n == 0" (identifier "__n") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)" (( "(") (comma_expression "uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0" (assignment_expression "uVar3 = memcmp(local_78,local_58,__n)" (identifier "uVar3") (= "=") (call_expression "memcmp(local_78,local_58,__n)" (identifier "memcmp") (argument_list "(local_78,local_58,__n)" (( "(") (identifier "local_78") (, ",") (identifier "local_58") (, ",") (identifier "__n") () ")")))) (, ",") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        local_70 = local_70 - local_50;\n        if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }\n      }" ({ "{") (expression_statement "local_70 = local_70 - local_50;" (assignment_expression "local_70 = local_70 - local_50" (identifier "local_70") (= "=") (binary_expression "local_70 - local_50" (identifier "local_70") (- "-") (identifier "local_50"))) (; ";")) (if_statement "if ((long)local_70 < 0x80000000) {\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }\n        else {\n          uVar7 = 0;\n        }" (if "if") (parenthesized_expression "((long)local_70 < 0x80000000)" (( "(") (binary_expression "(long)local_70 < 0x80000000" (cast_expression "(long)local_70" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_70")) (< "<") (number_literal "0x80000000")) () ")")) (compound_statement "{\n          if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }\n        }" ({ "{") (if_statement "if (-0x80000001 < (long)local_70) {\n            uVar7 = local_70 >> 0x1f & 1;\n          }" (if "if") (parenthesized_expression "(-0x80000001 < (long)local_70)" (( "(") (binary_expression "-0x80000001 < (long)local_70" (number_literal "-0x80000001") (< "<") (cast_expression "(long)local_70" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_70"))) () ")")) (compound_statement "{\n            uVar7 = local_70 >> 0x1f & 1;\n          }" ({ "{") (expression_statement "uVar7 = local_70 >> 0x1f & 1;" (assignment_expression "uVar7 = local_70 >> 0x1f & 1" (identifier "uVar7") (= "=") (binary_expression "local_70 >> 0x1f & 1" (binary_expression "local_70 >> 0x1f" (identifier "local_70") (>> ">>") (number_literal "0x1f")) (& "&") (number_literal "1"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          uVar7 = 0;\n        }" (else "else") (compound_statement "{\n          uVar7 = 0;\n        }" ({ "{") (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }" (else "else") (compound_statement "{\n        uVar7 = (ulong)(uVar3 >> 0x1f);\n      }" ({ "{") (expression_statement "uVar7 = (ulong)(uVar3 >> 0x1f);" (assignment_expression "uVar7 = (ulong)(uVar3 >> 0x1f)" (identifier "uVar7") (= "=") (call_expression "(ulong)(uVar3 >> 0x1f)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar3 >> 0x1f)" (( "(") (binary_expression "uVar3 >> 0x1f" (identifier "uVar3") (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (} "}")))) (if_statement "if (puVar2 != local_68) {\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }" (if "if") (parenthesized_expression "(puVar2 != local_68)" (( "(") (binary_expression "puVar2 != local_68" (identifier "puVar2") (!= "!=") (identifier "local_68")) () ")")) (compound_statement "{\n        FUN_002dac70(puVar2);\n        puVar8 = local_58;\n      }" ({ "{") (expression_statement "FUN_002dac70(puVar2);" (call_expression "FUN_002dac70(puVar2)" (identifier "FUN_002dac70") (argument_list "(puVar2)" (( "(") (identifier "puVar2") () ")"))) (; ";")) (expression_statement "puVar8 = local_58;" (assignment_expression "puVar8 = local_58" (identifier "puVar8") (= "=") (identifier "local_58")) (; ";")) (} "}"))) (if_statement "if (puVar8 != local_48) {\n        FUN_002dac70(puVar8);\n      }" (if "if") (parenthesized_expression "(puVar8 != local_48)" (( "(") (binary_expression "puVar8 != local_48" (identifier "puVar8") (!= "!=") (identifier "local_48")) () ")")) (compound_statement "{\n        FUN_002dac70(puVar8);\n      }" ({ "{") (expression_statement "FUN_002dac70(puVar8);" (call_expression "FUN_002dac70(puVar8)" (identifier "FUN_002dac70") (argument_list "(puVar8)" (( "(") (identifier "puVar8") () ")"))) (; ";")) (} "}"))) (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_0017c650("../../gold/symtab.h",0xaa,"shndx");" (call_expression "FUN_0017c650("../../gold/symtab.h",0xaa,"shndx")" (identifier "FUN_0017c650") (argument_list "("../../gold/symtab.h",0xaa,"shndx")" (( "(") (string_literal ""../../gold/symtab.h"" (" """) (string_content "../../gold/symtab.h") (" """)) (, ",") (number_literal "0xaa") (, ",") (string_literal ""shndx"" (" """) (string_content "shndx") (" """)) () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: bool operator()(Weak_alias_sorter<32> * this, Sized_symbol<32> * s1,
   Sized_symbol<32> * s2) */

bool __thiscall
gold::type_1<32>::function_1()
          (type_1<32> *this,type_2<32> *s1,type_2<32> *s2)

{
  type_3 var_9;
  type_3 var_8;
  char *var_11;
  type_4 _Var4;
  int var_18;
  size_t var_13;
  type_5 var_10;
  char *pcVar8;
  type_6 var_16;
  type_5 var_7;
  bool bVar10;
  type_7 var_19;
  type_4 _Var12;
  bool bVar13;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> var_4;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> var_5;
  
  if (((s1->super_Symbol).field_0x3a & 7) == 0) {
    var_9 = (s1->super_Symbol).u2_.shndx;
    if (((s1->super_Symbol).field_0x3b & 0x20) == 0) {
                    /* WARNING: Subroutine does not return */
      var_6("../../gold/symtab.cc",0x6af,"operator()");
    }
    if (((s2->super_Symbol).field_0x3a & 7) == 0) {
      var_8 = (s2->super_Symbol).u2_.shndx;
      var_7 = (type_5)(s2->super_Symbol).field_0x3b >> 5;
      bVar10 = (bool)(var_7 & 1);
      if ((var_7 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
        var_6("../../gold/symtab.cc",0x6b1,"operator()");
      }
      if (var_8 == var_9) {
        bVar13 = s1->value_ < s2->value_;
        if (s1->value_ == s2->value_) {
          var_7 = (type_5)(s1->super_Symbol).field_0x38 >> 4;
          var_10 = (type_5)(s2->super_Symbol).field_0x38 >> 4;
          if (var_7 != var_10) {
            if (var_7 == 2) {
              return bVar10;
            }
            if (var_10 == 2) {
              return false;
            }
          }
          var_11 = (s2->super_Symbol).name_;
          pcVar8 = (char *)0xffffffffffffffff;
          var_5._M_dataplus._M_p = (pointer)&var_5.field_2;
          if (var_11 != (char *)0x0) {
            var_13 = var_12(var_11);
            pcVar8 = var_11 + var_13;
          }
          std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
          var_14<var_15*>(&var_5,var_11,pcVar8);
          var_11 = (s1->super_Symbol).name_;
          var_4._M_dataplus._M_p = (pointer)&var_4.field_2;
          pcVar8 = (char *)0xffffffffffffffff;
          if (var_11 != (char *)0x0) {
            var_13 = var_12(var_11);
            pcVar8 = var_11 + var_13;
          }
                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */
          std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
          var_14<var_15*>(&var_4,var_11,pcVar8);
          _Var12._M_p = var_5._M_dataplus._M_p;
          _Var4._M_p = var_4._M_dataplus._M_p;
          var_16 = var_5._M_string_length;
          if (var_4._M_string_length <= var_5._M_string_length) {
            var_16 = var_4._M_string_length;
          }
          if ((var_16 == 0) ||
             (var_18 = var_17(var_4._M_dataplus._M_p,var_5._M_dataplus._M_p,var_16), var_18 == 0))
          {
            var_19 = var_4._M_string_length - var_5._M_string_length;
            if ((long)var_19 < 0x80000000) {
              bVar13 = bVar10;
              if (-0x80000001 < (long)var_19) {
                bVar13 = (bool)((type_5)(var_19 >> 0x1f) & 1);
              }
            }
            else {
              bVar13 = false;
            }
          }
          else {
            bVar13 = var_20((type_3)var_18 >> 0x1f,0);
          }
          if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_21
               *)_Var4._M_p != &var_4.field_2) {
            var_22(_Var4._M_p);
            _Var12._M_p = var_5._M_dataplus._M_p;
          }
          if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_21
               *)_Var12._M_p != &var_5.field_2) {
            var_22(_Var12._M_p);
          }
        }
      }
      else {
        bVar13 = var_9 < var_8;
      }
      return bVar13;
    }
  }
                    /* WARNING: Subroutine does not return */
  var_6("../../gold/symtab.h",0xaa,"shndx");
}


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

ulong MASKED(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)

{
  char *pcVar1;
  undefined1 *puVar2;
  uint uVar3;
  size_t sVar4;
  char *pcVar5;
  ulong __n;
  byte bVar6;
  ulong uVar7;
  undefined1 *puVar8;
  undefined1 *local_78;
  ulong local_70;
  undefined1 local_68 [16];
  undefined1 *local_58;
  ulong local_50;
  undefined1 local_48 [24];
  
  if ((*(byte *)((long)param_2 + 0x3a) & 7) == 0) {
    if ((*(byte *)((long)param_2 + 0x3b) & 0x20) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/symtab.cc",0x6af,"operator()");
    }
    if ((*(byte *)((long)param_3 + 0x3a) & 7) == 0) {
      bVar6 = *(byte *)((long)param_3 + 0x3b) >> 5;
      uVar7 = (ulong)(bVar6 & 1);
      if ((bVar6 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_0017c650("../../gold/symtab.cc",0x6b1,"operator()");
      }
      if (*(uint *)(param_3 + 3) != *(uint *)(param_2 + 3)) {
        return (ulong)(*(uint *)(param_2 + 3) < *(uint *)(param_3 + 3));
      }
      if (*(uint *)(param_2 + 8) != *(uint *)(param_3 + 8)) {
        return (ulong)(*(uint *)(param_2 + 8) < *(uint *)(param_3 + 8));
      }
      if (*(byte *)(param_2 + 7) >> 4 != *(byte *)(param_3 + 7) >> 4) {
        if (*(byte *)(param_2 + 7) >> 4 == 2) {
          return uVar7;
        }
        if (*(byte *)(param_3 + 7) >> 4 == 2) {
          return 0;
        }
      }
      pcVar1 = (char *)*param_3;
      pcVar5 = (char *)0xffffffffffffffff;
      local_58 = local_48;
      if (pcVar1 != (char *)0x0) {
        sVar4 = strlen(pcVar1);
        pcVar5 = pcVar1 + sVar4;
      }
      FUN_001665c0(&local_58,pcVar1,pcVar5);
      pcVar1 = (char *)*param_2;
      local_78 = local_68;
      pcVar5 = (char *)0xffffffffffffffff;
      if (pcVar1 != (char *)0x0) {
        sVar4 = strlen(pcVar1);
        pcVar5 = pcVar1 + sVar4;
      }
                    /* try { // try from 00285a96 to 00285a9a has its CatchHandler @ 00285b8c */
      FUN_001665c0(&local_78,pcVar1,pcVar5);
      puVar8 = local_58;
      puVar2 = local_78;
      __n = local_50;
      if (local_70 <= local_50) {
        __n = local_70;
      }
      if ((__n == 0) || (uVar3 = memcmp(local_78,local_58,__n), uVar3 == 0)) {
        local_70 = local_70 - local_50;
        if ((long)local_70 < 0x80000000) {
          if (-0x80000001 < (long)local_70) {
            uVar7 = local_70 >> 0x1f & 1;
          }
        }
        else {
          uVar7 = 0;
        }
      }
      else {
        uVar7 = (ulong)(uVar3 >> 0x1f);
      }
      if (puVar2 != local_68) {
        FUN_002dac70(puVar2);
        puVar8 = local_58;
      }
      if (puVar8 != local_48) {
        FUN_002dac70(puVar8);
      }
      return uVar7;
    }
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/symtab.h",0xaa,"shndx");
}

