
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void parse_section_start(General_options * this, char * param_1, char *
   arg, Command_line * param_3) */

void __thiscall
gold::General_options::parse_section_start
          (General_options *this,char *param_1,char *arg,Command_line *param_3)

{
  byte *pbVar1;
  _Base_ptr *pp_Var2;
  byte bVar3;
  _Alloc_hider __s2;
  char cVar4;
  int iVar5;
  char *pcVar6;
  iterator iVar7;
  long lVar8;
  _Base_ptr __n;
  _Base_ptr p_Var9;
  byte *pbVar10;
  const_iterator __pos;
  _Base_ptr p_Var11;
  long lVar12;
  bool bVar13;
  pointer local_80;
  tuple<> local_61;
  _Head_base<0,_const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&,_false>
  local_60;
  string section_name;
  
  pcVar6 = strchr(arg,0x3d);
  if (pcVar6 == (char *)0x0) {
    pcVar6 = (char *)gettext("invalid argument to --section-start; must be SECTION=ADDRESS");
    gold_error(pcVar6);
    return;
  }
  section_name._M_dataplus._M_p = (pointer)&section_name.field_2;
  pbVar1 = (byte *)(pcVar6 + 1);
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&section_name,arg,pcVar6);
  cVar4 = pcVar6[1];
  pbVar10 = pbVar1;
  if (cVar4 == '0') {
    if ((pcVar6[2] & 0xdfU) == 0x58) {
      pbVar10 = (byte *)(pcVar6 + 3);
      cVar4 = pcVar6[3];
      goto LAB_001baf6f;
    }
  }
  else {
LAB_001baf6f:
    if (cVar4 == '\0') {
      pcVar6 = (char *)gettext("--section-start address missing");
      gold_error(pcVar6);
      goto LAB_001bb10e;
    }
  }
                    /* try { // try from 001baf77 to 001bb148 has its CatchHandler @ 001bb1a7 */
  hex_init();
  __s2 = section_name._M_dataplus;
  if (*pbVar10 != 0) {
    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];
    if (bVar3 != 99) {
      lVar12 = 0;
      do {
        pbVar10 = pbVar10 + 1;
        lVar12 = lVar12 * 0x10 + (ulong)bVar3;
        if (*pbVar10 == 0) goto LAB_001bafbe;
        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];
      } while (bVar3 != 99);
    }
    pcVar6 = (char *)gettext("--section-start argument %s is not a valid hex number");
    gold_error(pcVar6,pbVar1);
LAB_001bb10e:
    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
         *)section_name._M_dataplus._M_p != &section_name.field_2) {
      operator_delete(section_name._M_dataplus._M_p);
    }
    return;
  }
  lVar12 = 0;
LAB_001bafbe:
  p_Var11 = (this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
  __pos._M_node = &(this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header;
  if (p_Var11 != (_Base_ptr)0x0) {
    local_80 = section_name._M_dataplus._M_p;
    iVar7._M_node = __pos._M_node;
    do {
      while( true ) {
        p_Var9 = p_Var11[1]._M_parent;
        __n = (_Base_ptr)section_name._M_string_length;
        if (p_Var9 <= section_name._M_string_length) {
          __n = p_Var9;
        }
        if ((__n != (_Base_ptr)0x0) &&
           (iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0)) break;
        lVar8 = (long)p_Var9 - section_name._M_string_length;
        if (lVar8 < 0x80000000) {
          if (-0x80000001 < lVar8) {
            iVar5 = (int)lVar8;
            break;
          }
          goto LAB_001baff0;
        }
LAB_001bb03c:
        pp_Var2 = &p_Var11->_M_left;
        iVar7._M_node = p_Var11;
        p_Var11 = *pp_Var2;
        if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001bb048;
      }
      if (-1 < iVar5) goto LAB_001bb03c;
LAB_001baff0:
      p_Var11 = p_Var11->_M_right;
    } while (p_Var11 != (_Base_ptr)0x0);
LAB_001bb048:
    bVar13 = __pos._M_node != iVar7._M_node;
    __pos._M_node = iVar7._M_node;
    if (bVar13) {
      p_Var11 = iVar7._M_node[1]._M_parent;
      p_Var9 = p_Var11;
      if (section_name._M_string_length <= p_Var11) {
        p_Var9 = (_Base_ptr)section_name._M_string_length;
      }
      if ((p_Var9 == (_Base_ptr)0x0) ||
         (iVar5 = memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9), iVar5 == 0)) {
        lVar8 = section_name._M_string_length - (long)p_Var11;
        if (0x7fffffff < lVar8) goto LAB_001bb0ca;
        if (lVar8 < -0x80000000) goto LAB_001bb093;
        iVar5 = (int)lVar8;
      }
      if (-1 < iVar5) goto LAB_001bb0ca;
    }
  }
LAB_001bb093:
  local_60._M_head_impl = &section_name;
  iVar7 = std::
          _Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>
          ::
          _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>,_std::tuple<>_>
                    (&(this->section_starts_)._M_t,__pos,
                     (piecewise_construct_t *)&std::piecewise_construct,
                     (tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>
                      *)&local_60,&local_61);
  local_80 = section_name._M_dataplus._M_p;
LAB_001bb0ca:
  *(long *)(iVar7._M_node + 2) = lVar12;
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)local_80 == &section_name.field_2) {
    return;
  }
  operator_delete(local_80);
  return;
}



void FUN_001baf10(long param_1,undefined8 param_2,char *param_3)

{
  byte *pbVar1;
  long *plVar2;
  byte bVar3;
  ulong uVar4;
  undefined1 *__s2;
  char cVar5;
  int iVar6;
  char *pcVar7;
  long lVar8;
  undefined8 uVar9;
  long lVar10;
  ulong uVar11;
  byte *pbVar12;
  long lVar13;
  long lVar14;
  long lVar15;
  bool bVar16;
  undefined1 *local_80;
  undefined1 local_61;
  undefined1 **local_60;
  undefined1 *local_58;
  ulong local_50;
  undefined1 local_48 [24];
  
  pcVar7 = strchr(param_3,0x3d);
  if (pcVar7 == (char *)0x0) {
    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");
    FUN_001690a0(uVar9);
    return;
  }
  local_58 = local_48;
  pbVar1 = (byte *)(pcVar7 + 1);
  FUN_0015cbe0(&local_58,param_3,pcVar7);
  cVar5 = pcVar7[1];
  pbVar12 = pbVar1;
  if (cVar5 == '0') {
    if ((pcVar7[2] & 0xdfU) == 0x58) {
      pbVar12 = (byte *)(pcVar7 + 3);
      cVar5 = pcVar7[3];
      goto LAB_001baf6f;
    }
  }
  else {
LAB_001baf6f:
    if (cVar5 == '\0') {
      uVar9 = gettext("--section-start address missing");
      FUN_001690a0(uVar9);
      goto LAB_001bb10e;
    }
  }
                    /* try { // try from 001baf77 to 001bb148 has its CatchHandler @ 001bb1a7 */
  FUN_00274680();
  __s2 = local_58;
  if (*pbVar12 != 0) {
    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];
    if (bVar3 != 99) {
      lVar15 = 0;
      do {
        pbVar12 = pbVar12 + 1;
        lVar15 = lVar15 * 0x10 + (ulong)bVar3;
        if (*pbVar12 == 0) goto LAB_001bafbe;
        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];
      } while (bVar3 != 99);
    }
    uVar9 = gettext("--section-start argument %s is not a valid hex number");
    FUN_001690a0(uVar9,pbVar1);
LAB_001bb10e:
    if (local_58 != local_48) {
      FUN_00276d20();
    }
    return;
  }
  lVar15 = 0;
LAB_001bafbe:
  lVar13 = param_1 + 0x9278;
  if (*(long *)(param_1 + 0x9280) != 0) {
    local_80 = local_58;
    lVar8 = lVar13;
    lVar14 = *(long *)(param_1 + 0x9280);
    do {
      while( true ) {
        uVar4 = *(ulong *)(lVar14 + 0x28);
        uVar11 = local_50;
        if (uVar4 <= local_50) {
          uVar11 = uVar4;
        }
        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))
        break;
        lVar10 = uVar4 - local_50;
        if (lVar10 < 0x80000000) {
          if (-0x80000001 < lVar10) {
            iVar6 = (int)lVar10;
            break;
          }
          goto LAB_001baff0;
        }
LAB_001bb03c:
        plVar2 = (long *)(lVar14 + 0x10);
        lVar8 = lVar14;
        lVar14 = *plVar2;
        if (*plVar2 == 0) goto LAB_001bb048;
      }
      if (-1 < iVar6) goto LAB_001bb03c;
LAB_001baff0:
      lVar14 = *(long *)(lVar14 + 0x18);
    } while (lVar14 != 0);
LAB_001bb048:
    bVar16 = lVar13 != lVar8;
    lVar13 = lVar8;
    if (bVar16) {
      uVar4 = *(ulong *)(lVar8 + 0x28);
      uVar11 = uVar4;
      if (local_50 <= uVar4) {
        uVar11 = local_50;
      }
      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {
        lVar14 = local_50 - uVar4;
        if (0x7fffffff < lVar14) goto LAB_001bb0ca;
        if (lVar14 < -0x80000000) goto LAB_001bb093;
        iVar6 = (int)lVar14;
      }
      if (-1 < iVar6) goto LAB_001bb0ca;
    }
  }
LAB_001bb093:
  local_60 = &local_58;
  lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61);
  local_80 = local_58;
LAB_001bb0ca:
  *(long *)(lVar8 + 0x40) = lVar15;
  if (local_80 == local_48) {
    return;
  }
  FUN_00276d20(local_80);
  return;
}


PUSH R15
MOV ESI,0x3d
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RDX
SUB RSP,0x58
MOV qword ptr [RSP + 0x10],RDI
MOV RDI,RDX
CALL 0x0013e6e0
TEST RAX,RAX
JZ 0x001bb170
MOV R14,RAX
LEA RBP,[RSP + 0x30]
MOV RSI,RBX
LEA RAX,[RBP + 0x10]
MOV RDX,R14
LEA R12,[R14 + 0x1]
MOV RDI,RBP
MOV qword ptr [RSP + 0x30],RAX
MOV RBX,R12
CALL 0x0015cbe0
MOVZX EAX,byte ptr [R14 + 0x1]
CMP AL,0x30
JZ 0x001bb150
TEST AL,AL
JZ 0x001bb0f8
CALL 0x00274680
MOVZX EAX,byte ptr [RBX]
TEST AL,AL
JZ 0x001bb19f
LEA RDX,[0x3284e0]
MOVZX EAX,byte ptr [RDX + RAX*0x1]
CMP AL,0x63
JZ 0x001bb130
XOR R14D,R14D
JMP 0x001bafac
MOVZX EAX,byte ptr [RDX + RAX*0x1]
CMP AL,0x63
JZ 0x001bb130
SHL R14,0x4
ADD RBX,0x1
ADD R14,RAX
MOVZX EAX,byte ptr [RBX]
TEST AL,AL
JNZ 0x001bafa0
MOV RAX,qword ptr [RSP + 0x10]
MOV R13,qword ptr [RAX + 0x9280]
LEA RBX,[RAX + 0x9278]
MOV qword ptr [RSP + 0x18],RBX
TEST R13,R13
JZ 0x001bb195
MOV RAX,qword ptr [RSP + 0x30]
MOV R15,qword ptr [RSP + 0x38]
MOV qword ptr [RSP + 0x8],RAX
JMP 0x001baff9
MOV R13,qword ptr [R13 + 0x18]
TEST R13,R13
JZ 0x001bb048
MOV R12,qword ptr [R13 + 0x28]
MOV RDX,R15
CMP R12,R15
CMOVBE RDX,R12
TEST RDX,RDX
JZ 0x001bb01e
MOV RDI,qword ptr [R13 + 0x20]
MOV RSI,qword ptr [RSP + 0x8]
CALL 0x0013e840
TEST EAX,EAX
JNZ 0x001bb038
MOV RCX,R12
SUB RCX,R15
CMP RCX,0x7fffffff
JG 0x001bb03c
CMP RCX,-0x80000000
JL 0x001baff0
MOV EAX,ECX
TEST EAX,EAX
JS 0x001baff0
MOV RBX,R13
MOV R13,qword ptr [R13 + 0x10]
TEST R13,R13
JNZ 0x001baff9
CMP qword ptr [RSP + 0x18],RBX
JZ 0x001bb093
MOV R12,qword ptr [RBX + 0x28]
CMP R15,R12
MOV RDX,R12
CMOVBE RDX,R15
TEST RDX,RDX
JZ 0x001bb074
MOV RSI,qword ptr [RBX + 0x20]
MOV RDI,qword ptr [RSP + 0x8]
CALL 0x0013e840
TEST EAX,EAX
JNZ 0x001bb08f
MOV R9,R15
SUB R9,R12
CMP R9,0x7fffffff
JG 0x001bb0ca
CMP R9,-0x80000000
JL 0x001bb093
MOV EAX,R9D
TEST EAX,EAX
JNS 0x001bb0ca
MOV RDI,qword ptr [RSP + 0x10]
LEA RCX,[RSP + 0x28]
LEA R8,[RSP + 0x27]
MOV RSI,RBX
LEA RDX,[0x317ac0]
MOV qword ptr [RSP + 0x28],RBP
ADD RDI,0x9270
CALL 0x001bf2b0
MOV RBX,RAX
MOV RAX,qword ptr [RSP + 0x30]
MOV qword ptr [RSP + 0x8],RAX
MOV RAX,qword ptr [RSP + 0x8]
ADD RBP,0x10
MOV qword ptr [RBX + 0x40],R14
CMP RAX,RBP
JZ 0x001bb121
MOV RDI,RAX
CALL 0x00276d20
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA RDI,[0x3175d0]
CALL 0x0013e320
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001690a0
MOV RDI,qword ptr [RSP + 0x30]
ADD RBP,0x10
CMP RDI,RBP
JZ 0x001bb121
CALL 0x00276d20
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA RDI,[0x3175f0]
CALL 0x0013e320
MOV RSI,R12
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001690a0
JMP 0x001bb10e
MOVZX EAX,byte ptr [R14 + 0x2]
AND EAX,0xffffffdf
CMP AL,0x58
JNZ 0x001baf77
LEA RBX,[R14 + 0x3]
MOVZX EAX,byte ptr [R14 + 0x3]
JMP 0x001baf6f
LEA RDI,[0x317590]
CALL 0x0013e320
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001690a0
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RBX,qword ptr [RSP + 0x18]
JMP 0x001bb093
XOR R14D,R14D
JMP 0x001bafbe
(translation_unit "void FUN_001baf10(long param_1,undefined8 param_2,char *param_3)\n\n{\n  byte *pbVar1;\n  long *plVar2;\n  byte bVar3;\n  ulong uVar4;\n  undefined1 *__s2;\n  char cVar5;\n  int iVar6;\n  char *pcVar7;\n  long lVar8;\n  undefined8 uVar9;\n  long lVar10;\n  ulong uVar11;\n  byte *pbVar12;\n  long lVar13;\n  long lVar14;\n  long lVar15;\n  bool bVar16;\n  undefined1 *local_80;\n  undefined1 local_61;\n  undefined1 **local_60;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  pcVar7 = strchr(param_3,0x3d);\n  if (pcVar7 == (char *)0x0) {\n    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    FUN_001690a0(uVar9);\n    return;\n  }\n  local_58 = local_48;\n  pbVar1 = (byte *)(pcVar7 + 1);\n  FUN_0015cbe0(&local_58,param_3,pcVar7);\n  cVar5 = pcVar7[1];\n  pbVar12 = pbVar1;\n  if (cVar5 == '0') {\n    if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }\n                    /* try { // try from 001baf77 to 001bb148 has its CatchHandler @ 001bb1a7 */\n  FUN_00274680();\n  __s2 = local_58;\n  if (*pbVar12 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n    if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }\n    uVar9 = gettext("--section-start argument %s is not a valid hex number");\n    FUN_001690a0(uVar9,pbVar1);\nLAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }\n    return;\n  }\n  lVar15 = 0;\nLAB_001bafbe:\n  lVar13 = param_1 + 0x9278;\n  if (*(long *)(param_1 + 0x9280) != 0) {\n    local_80 = local_58;\n    lVar8 = lVar13;\n    lVar14 = *(long *)(param_1 + 0x9280);\n    do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);\nLAB_001bb048:\n    bVar16 = lVar13 != lVar8;\n    lVar13 = lVar8;\n    if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }\n  }\nLAB_001bb093:\n  local_60 = &local_58;\n  lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61);\n  local_80 = local_58;\nLAB_001bb0ca:\n  *(long *)(lVar8 + 0x40) = lVar15;\n  if (local_80 == local_48) {\n    return;\n  }\n  FUN_00276d20(local_80);\n  return;\n}\n\n" (function_definition "void FUN_001baf10(long param_1,undefined8 param_2,char *param_3)\n\n{\n  byte *pbVar1;\n  long *plVar2;\n  byte bVar3;\n  ulong uVar4;\n  undefined1 *__s2;\n  char cVar5;\n  int iVar6;\n  char *pcVar7;\n  long lVar8;\n  undefined8 uVar9;\n  long lVar10;\n  ulong uVar11;\n  byte *pbVar12;\n  long lVar13;\n  long lVar14;\n  long lVar15;\n  bool bVar16;\n  undefined1 *local_80;\n  undefined1 local_61;\n  undefined1 **local_60;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  pcVar7 = strchr(param_3,0x3d);\n  if (pcVar7 == (char *)0x0) {\n    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    FUN_001690a0(uVar9);\n    return;\n  }\n  local_58 = local_48;\n  pbVar1 = (byte *)(pcVar7 + 1);\n  FUN_0015cbe0(&local_58,param_3,pcVar7);\n  cVar5 = pcVar7[1];\n  pbVar12 = pbVar1;\n  if (cVar5 == '0') {\n    if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }\n                    /* try { // try from 001baf77 to 001bb148 has its CatchHandler @ 001bb1a7 */\n  FUN_00274680();\n  __s2 = local_58;\n  if (*pbVar12 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n    if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }\n    uVar9 = gettext("--section-start argument %s is not a valid hex number");\n    FUN_001690a0(uVar9,pbVar1);\nLAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }\n    return;\n  }\n  lVar15 = 0;\nLAB_001bafbe:\n  lVar13 = param_1 + 0x9278;\n  if (*(long *)(param_1 + 0x9280) != 0) {\n    local_80 = local_58;\n    lVar8 = lVar13;\n    lVar14 = *(long *)(param_1 + 0x9280);\n    do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);\nLAB_001bb048:\n    bVar16 = lVar13 != lVar8;\n    lVar13 = lVar8;\n    if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }\n  }\nLAB_001bb093:\n  local_60 = &local_58;\n  lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61);\n  local_80 = local_58;\nLAB_001bb0ca:\n  *(long *)(lVar8 + 0x40) = lVar15;\n  if (local_80 == local_48) {\n    return;\n  }\n  FUN_00276d20(local_80);\n  return;\n}" primitive_type (function_declarator "FUN_001baf10(long param_1,undefined8 param_2,char *param_3)" identifier (parameter_list "(long param_1,undefined8 param_2,char *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  long *plVar2;\n  byte bVar3;\n  ulong uVar4;\n  undefined1 *__s2;\n  char cVar5;\n  int iVar6;\n  char *pcVar7;\n  long lVar8;\n  undefined8 uVar9;\n  long lVar10;\n  ulong uVar11;\n  byte *pbVar12;\n  long lVar13;\n  long lVar14;\n  long lVar15;\n  bool bVar16;\n  undefined1 *local_80;\n  undefined1 local_61;\n  undefined1 **local_60;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  pcVar7 = strchr(param_3,0x3d);\n  if (pcVar7 == (char *)0x0) {\n    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    FUN_001690a0(uVar9);\n    return;\n  }\n  local_58 = local_48;\n  pbVar1 = (byte *)(pcVar7 + 1);\n  FUN_0015cbe0(&local_58,param_3,pcVar7);\n  cVar5 = pcVar7[1];\n  pbVar12 = pbVar1;\n  if (cVar5 == '0') {\n    if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }\n                    /* try { // try from 001baf77 to 001bb148 has its CatchHandler @ 001bb1a7 */\n  FUN_00274680();\n  __s2 = local_58;\n  if (*pbVar12 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n    if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }\n    uVar9 = gettext("--section-start argument %s is not a valid hex number");\n    FUN_001690a0(uVar9,pbVar1);\nLAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }\n    return;\n  }\n  lVar15 = 0;\nLAB_001bafbe:\n  lVar13 = param_1 + 0x9278;\n  if (*(long *)(param_1 + 0x9280) != 0) {\n    local_80 = local_58;\n    lVar8 = lVar13;\n    lVar14 = *(long *)(param_1 + 0x9280);\n    do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);\nLAB_001bb048:\n    bVar16 = lVar13 != lVar8;\n    lVar13 = lVar8;\n    if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }\n  }\nLAB_001bb093:\n  local_60 = &local_58;\n  lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61);\n  local_80 = local_58;\nLAB_001bb0ca:\n  *(long *)(lVar8 + 0x40) = lVar15;\n  if (local_80 == local_48) {\n    return;\n  }\n  FUN_00276d20(local_80);\n  return;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "undefined1 *__s2;" type_identifier (pointer_declarator "*__s2" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "undefined1 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "undefined1 local_61;" type_identifier identifier ;) (declaration "undefined1 **local_60;" type_identifier (pointer_declarator "**local_60" * (pointer_declarator "*local_60" * identifier)) ;) (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 ]) ;) (expression_statement "pcVar7 = strchr(param_3,0x3d);" (assignment_expression "pcVar7 = strchr(param_3,0x3d)" identifier = (call_expression "strchr(param_3,0x3d)" identifier (argument_list "(param_3,0x3d)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    FUN_001690a0(uVar9);\n    return;\n  }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    FUN_001690a0(uVar9);\n    return;\n  }" { (expression_statement "uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");" (assignment_expression "uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS")" identifier = (call_expression "gettext("invalid argument to --section-start; must be SECTION=ADDRESS")" identifier (argument_list "("invalid argument to --section-start; must be SECTION=ADDRESS")" ( (string_literal ""invalid argument to --section-start; must be SECTION=ADDRESS"" " string_content ") )))) ;) (expression_statement "FUN_001690a0(uVar9);" (call_expression "FUN_001690a0(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (expression_statement "pbVar1 = (byte *)(pcVar7 + 1);" (assignment_expression "pbVar1 = (byte *)(pcVar7 + 1)" identifier = (cast_expression "(byte *)(pcVar7 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 1)" ( (binary_expression "pcVar7 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_0015cbe0(&local_58,param_3,pcVar7);" (call_expression "FUN_0015cbe0(&local_58,param_3,pcVar7)" identifier (argument_list "(&local_58,param_3,pcVar7)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (expression_statement "cVar5 = pcVar7[1];" (assignment_expression "cVar5 = pcVar7[1]" identifier = (subscript_expression "pcVar7[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar12 = pbVar1;" (assignment_expression "pbVar12 = pbVar1" identifier = identifier) ;) (if_statement "if (cVar5 == '0') {\n    if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }" if (parenthesized_expression "(cVar5 == '0')" ( (binary_expression "cVar5 == '0'" identifier == (char_literal "'0'" ' character ')) )) (compound_statement "{\n    if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }\n  }" { (if_statement "if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }" if (parenthesized_expression "((pcVar7[2] & 0xdfU) == 0x58)" ( (binary_expression "(pcVar7[2] & 0xdfU) == 0x58" (parenthesized_expression "(pcVar7[2] & 0xdfU)" ( (binary_expression "pcVar7[2] & 0xdfU" (subscript_expression "pcVar7[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }" { (expression_statement "pbVar12 = (byte *)(pcVar7 + 3);" (assignment_expression "pbVar12 = (byte *)(pcVar7 + 3)" identifier = (cast_expression "(byte *)(pcVar7 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 3)" ( (binary_expression "pcVar7 + 3" identifier + number_literal) )))) ;) (expression_statement "cVar5 = pcVar7[3];" (assignment_expression "cVar5 = pcVar7[3]" identifier = (subscript_expression "pcVar7[3]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_001baf6f;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }" else (compound_statement "{\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }" { (labeled_statement "LAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }" statement_identifier : (if_statement "if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }" { (expression_statement "uVar9 = gettext("--section-start address missing");" (assignment_expression "uVar9 = gettext("--section-start address missing")" identifier = (call_expression "gettext("--section-start address missing")" identifier (argument_list "("--section-start address missing")" ( (string_literal ""--section-start address missing"" " string_content ") )))) ;) (expression_statement "FUN_001690a0(uVar9);" (call_expression "FUN_001690a0(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) (goto_statement "goto LAB_001bb10e;" goto statement_identifier ;) }))) }))) comment (expression_statement "FUN_00274680();" (call_expression "FUN_00274680()" identifier (argument_list "()" ( ))) ;) (expression_statement "__s2 = local_58;" (assignment_expression "__s2 = local_58" identifier = identifier) ;) (if_statement "if (*pbVar12 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n    if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }\n    uVar9 = gettext("--section-start argument %s is not a valid hex number");\n    FUN_001690a0(uVar9,pbVar1);\nLAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }\n    return;\n  }" if (parenthesized_expression "(*pbVar12 != 0)" ( (binary_expression "*pbVar12 != 0" (pointer_expression "*pbVar12" * identifier) != number_literal) )) (compound_statement "{\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n    if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }\n    uVar9 = gettext("--section-start argument %s is not a valid hex number");\n    FUN_001690a0(uVar9,pbVar1);\nLAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }\n    return;\n  }" { (expression_statement "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];" (assignment_expression "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12]" identifier = (subscript_expression ""cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12]" (string_literal ""cccccccccccccccccccccccccccccccccccccccccccccccc"" " string_content ") [ (pointer_expression "*pbVar12" * identifier) ])) ;) (if_statement "if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }" if (parenthesized_expression "(bVar3 != 99)" ( (binary_expression "bVar3 != 99" identifier != number_literal) )) (compound_statement "{\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }" { (expression_statement "lVar15 = 0;" (assignment_expression "lVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);" do (compound_statement "{\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      }" { (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "lVar15 = lVar15 * 0x10 + (ulong)bVar3;" (assignment_expression "lVar15 = lVar15 * 0x10 + (ulong)bVar3" identifier = (binary_expression "lVar15 * 0x10 + (ulong)bVar3" (binary_expression "lVar15 * 0x10" identifier * number_literal) + (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier))) ;) (if_statement "if (*pbVar12 == 0) goto LAB_001bafbe;" if (parenthesized_expression "(*pbVar12 == 0)" ( (binary_expression "*pbVar12 == 0" (pointer_expression "*pbVar12" * identifier) == number_literal) )) (goto_statement "goto LAB_001bafbe;" goto statement_identifier ;)) (expression_statement "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];" (assignment_expression "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12]" identifier = (subscript_expression ""cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12]" (string_literal ""cccccccccccccccccccccccccccccccccccccccccccccccc"" " string_content ") [ (pointer_expression "*pbVar12" * identifier) ])) ;) }) while (parenthesized_expression "(bVar3 != 99)" ( (binary_expression "bVar3 != 99" identifier != number_literal) )) ;) })) (expression_statement "uVar9 = gettext("--section-start argument %s is not a valid hex number");" (assignment_expression "uVar9 = gettext("--section-start argument %s is not a valid hex number")" identifier = (call_expression "gettext("--section-start argument %s is not a valid hex number")" identifier (argument_list "("--section-start argument %s is not a valid hex number")" ( (string_literal ""--section-start argument %s is not a valid hex number"" " string_content ") )))) ;) (expression_statement "FUN_001690a0(uVar9,pbVar1);" (call_expression "FUN_001690a0(uVar9,pbVar1)" identifier (argument_list "(uVar9,pbVar1)" ( identifier , identifier ))) ;) (labeled_statement "LAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }" statement_identifier : (if_statement "if (local_58 != local_48) {\n      FUN_00276d20();\n    }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n      FUN_00276d20();\n    }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return;" return ;) })) (expression_statement "lVar15 = 0;" (assignment_expression "lVar15 = 0" identifier = number_literal) ;) (labeled_statement "LAB_001bafbe:\n  lVar13 = param_1 + 0x9278;" statement_identifier : (expression_statement "lVar13 = param_1 + 0x9278;" (assignment_expression "lVar13 = param_1 + 0x9278" identifier = (binary_expression "param_1 + 0x9278" identifier + number_literal)) ;)) (if_statement "if (*(long *)(param_1 + 0x9280) != 0) {\n    local_80 = local_58;\n    lVar8 = lVar13;\n    lVar14 = *(long *)(param_1 + 0x9280);\n    do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);\nLAB_001bb048:\n    bVar16 = lVar13 != lVar8;\n    lVar13 = lVar8;\n    if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x9280) != 0)" ( (binary_expression "*(long *)(param_1 + 0x9280) != 0" (pointer_expression "*(long *)(param_1 + 0x9280)" * (cast_expression "(long *)(param_1 + 0x9280)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x9280)" ( (binary_expression "param_1 + 0x9280" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    local_80 = local_58;\n    lVar8 = lVar13;\n    lVar14 = *(long *)(param_1 + 0x9280);\n    do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);\nLAB_001bb048:\n    bVar16 = lVar13 != lVar8;\n    lVar13 = lVar8;\n    if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }\n  }" { (expression_statement "local_80 = local_58;" (assignment_expression "local_80 = local_58" identifier = identifier) ;) (expression_statement "lVar8 = lVar13;" (assignment_expression "lVar8 = lVar13" identifier = identifier) ;) (expression_statement "lVar14 = *(long *)(param_1 + 0x9280);" (assignment_expression "lVar14 = *(long *)(param_1 + 0x9280)" identifier = (pointer_expression "*(long *)(param_1 + 0x9280)" * (cast_expression "(long *)(param_1 + 0x9280)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x9280)" ( (binary_expression "param_1 + 0x9280" identifier + number_literal) ))))) ;) (do_statement "do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);" do (compound_statement "{\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    }" { (while_statement "while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }" { (expression_statement "uVar4 = *(ulong *)(lVar14 + 0x28);" (assignment_expression "uVar4 = *(ulong *)(lVar14 + 0x28)" identifier = (pointer_expression "*(ulong *)(lVar14 + 0x28)" * (cast_expression "(ulong *)(lVar14 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x28)" ( (binary_expression "lVar14 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = local_50;" (assignment_expression "uVar11 = local_50" identifier = identifier) ;) (if_statement "if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }" if (parenthesized_expression "(uVar4 <= local_50)" ( (binary_expression "uVar4 <= local_50" identifier <= identifier) )) (compound_statement "{\n          uVar11 = uVar4;\n        }" { (expression_statement "uVar11 = uVar4;" (assignment_expression "uVar11 = uVar4" identifier = identifier) ;) })) (if_statement "if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;" if (parenthesized_expression "((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))" ( (binary_expression "(uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0)" (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0)" ( (comma_expression "iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0" (assignment_expression "iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11)" identifier = (call_expression "memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11)" identifier (argument_list "(*(void **)(lVar14 + 0x20),__s2,uVar11)" ( (pointer_expression "*(void **)(lVar14 + 0x20)" * (cast_expression "(void **)(lVar14 + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar14 + 0x20)" ( (binary_expression "lVar14 + 0x20" identifier + number_literal) )))) , identifier , identifier )))) , (binary_expression "iVar6 != 0" identifier != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = uVar4 - local_50;" (assignment_expression "lVar10 = uVar4 - local_50" identifier = (binary_expression "uVar4 - local_50" identifier - identifier)) ;) (if_statement "if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }" if (parenthesized_expression "(lVar10 < 0x80000000)" ( (binary_expression "lVar10 < 0x80000000" identifier < number_literal) )) (compound_statement "{\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }" { (if_statement "if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }" if (parenthesized_expression "(-0x80000001 < lVar10)" ( (binary_expression "-0x80000001 < lVar10" number_literal < identifier) )) (compound_statement "{\n            iVar6 = (int)lVar10;\n            break;\n          }" { (expression_statement "iVar6 = (int)lVar10;" (assignment_expression "iVar6 = (int)lVar10" identifier = (cast_expression "(int)lVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (break_statement "break;" break ;) })) (goto_statement "goto LAB_001baff0;" goto statement_identifier ;) })) (labeled_statement "LAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);" statement_identifier : (expression_statement "plVar2 = (long *)(lVar14 + 0x10);" (assignment_expression "plVar2 = (long *)(lVar14 + 0x10)" identifier = (cast_expression "(long *)(lVar14 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x10)" ( (binary_expression "lVar14 + 0x10" identifier + number_literal) )))) ;)) (expression_statement "lVar8 = lVar14;" (assignment_expression "lVar8 = lVar14" identifier = identifier) ;) (expression_statement "lVar14 = *plVar2;" (assignment_expression "lVar14 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (if_statement "if (*plVar2 == 0) goto LAB_001bb048;" if (parenthesized_expression "(*plVar2 == 0)" ( (binary_expression "*plVar2 == 0" (pointer_expression "*plVar2" * identifier) == number_literal) )) (goto_statement "goto LAB_001bb048;" goto statement_identifier ;)) })) (if_statement "if (-1 < iVar6) goto LAB_001bb03c;" if (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) (goto_statement "goto LAB_001bb03c;" goto statement_identifier ;)) (labeled_statement "LAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);" statement_identifier : (expression_statement "lVar14 = *(long *)(lVar14 + 0x18);" (assignment_expression "lVar14 = *(long *)(lVar14 + 0x18)" identifier = (pointer_expression "*(long *)(lVar14 + 0x18)" * (cast_expression "(long *)(lVar14 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x18)" ( (binary_expression "lVar14 + 0x18" identifier + number_literal) ))))) ;)) }) while (parenthesized_expression "(lVar14 != 0)" ( (binary_expression "lVar14 != 0" identifier != number_literal) )) ;) (labeled_statement "LAB_001bb048:\n    bVar16 = lVar13 != lVar8;" statement_identifier : (expression_statement "bVar16 = lVar13 != lVar8;" (assignment_expression "bVar16 = lVar13 != lVar8" identifier = (binary_expression "lVar13 != lVar8" identifier != identifier)) ;)) (expression_statement "lVar13 = lVar8;" (assignment_expression "lVar13 = lVar8" identifier = identifier) ;) (if_statement "if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }" { (expression_statement "uVar4 = *(ulong *)(lVar8 + 0x28);" (assignment_expression "uVar4 = *(ulong *)(lVar8 + 0x28)" identifier = (pointer_expression "*(ulong *)(lVar8 + 0x28)" * (cast_expression "(ulong *)(lVar8 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x28)" ( (binary_expression "lVar8 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = uVar4;" (assignment_expression "uVar11 = uVar4" identifier = identifier) ;) (if_statement "if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }" if (parenthesized_expression "(local_50 <= uVar4)" ( (binary_expression "local_50 <= uVar4" identifier <= identifier) )) (compound_statement "{\n        uVar11 = local_50;\n      }" { (expression_statement "uVar11 = local_50;" (assignment_expression "uVar11 = local_50" identifier = identifier) ;) })) (if_statement "if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }" if (parenthesized_expression "((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0))" ( (binary_expression "(uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)" (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)" ( (comma_expression "iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0" (assignment_expression "iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11)" identifier = (call_expression "memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11)" identifier (argument_list "(__s2,*(void **)(lVar8 + 0x20),uVar11)" ( identifier , (pointer_expression "*(void **)(lVar8 + 0x20)" * (cast_expression "(void **)(lVar8 + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0x20)" ( (binary_expression "lVar8 + 0x20" identifier + number_literal) )))) , identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }" { (expression_statement "lVar14 = local_50 - uVar4;" (assignment_expression "lVar14 = local_50 - uVar4" identifier = (binary_expression "local_50 - uVar4" identifier - identifier)) ;) (if_statement "if (0x7fffffff < lVar14) goto LAB_001bb0ca;" if (parenthesized_expression "(0x7fffffff < lVar14)" ( (binary_expression "0x7fffffff < lVar14" number_literal < identifier) )) (goto_statement "goto LAB_001bb0ca;" goto statement_identifier ;)) (if_statement "if (lVar14 < -0x80000000) goto LAB_001bb093;" if (parenthesized_expression "(lVar14 < -0x80000000)" ( (binary_expression "lVar14 < -0x80000000" identifier < number_literal) )) (goto_statement "goto LAB_001bb093;" goto statement_identifier ;)) (expression_statement "iVar6 = (int)lVar14;" (assignment_expression "iVar6 = (int)lVar14" identifier = (cast_expression "(int)lVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (if_statement "if (-1 < iVar6) goto LAB_001bb0ca;" if (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) (goto_statement "goto LAB_001bb0ca;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_001bb093:\n  local_60 = &local_58;" statement_identifier : (expression_statement "local_60 = &local_58;" (assignment_expression "local_60 = &local_58" identifier = (pointer_expression "&local_58" & identifier)) ;)) (expression_statement "lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61);" (assignment_expression "lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61)" identifier = (call_expression "FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61)" identifier (argument_list "(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61)" ( (binary_expression "param_1 + 0x9270" identifier + number_literal) , identifier , (pointer_expression "&DAT_00317ac0" & identifier) , (pointer_expression "&local_60" & identifier) , (pointer_expression "&local_61" & identifier) )))) ;) (expression_statement "local_80 = local_58;" (assignment_expression "local_80 = local_58" identifier = identifier) ;) (labeled_statement "LAB_001bb0ca:\n  *(long *)(lVar8 + 0x40) = lVar15;" statement_identifier : (expression_statement "*(long *)(lVar8 + 0x40) = lVar15;" (assignment_expression "*(long *)(lVar8 + 0x40) = lVar15" (pointer_expression "*(long *)(lVar8 + 0x40)" * (cast_expression "(long *)(lVar8 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x40)" ( (binary_expression "lVar8 + 0x40" identifier + number_literal) )))) = identifier) ;)) (if_statement "if (local_80 == local_48) {\n    return;\n  }" if (parenthesized_expression "(local_80 == local_48)" ( (binary_expression "local_80 == local_48" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_00276d20(local_80);" (call_expression "FUN_00276d20(local_80)" identifier (argument_list "(local_80)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void parse_section_start(General_options * this, char * param_1, char *\n   arg, Command_line * param_3) */\n\nvoid __thiscall\ngold::General_options::parse_section_start\n          (General_options *this,char *param_1,char *arg,Command_line *param_3)\n\n{\n  byte *pbVar1;\n  _Base_ptr *pp_Var2;\n  byte bVar3;\n  _Alloc_hider __s2;\n  char cVar4;\n  int iVar5;\n  char *pcVar6;\n  iterator iVar7;\n  long lVar8;\n  _Base_ptr __n;\n  _Base_ptr p_Var9;\n  byte *pbVar10;\n  const_iterator __pos;\n  _Base_ptr p_Var11;\n  long lVar12;\n  bool bVar13;\n  pointer local_80;\n  tuple<> local_61;\n  _Head_base<0,_const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&,_false>\n  local_60;\n  string section_name;\n  \n  pcVar6 = strchr(arg,0x3d);\n  if (pcVar6 == (char *)0x0) {\n    pcVar6 = (char *)gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    gold_error(pcVar6);\n    return;\n  }\n  section_name._M_dataplus._M_p = (pointer)&section_name.field_2;\n  pbVar1 = (byte *)(pcVar6 + 1);\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&section_name,arg,pcVar6);\n  cVar4 = pcVar6[1];\n  pbVar10 = pbVar1;\n  if (cVar4 == '0') {\n    if ((pcVar6[2] & 0xdfU) == 0x58) {\n      pbVar10 = (byte *)(pcVar6 + 3);\n      cVar4 = pcVar6[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar4 == '\0') {\n      pcVar6 = (char *)gettext("--section-start address missing");\n      gold_error(pcVar6);\n      goto LAB_001bb10e;\n    }\n  }\n                    /* try { // try from 001baf77 to 001bb148 has its CatchHandler @ 001bb1a7 */\n  hex_init();\n  __s2 = section_name._M_dataplus;\n  if (*pbVar10 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];\n    if (bVar3 != 99) {\n      lVar12 = 0;\n      do {\n        pbVar10 = pbVar10 + 1;\n        lVar12 = lVar12 * 0x10 + (ulong)bVar3;\n        if (*pbVar10 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];\n      } while (bVar3 != 99);\n    }\n    pcVar6 = (char *)gettext("--section-start argument %s is not a valid hex number");\n    gold_error(pcVar6,pbVar1);\nLAB_001bb10e:\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)section_name._M_dataplus._M_p != &section_name.field_2) {\n      operator_delete(section_name._M_dataplus._M_p);\n    }\n    return;\n  }\n  lVar12 = 0;\nLAB_001bafbe:\n  p_Var11 = (this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n  __pos._M_node = &(this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header;\n  if (p_Var11 != (_Base_ptr)0x0) {\n    local_80 = section_name._M_dataplus._M_p;\n    iVar7._M_node = __pos._M_node;\n    do {\n      while( true ) {\n        p_Var9 = p_Var11[1]._M_parent;\n        __n = (_Base_ptr)section_name._M_string_length;\n        if (p_Var9 <= section_name._M_string_length) {\n          __n = p_Var9;\n        }\n        if ((__n != (_Base_ptr)0x0) &&\n           (iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0)) break;\n        lVar8 = (long)p_Var9 - section_name._M_string_length;\n        if (lVar8 < 0x80000000) {\n          if (-0x80000001 < lVar8) {\n            iVar5 = (int)lVar8;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        pp_Var2 = &p_Var11->_M_left;\n        iVar7._M_node = p_Var11;\n        p_Var11 = *pp_Var2;\n        if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001bb048;\n      }\n      if (-1 < iVar5) goto LAB_001bb03c;\nLAB_001baff0:\n      p_Var11 = p_Var11->_M_right;\n    } while (p_Var11 != (_Base_ptr)0x0);\nLAB_001bb048:\n    bVar13 = __pos._M_node != iVar7._M_node;\n    __pos._M_node = iVar7._M_node;\n    if (bVar13) {\n      p_Var11 = iVar7._M_node[1]._M_parent;\n      p_Var9 = p_Var11;\n      if (section_name._M_string_length <= p_Var11) {\n        p_Var9 = (_Base_ptr)section_name._M_string_length;\n      }\n      if ((p_Var9 == (_Base_ptr)0x0) ||\n         (iVar5 = memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9), iVar5 == 0)) {\n        lVar8 = section_name._M_string_length - (long)p_Var11;\n        if (0x7fffffff < lVar8) goto LAB_001bb0ca;\n        if (lVar8 < -0x80000000) goto LAB_001bb093;\n        iVar5 = (int)lVar8;\n      }\n      if (-1 < iVar5) goto LAB_001bb0ca;\n    }\n  }\nLAB_001bb093:\n  local_60._M_head_impl = &section_name;\n  iVar7 = std::\n          _Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>\n          ::\n          _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>,_std::tuple<>_>\n                    (&(this->section_starts_)._M_t,__pos,\n                     (piecewise_construct_t *)&std::piecewise_construct,\n                     (tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                      *)&local_60,&local_61);\n  local_80 = section_name._M_dataplus._M_p;\nLAB_001bb0ca:\n  *(long *)(iVar7._M_node + 2) = lVar12;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_80 == &section_name.field_2) {\n    return;\n  }\n  operator_delete(local_80);\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall\ngold::General_options::parse_section_start\n          (General_options *this,char *param_1,char *arg,Command_line *param_3)\n\n{\n  byte *pbVar1;\n  _Base_ptr *pp_Var2;\n  byte bVar3;\n  _Alloc_hider __s2;\n  char cVar4;\n  int iVar5;\n  char *pcVar6;\n  iterator iVar7;\n  long lVar8;\n  _Base_ptr __n;\n  _Base_ptr p_Var9;\n  byte *pbVar10;\n  const_iterator __pos;\n  _Base_ptr p_Var11;\n  long lVar12;\n  bool bVar13;\n  pointer local_80;\n  tuple<> local_61;\n  _Head_base<0,_const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&,_false>\n  local_60;\n  string section_name;\n  \n  pcVar6 = strchr(arg,0x3d);\n  if (pcVar6 == (char *)0x0) {\n    pcVar6 = (char *)gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    gold_error(pcVar6);\n    return;\n  }\n  section_name._M_dataplus._M_p = (pointer)&section_name.field_2;\n  pbVar1 = (byte *)(pcVar6 + 1);\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&section_name,arg,pcVar6);\n  cVar4 = pcVar6[1];\n  pbVar10 = pbVar1;\n  if (cVar4 == '0') {\n    if ((pcVar6[2] & 0xdfU) == 0x58) {\n      pbVar10 = (byte *)(pcVar6 + 3);\n      cVar4 = pcVar6[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar4 == '\0') {\n      pcVar6 = (char *)gettext("--section-start address missing");\n      gold_error(pcVar6);\n      goto LAB_001bb10e;\n    }\n  }\n                    /* try { // try from 001baf77 to 001bb148 has its CatchHandler @ 001bb1a7 */\n  hex_init();\n  __s2 = section_name._M_dataplus;\n  if (*pbVar10 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];\n    if (bVar3 != 99) {\n      lVar12 = 0;\n      do {\n        pbVar10 = pbVar10 + 1;\n        lVar12 = lVar12 * 0x10 + (ulong)bVar3;\n        if (*pbVar10 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];\n      } while (bVar3 != 99);\n    }\n    pcVar6 = (char *)gettext("--section-start argument %s is not a valid hex number");\n    gold_error(pcVar6,pbVar1);\nLAB_001bb10e:\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)section_name._M_dataplus._M_p != &section_name.field_2) {\n      operator_delete(section_name._M_dataplus._M_p);\n    }\n    return;\n  }\n  lVar12 = 0;\nLAB_001bafbe:\n  p_Var11 = (this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n  __pos._M_node = &(this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header;\n  if (p_Var11 != (_Base_ptr)0x0) {\n    local_80 = section_name._M_dataplus._M_p;\n    iVar7._M_node = __pos._M_node;\n    do {\n      while( true ) {\n        p_Var9 = p_Var11[1]._M_parent;\n        __n = (_Base_ptr)section_name._M_string_length;\n        if (p_Var9 <= section_name._M_string_length) {\n          __n = p_Var9;\n        }\n        if ((__n != (_Base_ptr)0x0) &&\n           (iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0)) break;\n        lVar8 = (long)p_Var9 - section_name._M_string_length;\n        if (lVar8 < 0x80000000) {\n          if (-0x80000001 < lVar8) {\n            iVar5 = (int)lVar8;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        pp_Var2 = &p_Var11->_M_left;\n        iVar7._M_node = p_Var11;\n        p_Var11 = *pp_Var2;\n        if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001bb048;\n      }\n      if (-1 < iVar5) goto LAB_001bb03c;\nLAB_001baff0:\n      p_Var11 = p_Var11->_M_right;\n    } while (p_Var11 != (_Base_ptr)0x0);\nLAB_001bb048:\n    bVar13 = __pos._M_node != iVar7._M_node;\n    __pos._M_node = iVar7._M_node;\n    if (bVar13) {\n      p_Var11 = iVar7._M_node[1]._M_parent;\n      p_Var9 = p_Var11;\n      if (section_name._M_string_length <= p_Var11) {\n        p_Var9 = (_Base_ptr)section_name._M_string_length;\n      }\n      if ((p_Var9 == (_Base_ptr)0x0) ||\n         (iVar5 = memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9), iVar5 == 0)) {\n        lVar8 = section_name._M_string_length - (long)p_Var11;\n        if (0x7fffffff < lVar8) goto LAB_001bb0ca;\n        if (lVar8 < -0x80000000) goto LAB_001bb093;\n        iVar5 = (int)lVar8;\n      }\n      if (-1 < iVar5) goto LAB_001bb0ca;\n    }\n  }\nLAB_001bb093:\n  local_60._M_head_impl = &section_name;\n  iVar7 = std::\n          _Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>\n          ::\n          _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>,_std::tuple<>_>\n                    (&(this->section_starts_)._M_t,__pos,\n                     (piecewise_construct_t *)&std::piecewise_construct,\n                     (tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                      *)&local_60,&local_61);\n  local_80 = section_name._M_dataplus._M_p;\nLAB_001bb0ca:\n  *(long *)(iVar7._M_node + 2) = lVar12;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_80 == &section_name.field_2) {\n    return;\n  }\n  operator_delete(local_80);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::General_options::" identifier : : identifier : :) (function_declarator "parse_section_start\n          (General_options *this,char *param_1,char *arg,Command_line *param_3)" identifier (parameter_list "(General_options *this,char *param_1,char *arg,Command_line *param_3)" ( (parameter_declaration "General_options *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *arg" primitive_type (pointer_declarator "*arg" * identifier)) , (parameter_declaration "Command_line *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  _Base_ptr *pp_Var2;\n  byte bVar3;\n  _Alloc_hider __s2;\n  char cVar4;\n  int iVar5;\n  char *pcVar6;\n  iterator iVar7;\n  long lVar8;\n  _Base_ptr __n;\n  _Base_ptr p_Var9;\n  byte *pbVar10;\n  const_iterator __pos;\n  _Base_ptr p_Var11;\n  long lVar12;\n  bool bVar13;\n  pointer local_80;\n  tuple<> local_61;\n  _Head_base<0,_const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&,_false>\n  local_60;\n  string section_name;\n  \n  pcVar6 = strchr(arg,0x3d);\n  if (pcVar6 == (char *)0x0) {\n    pcVar6 = (char *)gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    gold_error(pcVar6);\n    return;\n  }\n  section_name._M_dataplus._M_p = (pointer)&section_name.field_2;\n  pbVar1 = (byte *)(pcVar6 + 1);\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&section_name,arg,pcVar6);\n  cVar4 = pcVar6[1];\n  pbVar10 = pbVar1;\n  if (cVar4 == '0') {\n    if ((pcVar6[2] & 0xdfU) == 0x58) {\n      pbVar10 = (byte *)(pcVar6 + 3);\n      cVar4 = pcVar6[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar4 == '\0') {\n      pcVar6 = (char *)gettext("--section-start address missing");\n      gold_error(pcVar6);\n      goto LAB_001bb10e;\n    }\n  }\n                    /* try { // try from 001baf77 to 001bb148 has its CatchHandler @ 001bb1a7 */\n  hex_init();\n  __s2 = section_name._M_dataplus;\n  if (*pbVar10 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];\n    if (bVar3 != 99) {\n      lVar12 = 0;\n      do {\n        pbVar10 = pbVar10 + 1;\n        lVar12 = lVar12 * 0x10 + (ulong)bVar3;\n        if (*pbVar10 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];\n      } while (bVar3 != 99);\n    }\n    pcVar6 = (char *)gettext("--section-start argument %s is not a valid hex number");\n    gold_error(pcVar6,pbVar1);\nLAB_001bb10e:\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)section_name._M_dataplus._M_p != &section_name.field_2) {\n      operator_delete(section_name._M_dataplus._M_p);\n    }\n    return;\n  }\n  lVar12 = 0;\nLAB_001bafbe:\n  p_Var11 = (this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n  __pos._M_node = &(this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header;\n  if (p_Var11 != (_Base_ptr)0x0) {\n    local_80 = section_name._M_dataplus._M_p;\n    iVar7._M_node = __pos._M_node;\n    do {\n      while( true ) {\n        p_Var9 = p_Var11[1]._M_parent;\n        __n = (_Base_ptr)section_name._M_string_length;\n        if (p_Var9 <= section_name._M_string_length) {\n          __n = p_Var9;\n        }\n        if ((__n != (_Base_ptr)0x0) &&\n           (iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0)) break;\n        lVar8 = (long)p_Var9 - section_name._M_string_length;\n        if (lVar8 < 0x80000000) {\n          if (-0x80000001 < lVar8) {\n            iVar5 = (int)lVar8;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        pp_Var2 = &p_Var11->_M_left;\n        iVar7._M_node = p_Var11;\n        p_Var11 = *pp_Var2;\n        if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001bb048;\n      }\n      if (-1 < iVar5) goto LAB_001bb03c;\nLAB_001baff0:\n      p_Var11 = p_Var11->_M_right;\n    } while (p_Var11 != (_Base_ptr)0x0);\nLAB_001bb048:\n    bVar13 = __pos._M_node != iVar7._M_node;\n    __pos._M_node = iVar7._M_node;\n    if (bVar13) {\n      p_Var11 = iVar7._M_node[1]._M_parent;\n      p_Var9 = p_Var11;\n      if (section_name._M_string_length <= p_Var11) {\n        p_Var9 = (_Base_ptr)section_name._M_string_length;\n      }\n      if ((p_Var9 == (_Base_ptr)0x0) ||\n         (iVar5 = memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9), iVar5 == 0)) {\n        lVar8 = section_name._M_string_length - (long)p_Var11;\n        if (0x7fffffff < lVar8) goto LAB_001bb0ca;\n        if (lVar8 < -0x80000000) goto LAB_001bb093;\n        iVar5 = (int)lVar8;\n      }\n      if (-1 < iVar5) goto LAB_001bb0ca;\n    }\n  }\nLAB_001bb093:\n  local_60._M_head_impl = &section_name;\n  iVar7 = std::\n          _Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>\n          ::\n          _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>,_std::tuple<>_>\n                    (&(this->section_starts_)._M_t,__pos,\n                     (piecewise_construct_t *)&std::piecewise_construct,\n                     (tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                      *)&local_60,&local_61);\n  local_80 = section_name._M_dataplus._M_p;\nLAB_001bb0ca:\n  *(long *)(iVar7._M_node + 2) = lVar12;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_80 == &section_name.field_2) {\n    return;\n  }\n  operator_delete(local_80);\n  return;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "_Base_ptr *pp_Var2;" type_identifier (pointer_declarator "*pp_Var2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "_Alloc_hider __s2;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "iterator iVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "_Base_ptr __n;" type_identifier identifier ;) (declaration "_Base_ptr p_Var9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "const_iterator __pos;" type_identifier identifier ;) (declaration "_Base_ptr p_Var11;" type_identifier identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "pointer local_80;" type_identifier identifier ;) (expression_statement "tuple<> local_61;" (binary_expression "tuple<> local_61" identifier < (ERROR ">" >) identifier) ;) (ERROR "_Head_base<0,_const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "_Head_base<0,_const_std" (binary_expression "_Head_base<0" identifier < number_literal) , identifier) : : (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) : :) (expression_statement "allocator<char>_>&,_false>\n  local_60;" (binary_expression "allocator<char>_>&,_false>\n  local_60" (binary_expression "allocator<char>_>&,_false" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "&,_false" & (ERROR "," ,) identifier)) > identifier) ;) (declaration "string section_name;" type_identifier identifier ;) (expression_statement "pcVar6 = strchr(arg,0x3d);" (assignment_expression "pcVar6 = strchr(arg,0x3d)" identifier = (call_expression "strchr(arg,0x3d)" identifier (argument_list "(arg,0x3d)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar6 == (char *)0x0) {\n    pcVar6 = (char *)gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    gold_error(pcVar6);\n    return;\n  }" if (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar6 = (char *)gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    gold_error(pcVar6);\n    return;\n  }" { (expression_statement "pcVar6 = (char *)gettext("invalid argument to --section-start; must be SECTION=ADDRESS");" (assignment_expression "pcVar6 = (char *)gettext("invalid argument to --section-start; must be SECTION=ADDRESS")" identifier = (cast_expression "(char *)gettext("invalid argument to --section-start; must be SECTION=ADDRESS")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("invalid argument to --section-start; must be SECTION=ADDRESS")" identifier (argument_list "("invalid argument to --section-start; must be SECTION=ADDRESS")" ( (string_literal ""invalid argument to --section-start; must be SECTION=ADDRESS"" " string_content ") ))))) ;) (expression_statement "gold_error(pcVar6);" (call_expression "gold_error(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "section_name._M_dataplus._M_p = (pointer)&section_name.field_2;" (assignment_expression "section_name._M_dataplus._M_p = (pointer)&section_name.field_2" (field_expression "section_name._M_dataplus._M_p" (field_expression "section_name._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&section_name.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "section_name.field_2" identifier . field_identifier))) ;) (expression_statement "pbVar1 = (byte *)(pcVar6 + 1);" (assignment_expression "pbVar1 = (byte *)(pcVar6 + 1)" identifier = (cast_expression "(byte *)(pcVar6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + 1)" ( (binary_expression "pcVar6 + 1" identifier + number_literal) )))) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&section_name,arg,pcVar6);" 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*>(&section_name,arg,pcVar6);" (binary_expression "_M_construct<char_const*>(&section_name,arg,pcVar6)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&section_name,arg,pcVar6)" ( (comma_expression "&section_name,arg,pcVar6" (pointer_expression "&section_name" & identifier) , (comma_expression "arg,pcVar6" identifier , identifier)) ))) ;)) (expression_statement "cVar4 = pcVar6[1];" (assignment_expression "cVar4 = pcVar6[1]" identifier = (subscript_expression "pcVar6[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar10 = pbVar1;" (assignment_expression "pbVar10 = pbVar1" identifier = identifier) ;) (if_statement "if (cVar4 == '0') {\n    if ((pcVar6[2] & 0xdfU) == 0x58) {\n      pbVar10 = (byte *)(pcVar6 + 3);\n      cVar4 = pcVar6[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar4 == '\0') {\n      pcVar6 = (char *)gettext("--section-start address missing");\n      gold_error(pcVar6);\n      goto LAB_001bb10e;\n    }\n  }" if (parenthesized_expression "(cVar4 == '0')" ( (binary_expression "cVar4 == '0'" identifier == (char_literal "'0'" ' character ')) )) (compound_statement "{\n    if ((pcVar6[2] & 0xdfU) == 0x58) {\n      pbVar10 = (byte *)(pcVar6 + 3);\n      cVar4 = pcVar6[3];\n      goto LAB_001baf6f;\n    }\n  }" { (if_statement "if ((pcVar6[2] & 0xdfU) == 0x58) {\n      pbVar10 = (byte *)(pcVar6 + 3);\n      cVar4 = pcVar6[3];\n      goto LAB_001baf6f;\n    }" if (parenthesized_expression "((pcVar6[2] & 0xdfU) == 0x58)" ( (binary_expression "(pcVar6[2] & 0xdfU) == 0x58" (parenthesized_expression "(pcVar6[2] & 0xdfU)" ( (binary_expression "pcVar6[2] & 0xdfU" (subscript_expression "pcVar6[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      pbVar10 = (byte *)(pcVar6 + 3);\n      cVar4 = pcVar6[3];\n      goto LAB_001baf6f;\n    }" { (expression_statement "pbVar10 = (byte *)(pcVar6 + 3);" (assignment_expression "pbVar10 = (byte *)(pcVar6 + 3)" identifier = (cast_expression "(byte *)(pcVar6 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + 3)" ( (binary_expression "pcVar6 + 3" identifier + number_literal) )))) ;) (expression_statement "cVar4 = pcVar6[3];" (assignment_expression "cVar4 = pcVar6[3]" identifier = (subscript_expression "pcVar6[3]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_001baf6f;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_001baf6f:\n    if (cVar4 == '\0') {\n      pcVar6 = (char *)gettext("--section-start address missing");\n      gold_error(pcVar6);\n      goto LAB_001bb10e;\n    }\n  }" else (compound_statement "{\nLAB_001baf6f:\n    if (cVar4 == '\0') {\n      pcVar6 = (char *)gettext("--section-start address missing");\n      gold_error(pcVar6);\n      goto LAB_001bb10e;\n    }\n  }" { (labeled_statement "LAB_001baf6f:\n    if (cVar4 == '\0') {\n      pcVar6 = (char *)gettext("--section-start address missing");\n      gold_error(pcVar6);\n      goto LAB_001bb10e;\n    }" statement_identifier : (if_statement "if (cVar4 == '\0') {\n      pcVar6 = (char *)gettext("--section-start address missing");\n      gold_error(pcVar6);\n      goto LAB_001bb10e;\n    }" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar6 = (char *)gettext("--section-start address missing");\n      gold_error(pcVar6);\n      goto LAB_001bb10e;\n    }" { (expression_statement "pcVar6 = (char *)gettext("--section-start address missing");" (assignment_expression "pcVar6 = (char *)gettext("--section-start address missing")" identifier = (cast_expression "(char *)gettext("--section-start address missing")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("--section-start address missing")" identifier (argument_list "("--section-start address missing")" ( (string_literal ""--section-start address missing"" " string_content ") ))))) ;) (expression_statement "gold_error(pcVar6);" (call_expression "gold_error(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) (goto_statement "goto LAB_001bb10e;" goto statement_identifier ;) }))) }))) comment (expression_statement "hex_init();" (call_expression "hex_init()" identifier (argument_list "()" ( ))) ;) (expression_statement "__s2 = section_name._M_dataplus;" (assignment_expression "__s2 = section_name._M_dataplus" identifier = (field_expression "section_name._M_dataplus" identifier . field_identifier)) ;) (if_statement "if (*pbVar10 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];\n    if (bVar3 != 99) {\n      lVar12 = 0;\n      do {\n        pbVar10 = pbVar10 + 1;\n        lVar12 = lVar12 * 0x10 + (ulong)bVar3;\n        if (*pbVar10 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];\n      } while (bVar3 != 99);\n    }\n    pcVar6 = (char *)gettext("--section-start argument %s is not a valid hex number");\n    gold_error(pcVar6,pbVar1);\nLAB_001bb10e:\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)section_name._M_dataplus._M_p != &section_name.field_2) {\n      operator_delete(section_name._M_dataplus._M_p);\n    }\n    return;\n  }" if (parenthesized_expression "(*pbVar10 != 0)" ( (binary_expression "*pbVar10 != 0" (pointer_expression "*pbVar10" * identifier) != number_literal) )) (compound_statement "{\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];\n    if (bVar3 != 99) {\n      lVar12 = 0;\n      do {\n        pbVar10 = pbVar10 + 1;\n        lVar12 = lVar12 * 0x10 + (ulong)bVar3;\n        if (*pbVar10 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];\n      } while (bVar3 != 99);\n    }\n    pcVar6 = (char *)gettext("--section-start argument %s is not a valid hex number");\n    gold_error(pcVar6,pbVar1);\nLAB_001bb10e:\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)section_name._M_dataplus._M_p != &section_name.field_2) {\n      operator_delete(section_name._M_dataplus._M_p);\n    }\n    return;\n  }" { (expression_statement "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];" (assignment_expression "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10]" identifier = (subscript_expression ""cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10]" (string_literal ""cccccccccccccccccccccccccccccccccccccccccccccccc"" " string_content ") [ (pointer_expression "*pbVar10" * identifier) ])) ;) (if_statement "if (bVar3 != 99) {\n      lVar12 = 0;\n      do {\n        pbVar10 = pbVar10 + 1;\n        lVar12 = lVar12 * 0x10 + (ulong)bVar3;\n        if (*pbVar10 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];\n      } while (bVar3 != 99);\n    }" if (parenthesized_expression "(bVar3 != 99)" ( (binary_expression "bVar3 != 99" identifier != number_literal) )) (compound_statement "{\n      lVar12 = 0;\n      do {\n        pbVar10 = pbVar10 + 1;\n        lVar12 = lVar12 * 0x10 + (ulong)bVar3;\n        if (*pbVar10 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];\n      } while (bVar3 != 99);\n    }" { (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        pbVar10 = pbVar10 + 1;\n        lVar12 = lVar12 * 0x10 + (ulong)bVar3;\n        if (*pbVar10 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];\n      } while (bVar3 != 99);" do (compound_statement "{\n        pbVar10 = pbVar10 + 1;\n        lVar12 = lVar12 * 0x10 + (ulong)bVar3;\n        if (*pbVar10 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];\n      }" { (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "lVar12 = lVar12 * 0x10 + (ulong)bVar3;" (assignment_expression "lVar12 = lVar12 * 0x10 + (ulong)bVar3" identifier = (binary_expression "lVar12 * 0x10 + (ulong)bVar3" (binary_expression "lVar12 * 0x10" identifier * number_literal) + (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier))) ;) (if_statement "if (*pbVar10 == 0) goto LAB_001bafbe;" if (parenthesized_expression "(*pbVar10 == 0)" ( (binary_expression "*pbVar10 == 0" (pointer_expression "*pbVar10" * identifier) == number_literal) )) (goto_statement "goto LAB_001bafbe;" goto statement_identifier ;)) (expression_statement "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10];" (assignment_expression "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10]" identifier = (subscript_expression ""cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar10]" (string_literal ""cccccccccccccccccccccccccccccccccccccccccccccccc"" " string_content ") [ (pointer_expression "*pbVar10" * identifier) ])) ;) }) while (parenthesized_expression "(bVar3 != 99)" ( (binary_expression "bVar3 != 99" identifier != number_literal) )) ;) })) (expression_statement "pcVar6 = (char *)gettext("--section-start argument %s is not a valid hex number");" (assignment_expression "pcVar6 = (char *)gettext("--section-start argument %s is not a valid hex number")" identifier = (cast_expression "(char *)gettext("--section-start argument %s is not a valid hex number")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("--section-start argument %s is not a valid hex number")" identifier (argument_list "("--section-start argument %s is not a valid hex number")" ( (string_literal ""--section-start argument %s is not a valid hex number"" " string_content ") ))))) ;) (expression_statement "gold_error(pcVar6,pbVar1);" (call_expression "gold_error(pcVar6,pbVar1)" identifier (argument_list "(pcVar6,pbVar1)" ( identifier , identifier ))) ;) (labeled_statement "LAB_001bb10e:\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)section_name._M_dataplus._M_p != &section_name.field_2) {\n      operator_delete(section_name._M_dataplus._M_p);\n    }" statement_identifier : (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)section_name._M_dataplus._M_p != &section_name.field_2) {\n      operator_delete(section_name._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         *)section_name._M_dataplus._M_p != &section_name.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)section_name._M_dataplus._M_p != &section_name.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         *)section_name._M_dataplus._M_p != &section_name.field_2" (binary_expression "allocator<char>_>_9\n         *)section_name._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n         *)section_name._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "section_name._M_dataplus._M_p" (field_expression "section_name._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&section_name.field_2" & (field_expression "section_name.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n      operator_delete(section_name._M_dataplus._M_p);\n    }" { (expression_statement "operator_delete(section_name._M_dataplus._M_p);" (call_expression "operator_delete(section_name._M_dataplus._M_p)" identifier (argument_list "(section_name._M_dataplus._M_p)" ( (field_expression "section_name._M_dataplus._M_p" (field_expression "section_name._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) }))) (return_statement "return;" return ;) })) (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_001bafbe:\n  p_Var11 = (this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;" statement_identifier : (expression_statement "p_Var11 = (this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var11 = (this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" identifier = (field_expression "(this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" (field_expression "(this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(this->section_starts_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->section_starts_)._M_t._M_impl" (field_expression "(this->section_starts_)._M_t" (parenthesized_expression "(this->section_starts_)" ( (field_expression "this->section_starts_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;)) (expression_statement "__pos._M_node = &(this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header;" (assignment_expression "__pos._M_node = &(this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "__pos._M_node" identifier . field_identifier) = (pointer_expression "&(this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header" & (field_expression "(this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(this->section_starts_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->section_starts_)._M_t._M_impl" (field_expression "(this->section_starts_)._M_t" (parenthesized_expression "(this->section_starts_)" ( (field_expression "this->section_starts_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier))) ;) (if_statement "if (p_Var11 != (_Base_ptr)0x0) {\n    local_80 = section_name._M_dataplus._M_p;\n    iVar7._M_node = __pos._M_node;\n    do {\n      while( true ) {\n        p_Var9 = p_Var11[1]._M_parent;\n        __n = (_Base_ptr)section_name._M_string_length;\n        if (p_Var9 <= section_name._M_string_length) {\n          __n = p_Var9;\n        }\n        if ((__n != (_Base_ptr)0x0) &&\n           (iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0)) break;\n        lVar8 = (long)p_Var9 - section_name._M_string_length;\n        if (lVar8 < 0x80000000) {\n          if (-0x80000001 < lVar8) {\n            iVar5 = (int)lVar8;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        pp_Var2 = &p_Var11->_M_left;\n        iVar7._M_node = p_Var11;\n        p_Var11 = *pp_Var2;\n        if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001bb048;\n      }\n      if (-1 < iVar5) goto LAB_001bb03c;\nLAB_001baff0:\n      p_Var11 = p_Var11->_M_right;\n    } while (p_Var11 != (_Base_ptr)0x0);\nLAB_001bb048:\n    bVar13 = __pos._M_node != iVar7._M_node;\n    __pos._M_node = iVar7._M_node;\n    if (bVar13) {\n      p_Var11 = iVar7._M_node[1]._M_parent;\n      p_Var9 = p_Var11;\n      if (section_name._M_string_length <= p_Var11) {\n        p_Var9 = (_Base_ptr)section_name._M_string_length;\n      }\n      if ((p_Var9 == (_Base_ptr)0x0) ||\n         (iVar5 = memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9), iVar5 == 0)) {\n        lVar8 = section_name._M_string_length - (long)p_Var11;\n        if (0x7fffffff < lVar8) goto LAB_001bb0ca;\n        if (lVar8 < -0x80000000) goto LAB_001bb093;\n        iVar5 = (int)lVar8;\n      }\n      if (-1 < iVar5) goto LAB_001bb0ca;\n    }\n  }" if (parenthesized_expression "(p_Var11 != (_Base_ptr)0x0)" ( (binary_expression "p_Var11 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n    local_80 = section_name._M_dataplus._M_p;\n    iVar7._M_node = __pos._M_node;\n    do {\n      while( true ) {\n        p_Var9 = p_Var11[1]._M_parent;\n        __n = (_Base_ptr)section_name._M_string_length;\n        if (p_Var9 <= section_name._M_string_length) {\n          __n = p_Var9;\n        }\n        if ((__n != (_Base_ptr)0x0) &&\n           (iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0)) break;\n        lVar8 = (long)p_Var9 - section_name._M_string_length;\n        if (lVar8 < 0x80000000) {\n          if (-0x80000001 < lVar8) {\n            iVar5 = (int)lVar8;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        pp_Var2 = &p_Var11->_M_left;\n        iVar7._M_node = p_Var11;\n        p_Var11 = *pp_Var2;\n        if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001bb048;\n      }\n      if (-1 < iVar5) goto LAB_001bb03c;\nLAB_001baff0:\n      p_Var11 = p_Var11->_M_right;\n    } while (p_Var11 != (_Base_ptr)0x0);\nLAB_001bb048:\n    bVar13 = __pos._M_node != iVar7._M_node;\n    __pos._M_node = iVar7._M_node;\n    if (bVar13) {\n      p_Var11 = iVar7._M_node[1]._M_parent;\n      p_Var9 = p_Var11;\n      if (section_name._M_string_length <= p_Var11) {\n        p_Var9 = (_Base_ptr)section_name._M_string_length;\n      }\n      if ((p_Var9 == (_Base_ptr)0x0) ||\n         (iVar5 = memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9), iVar5 == 0)) {\n        lVar8 = section_name._M_string_length - (long)p_Var11;\n        if (0x7fffffff < lVar8) goto LAB_001bb0ca;\n        if (lVar8 < -0x80000000) goto LAB_001bb093;\n        iVar5 = (int)lVar8;\n      }\n      if (-1 < iVar5) goto LAB_001bb0ca;\n    }\n  }" { (expression_statement "local_80 = section_name._M_dataplus._M_p;" (assignment_expression "local_80 = section_name._M_dataplus._M_p" identifier = (field_expression "section_name._M_dataplus._M_p" (field_expression "section_name._M_dataplus" identifier . field_identifier) . field_identifier)) ;) (expression_statement "iVar7._M_node = __pos._M_node;" (assignment_expression "iVar7._M_node = __pos._M_node" (field_expression "iVar7._M_node" identifier . field_identifier) = (field_expression "__pos._M_node" identifier . field_identifier)) ;) (do_statement "do {\n      while( true ) {\n        p_Var9 = p_Var11[1]._M_parent;\n        __n = (_Base_ptr)section_name._M_string_length;\n        if (p_Var9 <= section_name._M_string_length) {\n          __n = p_Var9;\n        }\n        if ((__n != (_Base_ptr)0x0) &&\n           (iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0)) break;\n        lVar8 = (long)p_Var9 - section_name._M_string_length;\n        if (lVar8 < 0x80000000) {\n          if (-0x80000001 < lVar8) {\n            iVar5 = (int)lVar8;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        pp_Var2 = &p_Var11->_M_left;\n        iVar7._M_node = p_Var11;\n        p_Var11 = *pp_Var2;\n        if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001bb048;\n      }\n      if (-1 < iVar5) goto LAB_001bb03c;\nLAB_001baff0:\n      p_Var11 = p_Var11->_M_right;\n    } while (p_Var11 != (_Base_ptr)0x0);" do (compound_statement "{\n      while( true ) {\n        p_Var9 = p_Var11[1]._M_parent;\n        __n = (_Base_ptr)section_name._M_string_length;\n        if (p_Var9 <= section_name._M_string_length) {\n          __n = p_Var9;\n        }\n        if ((__n != (_Base_ptr)0x0) &&\n           (iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0)) break;\n        lVar8 = (long)p_Var9 - section_name._M_string_length;\n        if (lVar8 < 0x80000000) {\n          if (-0x80000001 < lVar8) {\n            iVar5 = (int)lVar8;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        pp_Var2 = &p_Var11->_M_left;\n        iVar7._M_node = p_Var11;\n        p_Var11 = *pp_Var2;\n        if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001bb048;\n      }\n      if (-1 < iVar5) goto LAB_001bb03c;\nLAB_001baff0:\n      p_Var11 = p_Var11->_M_right;\n    }" { (while_statement "while( true ) {\n        p_Var9 = p_Var11[1]._M_parent;\n        __n = (_Base_ptr)section_name._M_string_length;\n        if (p_Var9 <= section_name._M_string_length) {\n          __n = p_Var9;\n        }\n        if ((__n != (_Base_ptr)0x0) &&\n           (iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0)) break;\n        lVar8 = (long)p_Var9 - section_name._M_string_length;\n        if (lVar8 < 0x80000000) {\n          if (-0x80000001 < lVar8) {\n            iVar5 = (int)lVar8;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        pp_Var2 = &p_Var11->_M_left;\n        iVar7._M_node = p_Var11;\n        p_Var11 = *pp_Var2;\n        if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001bb048;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        p_Var9 = p_Var11[1]._M_parent;\n        __n = (_Base_ptr)section_name._M_string_length;\n        if (p_Var9 <= section_name._M_string_length) {\n          __n = p_Var9;\n        }\n        if ((__n != (_Base_ptr)0x0) &&\n           (iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0)) break;\n        lVar8 = (long)p_Var9 - section_name._M_string_length;\n        if (lVar8 < 0x80000000) {\n          if (-0x80000001 < lVar8) {\n            iVar5 = (int)lVar8;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        pp_Var2 = &p_Var11->_M_left;\n        iVar7._M_node = p_Var11;\n        p_Var11 = *pp_Var2;\n        if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001bb048;\n      }" { (expression_statement "p_Var9 = p_Var11[1]._M_parent;" (assignment_expression "p_Var9 = p_Var11[1]._M_parent" identifier = (field_expression "p_Var11[1]._M_parent" (subscript_expression "p_Var11[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "__n = (_Base_ptr)section_name._M_string_length;" (assignment_expression "__n = (_Base_ptr)section_name._M_string_length" identifier = (cast_expression "(_Base_ptr)section_name._M_string_length" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "section_name._M_string_length" identifier . field_identifier))) ;) (if_statement "if (p_Var9 <= section_name._M_string_length) {\n          __n = p_Var9;\n        }" if (parenthesized_expression "(p_Var9 <= section_name._M_string_length)" ( (binary_expression "p_Var9 <= section_name._M_string_length" identifier <= (field_expression "section_name._M_string_length" identifier . field_identifier)) )) (compound_statement "{\n          __n = p_Var9;\n        }" { (expression_statement "__n = p_Var9;" (assignment_expression "__n = p_Var9" identifier = identifier) ;) })) (if_statement "if ((__n != (_Base_ptr)0x0) &&\n           (iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0)) break;" if (parenthesized_expression "((__n != (_Base_ptr)0x0) &&\n           (iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0))" ( (binary_expression "(__n != (_Base_ptr)0x0) &&\n           (iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0)" (parenthesized_expression "(__n != (_Base_ptr)0x0)" ( (binary_expression "__n != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) && (parenthesized_expression "(iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0)" ( (comma_expression "iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n), iVar5 != 0" (assignment_expression "iVar5 = memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n)" identifier = (call_expression "memcmp(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n)" identifier (argument_list "(*(void **)(p_Var11 + 1),__s2._M_p,(size_t)__n)" ( (pointer_expression "*(void **)(p_Var11 + 1)" * (cast_expression "(void **)(p_Var11 + 1)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var11 + 1)" ( (binary_expression "p_Var11 + 1" identifier + number_literal) )))) , (field_expression "__s2._M_p" identifier . field_identifier) , (cast_expression "(size_t)__n" ( (type_descriptor "size_t" primitive_type) ) identifier) )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "lVar8 = (long)p_Var9 - section_name._M_string_length;" (assignment_expression "lVar8 = (long)p_Var9 - section_name._M_string_length" identifier = (binary_expression "(long)p_Var9 - section_name._M_string_length" (cast_expression "(long)p_Var9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (field_expression "section_name._M_string_length" identifier . field_identifier))) ;) (if_statement "if (lVar8 < 0x80000000) {\n          if (-0x80000001 < lVar8) {\n            iVar5 = (int)lVar8;\n            break;\n          }\n          goto LAB_001baff0;\n        }" if (parenthesized_expression "(lVar8 < 0x80000000)" ( (binary_expression "lVar8 < 0x80000000" identifier < number_literal) )) (compound_statement "{\n          if (-0x80000001 < lVar8) {\n            iVar5 = (int)lVar8;\n            break;\n          }\n          goto LAB_001baff0;\n        }" { (if_statement "if (-0x80000001 < lVar8) {\n            iVar5 = (int)lVar8;\n            break;\n          }" if (parenthesized_expression "(-0x80000001 < lVar8)" ( (binary_expression "-0x80000001 < lVar8" number_literal < identifier) )) (compound_statement "{\n            iVar5 = (int)lVar8;\n            break;\n          }" { (expression_statement "iVar5 = (int)lVar8;" (assignment_expression "iVar5 = (int)lVar8" identifier = (cast_expression "(int)lVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (break_statement "break;" break ;) })) (goto_statement "goto LAB_001baff0;" goto statement_identifier ;) })) (labeled_statement "LAB_001bb03c:\n        pp_Var2 = &p_Var11->_M_left;" statement_identifier : (expression_statement "pp_Var2 = &p_Var11->_M_left;" (assignment_expression "pp_Var2 = &p_Var11->_M_left" identifier = (pointer_expression "&p_Var11->_M_left" & (field_expression "p_Var11->_M_left" identifier -> field_identifier))) ;)) (expression_statement "iVar7._M_node = p_Var11;" (assignment_expression "iVar7._M_node = p_Var11" (field_expression "iVar7._M_node" identifier . field_identifier) = identifier) ;) (expression_statement "p_Var11 = *pp_Var2;" (assignment_expression "p_Var11 = *pp_Var2" identifier = (pointer_expression "*pp_Var2" * identifier)) ;) (if_statement "if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001bb048;" if (parenthesized_expression "(*pp_Var2 == (_Base_ptr)0x0)" ( (binary_expression "*pp_Var2 == (_Base_ptr)0x0" (pointer_expression "*pp_Var2" * identifier) == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_001bb048;" goto statement_identifier ;)) })) (if_statement "if (-1 < iVar5) goto LAB_001bb03c;" if (parenthesized_expression "(-1 < iVar5)" ( (binary_expression "-1 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_001bb03c;" goto statement_identifier ;)) (labeled_statement "LAB_001baff0:\n      p_Var11 = p_Var11->_M_right;" statement_identifier : (expression_statement "p_Var11 = p_Var11->_M_right;" (assignment_expression "p_Var11 = p_Var11->_M_right" identifier = (field_expression "p_Var11->_M_right" identifier -> field_identifier)) ;)) }) while (parenthesized_expression "(p_Var11 != (_Base_ptr)0x0)" ( (binary_expression "p_Var11 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (labeled_statement "LAB_001bb048:\n    bVar13 = __pos._M_node != iVar7._M_node;" statement_identifier : (expression_statement "bVar13 = __pos._M_node != iVar7._M_node;" (assignment_expression "bVar13 = __pos._M_node != iVar7._M_node" identifier = (binary_expression "__pos._M_node != iVar7._M_node" (field_expression "__pos._M_node" identifier . field_identifier) != (field_expression "iVar7._M_node" identifier . field_identifier))) ;)) (expression_statement "__pos._M_node = iVar7._M_node;" (assignment_expression "__pos._M_node = iVar7._M_node" (field_expression "__pos._M_node" identifier . field_identifier) = (field_expression "iVar7._M_node" identifier . field_identifier)) ;) (if_statement "if (bVar13) {\n      p_Var11 = iVar7._M_node[1]._M_parent;\n      p_Var9 = p_Var11;\n      if (section_name._M_string_length <= p_Var11) {\n        p_Var9 = (_Base_ptr)section_name._M_string_length;\n      }\n      if ((p_Var9 == (_Base_ptr)0x0) ||\n         (iVar5 = memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9), iVar5 == 0)) {\n        lVar8 = section_name._M_string_length - (long)p_Var11;\n        if (0x7fffffff < lVar8) goto LAB_001bb0ca;\n        if (lVar8 < -0x80000000) goto LAB_001bb093;\n        iVar5 = (int)lVar8;\n      }\n      if (-1 < iVar5) goto LAB_001bb0ca;\n    }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n      p_Var11 = iVar7._M_node[1]._M_parent;\n      p_Var9 = p_Var11;\n      if (section_name._M_string_length <= p_Var11) {\n        p_Var9 = (_Base_ptr)section_name._M_string_length;\n      }\n      if ((p_Var9 == (_Base_ptr)0x0) ||\n         (iVar5 = memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9), iVar5 == 0)) {\n        lVar8 = section_name._M_string_length - (long)p_Var11;\n        if (0x7fffffff < lVar8) goto LAB_001bb0ca;\n        if (lVar8 < -0x80000000) goto LAB_001bb093;\n        iVar5 = (int)lVar8;\n      }\n      if (-1 < iVar5) goto LAB_001bb0ca;\n    }" { (expression_statement "p_Var11 = iVar7._M_node[1]._M_parent;" (assignment_expression "p_Var11 = iVar7._M_node[1]._M_parent" identifier = (field_expression "iVar7._M_node[1]._M_parent" (subscript_expression "iVar7._M_node[1]" (field_expression "iVar7._M_node" identifier . field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "p_Var9 = p_Var11;" (assignment_expression "p_Var9 = p_Var11" identifier = identifier) ;) (if_statement "if (section_name._M_string_length <= p_Var11) {\n        p_Var9 = (_Base_ptr)section_name._M_string_length;\n      }" if (parenthesized_expression "(section_name._M_string_length <= p_Var11)" ( (binary_expression "section_name._M_string_length <= p_Var11" (field_expression "section_name._M_string_length" identifier . field_identifier) <= identifier) )) (compound_statement "{\n        p_Var9 = (_Base_ptr)section_name._M_string_length;\n      }" { (expression_statement "p_Var9 = (_Base_ptr)section_name._M_string_length;" (assignment_expression "p_Var9 = (_Base_ptr)section_name._M_string_length" identifier = (cast_expression "(_Base_ptr)section_name._M_string_length" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "section_name._M_string_length" identifier . field_identifier))) ;) })) (if_statement "if ((p_Var9 == (_Base_ptr)0x0) ||\n         (iVar5 = memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9), iVar5 == 0)) {\n        lVar8 = section_name._M_string_length - (long)p_Var11;\n        if (0x7fffffff < lVar8) goto LAB_001bb0ca;\n        if (lVar8 < -0x80000000) goto LAB_001bb093;\n        iVar5 = (int)lVar8;\n      }" if (parenthesized_expression "((p_Var9 == (_Base_ptr)0x0) ||\n         (iVar5 = memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9), iVar5 == 0))" ( (binary_expression "(p_Var9 == (_Base_ptr)0x0) ||\n         (iVar5 = memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9), iVar5 == 0)" (parenthesized_expression "(p_Var9 == (_Base_ptr)0x0)" ( (binary_expression "p_Var9 == (_Base_ptr)0x0" identifier == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) || (parenthesized_expression "(iVar5 = memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9), iVar5 == 0)" ( (comma_expression "iVar5 = memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9), iVar5 == 0" (assignment_expression "iVar5 = memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9)" identifier = (call_expression "memcmp(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9)" identifier (argument_list "(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)p_Var9)" ( (field_expression "__s2._M_p" identifier . field_identifier) , (pointer_expression "*(void **)(iVar7._M_node + 1)" * (cast_expression "(void **)(iVar7._M_node + 1)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7._M_node + 1)" ( (binary_expression "iVar7._M_node + 1" (field_expression "iVar7._M_node" identifier . field_identifier) + number_literal) )))) , (cast_expression "(size_t)p_Var9" ( (type_descriptor "size_t" primitive_type) ) identifier) )))) , (binary_expression "iVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        lVar8 = section_name._M_string_length - (long)p_Var11;\n        if (0x7fffffff < lVar8) goto LAB_001bb0ca;\n        if (lVar8 < -0x80000000) goto LAB_001bb093;\n        iVar5 = (int)lVar8;\n      }" { (expression_statement "lVar8 = section_name._M_string_length - (long)p_Var11;" (assignment_expression "lVar8 = section_name._M_string_length - (long)p_Var11" identifier = (binary_expression "section_name._M_string_length - (long)p_Var11" (field_expression "section_name._M_string_length" identifier . field_identifier) - (cast_expression "(long)p_Var11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (0x7fffffff < lVar8) goto LAB_001bb0ca;" if (parenthesized_expression "(0x7fffffff < lVar8)" ( (binary_expression "0x7fffffff < lVar8" number_literal < identifier) )) (goto_statement "goto LAB_001bb0ca;" goto statement_identifier ;)) (if_statement "if (lVar8 < -0x80000000) goto LAB_001bb093;" if (parenthesized_expression "(lVar8 < -0x80000000)" ( (binary_expression "lVar8 < -0x80000000" identifier < number_literal) )) (goto_statement "goto LAB_001bb093;" goto statement_identifier ;)) (expression_statement "iVar5 = (int)lVar8;" (assignment_expression "iVar5 = (int)lVar8" identifier = (cast_expression "(int)lVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (if_statement "if (-1 < iVar5) goto LAB_001bb0ca;" if (parenthesized_expression "(-1 < iVar5)" ( (binary_expression "-1 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_001bb0ca;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_001bb093:\n  local_60._M_head_impl = &section_name;" statement_identifier : (expression_statement "local_60._M_head_impl = &section_name;" (assignment_expression "local_60._M_head_impl = &section_name" (field_expression "local_60._M_head_impl" identifier . field_identifier) = (pointer_expression "&section_name" & identifier)) ;)) (ERROR "iVar7 = std::\n          _Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>\n          ::\n          _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>,_std::" (assignment_expression "iVar7 = std" identifier = identifier) : : (binary_expression "_Rb_tree<std" identifier < identifier) : : (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>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (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>_>,_long_unsigned_int>,_std" (binary_expression "allocator<char>_>,_long_unsigned_int" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) > (ERROR "," ,) identifier) : : (binary_expression "_Select1st<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (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>_>,_long_unsigned_int>_>,_std" (binary_expression "allocator<char>_>,_long_unsigned_int>_" (binary_expression "allocator<char>_>,_long_unsigned_int" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "less<std" identifier < identifier) : : (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>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (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>_>,_long_unsigned_int>_>_>\n          ::\n          _M_emplace_hint_unique<const_std" (binary_expression "allocator<char>_>,_long_unsigned_int>_>_>\n          ::\n          _M_emplace_hint_unique" (binary_expression "allocator<char>_>,_long_unsigned_int>_>_" (binary_expression "allocator<char>_>,_long_unsigned_int>_" (binary_expression "allocator<char>_>,_long_unsigned_int" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) > identifier) > identifier) > (ERROR "::" : :) identifier) < identifier) : : (binary_expression "piecewise_construct_t&,_std" identifier & (ERROR "," ,) identifier) : : (binary_expression "tuple<const_std" identifier < identifier) : : (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>_>&>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "&>,_std" & (ERROR ">," > ,) identifier)) : :) (expression_statement "tuple<>_>\n                    (&(this->section_starts_)._M_t,__pos,\n                     (piecewise_construct_t *)&std::piecewise_construct,\n                     (tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                      *)&local_60,&local_61);" (binary_expression "tuple<>_>\n                    (&(this->section_starts_)._M_t,__pos,\n                     (piecewise_construct_t *)&std::piecewise_construct,\n                     (tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                      *)&local_60,&local_61)" (binary_expression "tuple<>_" identifier < (ERROR ">" >) identifier) > (parenthesized_expression "(&(this->section_starts_)._M_t,__pos,\n                     (piecewise_construct_t *)&std::piecewise_construct,\n                     (tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                      *)&local_60,&local_61)" ( (ERROR "&(this->section_starts_)._M_t,__pos,\n                     (piecewise_construct_t *)&std::" (comma_expression "&(this->section_starts_)._M_t,__pos,\n                     (piecewise_construct_t *)&std" (pointer_expression "&(this->section_starts_)._M_t" & (field_expression "(this->section_starts_)._M_t" (parenthesized_expression "(this->section_starts_)" ( (field_expression "this->section_starts_" identifier -> field_identifier) )) . field_identifier)) , (comma_expression "__pos,\n                     (piecewise_construct_t *)&std" identifier , (cast_expression "(piecewise_construct_t *)&std" ( (type_descriptor "piecewise_construct_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&std" & identifier)))) : :) (comma_expression "piecewise_construct,\n                     (tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                      *)&local_60,&local_61" identifier , (comma_expression "(tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                      *)&local_60,&local_61" (binary_expression "(tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                      *)&local_60" (parenthesized_expression "(tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>&>\n                      *)" ( (ERROR "tuple<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "tuple<const_std::__cxx11::basic_string<char,_std" (binary_expression "tuple<const_std::__cxx11::basic_string<char" (binary_expression "tuple<const_std" identifier < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>&>\n                      *" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "&>\n                      *" & (ERROR ">" >) (pointer_expression "*" * identifier))) )) & identifier) , (pointer_expression "&local_61" & identifier))) ))) ;) (expression_statement "local_80 = section_name._M_dataplus._M_p;" (assignment_expression "local_80 = section_name._M_dataplus._M_p" identifier = (field_expression "section_name._M_dataplus._M_p" (field_expression "section_name._M_dataplus" identifier . field_identifier) . field_identifier)) ;) (labeled_statement "LAB_001bb0ca:\n  *(long *)(iVar7._M_node + 2) = lVar12;" statement_identifier : (expression_statement "*(long *)(iVar7._M_node + 2) = lVar12;" (assignment_expression "*(long *)(iVar7._M_node + 2) = lVar12" (pointer_expression "*(long *)(iVar7._M_node + 2)" * (cast_expression "(long *)(iVar7._M_node + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7._M_node + 2)" ( (binary_expression "iVar7._M_node + 2" (field_expression "iVar7._M_node" identifier . field_identifier) + number_literal) )))) = identifier) ;)) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_80 == &section_name.field_2) {\n    return;\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_80 == &section_name.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_80 == &section_name.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       *)local_80 == &section_name.field_2" (binary_expression "allocator<char>_>_9\n       *)local_80" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)local_80" identifier * (ERROR ")" )) identifier)) == (pointer_expression "&section_name.field_2" & (field_expression "section_name.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "operator_delete(local_80);" (call_expression "operator_delete(local_80)" identifier (argument_list "(local_80)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001baf10(long param_1,undefined8 param_2,char *param_3)\n\n{\n  byte *pbVar1;\n  long *plVar2;\n  byte bVar3;\n  ulong uVar4;\n  undefined1 *__s2;\n  char cVar5;\n  int iVar6;\n  char *pcVar7;\n  long lVar8;\n  undefined8 uVar9;\n  long lVar10;\n  ulong uVar11;\n  byte *pbVar12;\n  long lVar13;\n  long lVar14;\n  long lVar15;\n  bool bVar16;\n  undefined1 *local_80;\n  undefined1 local_61;\n  undefined1 **local_60;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  pcVar7 = strchr(param_3,0x3d);\n  if (pcVar7 == (char *)0x0) {\n    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    FUN_001690a0(uVar9);\n    return;\n  }\n  local_58 = local_48;\n  pbVar1 = (byte *)(pcVar7 + 1);\n  FUN_0015cbe0(&local_58,param_3,pcVar7);\n  cVar5 = pcVar7[1];\n  pbVar12 = pbVar1;\n  if (cVar5 == '0') {\n    if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }\n                    \n  FUN_00274680();\n  __s2 = local_58;\n  if (*pbVar12 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n    if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }\n    uVar9 = gettext("--section-start argument %s is not a valid hex number");\n    FUN_001690a0(uVar9,pbVar1);\nLAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }\n    return;\n  }\n  lVar15 = 0;\nLAB_001bafbe:\n  lVar13 = param_1 + 0x9278;\n  if (*(long *)(param_1 + 0x9280) != 0) {\n    local_80 = local_58;\n    lVar8 = lVar13;\n    lVar14 = *(long *)(param_1 + 0x9280);\n    do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);\nLAB_001bb048:\n    bVar16 = lVar13 != lVar8;\n    lVar13 = lVar8;\n    if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }\n  }\nLAB_001bb093:\n  local_60 = &local_58;\n  lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61);\n  local_80 = local_58;\nLAB_001bb0ca:\n  *(long *)(lVar8 + 0x40) = lVar15;\n  if (local_80 == local_48) {\n    return;\n  }\n  FUN_00276d20(local_80);\n  return;\n}\n\n" (function_definition "void FUN_001baf10(long param_1,undefined8 param_2,char *param_3)\n\n{\n  byte *pbVar1;\n  long *plVar2;\n  byte bVar3;\n  ulong uVar4;\n  undefined1 *__s2;\n  char cVar5;\n  int iVar6;\n  char *pcVar7;\n  long lVar8;\n  undefined8 uVar9;\n  long lVar10;\n  ulong uVar11;\n  byte *pbVar12;\n  long lVar13;\n  long lVar14;\n  long lVar15;\n  bool bVar16;\n  undefined1 *local_80;\n  undefined1 local_61;\n  undefined1 **local_60;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  pcVar7 = strchr(param_3,0x3d);\n  if (pcVar7 == (char *)0x0) {\n    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    FUN_001690a0(uVar9);\n    return;\n  }\n  local_58 = local_48;\n  pbVar1 = (byte *)(pcVar7 + 1);\n  FUN_0015cbe0(&local_58,param_3,pcVar7);\n  cVar5 = pcVar7[1];\n  pbVar12 = pbVar1;\n  if (cVar5 == '0') {\n    if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }\n                    \n  FUN_00274680();\n  __s2 = local_58;\n  if (*pbVar12 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n    if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }\n    uVar9 = gettext("--section-start argument %s is not a valid hex number");\n    FUN_001690a0(uVar9,pbVar1);\nLAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }\n    return;\n  }\n  lVar15 = 0;\nLAB_001bafbe:\n  lVar13 = param_1 + 0x9278;\n  if (*(long *)(param_1 + 0x9280) != 0) {\n    local_80 = local_58;\n    lVar8 = lVar13;\n    lVar14 = *(long *)(param_1 + 0x9280);\n    do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);\nLAB_001bb048:\n    bVar16 = lVar13 != lVar8;\n    lVar13 = lVar8;\n    if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }\n  }\nLAB_001bb093:\n  local_60 = &local_58;\n  lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61);\n  local_80 = local_58;\nLAB_001bb0ca:\n  *(long *)(lVar8 + 0x40) = lVar15;\n  if (local_80 == local_48) {\n    return;\n  }\n  FUN_00276d20(local_80);\n  return;\n}" primitive_type (function_declarator "FUN_001baf10(long param_1,undefined8 param_2,char *param_3)" identifier (parameter_list "(long param_1,undefined8 param_2,char *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  long *plVar2;\n  byte bVar3;\n  ulong uVar4;\n  undefined1 *__s2;\n  char cVar5;\n  int iVar6;\n  char *pcVar7;\n  long lVar8;\n  undefined8 uVar9;\n  long lVar10;\n  ulong uVar11;\n  byte *pbVar12;\n  long lVar13;\n  long lVar14;\n  long lVar15;\n  bool bVar16;\n  undefined1 *local_80;\n  undefined1 local_61;\n  undefined1 **local_60;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  pcVar7 = strchr(param_3,0x3d);\n  if (pcVar7 == (char *)0x0) {\n    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    FUN_001690a0(uVar9);\n    return;\n  }\n  local_58 = local_48;\n  pbVar1 = (byte *)(pcVar7 + 1);\n  FUN_0015cbe0(&local_58,param_3,pcVar7);\n  cVar5 = pcVar7[1];\n  pbVar12 = pbVar1;\n  if (cVar5 == '0') {\n    if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }\n                    \n  FUN_00274680();\n  __s2 = local_58;\n  if (*pbVar12 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n    if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }\n    uVar9 = gettext("--section-start argument %s is not a valid hex number");\n    FUN_001690a0(uVar9,pbVar1);\nLAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }\n    return;\n  }\n  lVar15 = 0;\nLAB_001bafbe:\n  lVar13 = param_1 + 0x9278;\n  if (*(long *)(param_1 + 0x9280) != 0) {\n    local_80 = local_58;\n    lVar8 = lVar13;\n    lVar14 = *(long *)(param_1 + 0x9280);\n    do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);\nLAB_001bb048:\n    bVar16 = lVar13 != lVar8;\n    lVar13 = lVar8;\n    if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }\n  }\nLAB_001bb093:\n  local_60 = &local_58;\n  lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61);\n  local_80 = local_58;\nLAB_001bb0ca:\n  *(long *)(lVar8 + 0x40) = lVar15;\n  if (local_80 == local_48) {\n    return;\n  }\n  FUN_00276d20(local_80);\n  return;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "undefined1 *__s2;" type_identifier (pointer_declarator "*__s2" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "undefined1 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "undefined1 local_61;" type_identifier identifier ;) (declaration "undefined1 **local_60;" type_identifier (pointer_declarator "**local_60" * (pointer_declarator "*local_60" * identifier)) ;) (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 ]) ;) (expression_statement "pcVar7 = strchr(param_3,0x3d);" (assignment_expression "pcVar7 = strchr(param_3,0x3d)" identifier = (call_expression "strchr(param_3,0x3d)" identifier (argument_list "(param_3,0x3d)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    FUN_001690a0(uVar9);\n    return;\n  }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    FUN_001690a0(uVar9);\n    return;\n  }" { (expression_statement "uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");" (assignment_expression "uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS")" identifier = (call_expression "gettext("invalid argument to --section-start; must be SECTION=ADDRESS")" identifier (argument_list "("invalid argument to --section-start; must be SECTION=ADDRESS")" ( (string_literal ""invalid argument to --section-start; must be SECTION=ADDRESS"" " string_content ") )))) ;) (expression_statement "FUN_001690a0(uVar9);" (call_expression "FUN_001690a0(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (expression_statement "pbVar1 = (byte *)(pcVar7 + 1);" (assignment_expression "pbVar1 = (byte *)(pcVar7 + 1)" identifier = (cast_expression "(byte *)(pcVar7 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 1)" ( (binary_expression "pcVar7 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_0015cbe0(&local_58,param_3,pcVar7);" (call_expression "FUN_0015cbe0(&local_58,param_3,pcVar7)" identifier (argument_list "(&local_58,param_3,pcVar7)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (expression_statement "cVar5 = pcVar7[1];" (assignment_expression "cVar5 = pcVar7[1]" identifier = (subscript_expression "pcVar7[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar12 = pbVar1;" (assignment_expression "pbVar12 = pbVar1" identifier = identifier) ;) (if_statement "if (cVar5 == '0') {\n    if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }" if (parenthesized_expression "(cVar5 == '0')" ( (binary_expression "cVar5 == '0'" identifier == (char_literal "'0'" ' character ')) )) (compound_statement "{\n    if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }\n  }" { (if_statement "if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }" if (parenthesized_expression "((pcVar7[2] & 0xdfU) == 0x58)" ( (binary_expression "(pcVar7[2] & 0xdfU) == 0x58" (parenthesized_expression "(pcVar7[2] & 0xdfU)" ( (binary_expression "pcVar7[2] & 0xdfU" (subscript_expression "pcVar7[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }" { (expression_statement "pbVar12 = (byte *)(pcVar7 + 3);" (assignment_expression "pbVar12 = (byte *)(pcVar7 + 3)" identifier = (cast_expression "(byte *)(pcVar7 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 3)" ( (binary_expression "pcVar7 + 3" identifier + number_literal) )))) ;) (expression_statement "cVar5 = pcVar7[3];" (assignment_expression "cVar5 = pcVar7[3]" identifier = (subscript_expression "pcVar7[3]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_001baf6f;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }" else (compound_statement "{\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }" { (labeled_statement "LAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }" statement_identifier : (if_statement "if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }" { (expression_statement "uVar9 = gettext("--section-start address missing");" (assignment_expression "uVar9 = gettext("--section-start address missing")" identifier = (call_expression "gettext("--section-start address missing")" identifier (argument_list "("--section-start address missing")" ( (string_literal ""--section-start address missing"" " string_content ") )))) ;) (expression_statement "FUN_001690a0(uVar9);" (call_expression "FUN_001690a0(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) (goto_statement "goto LAB_001bb10e;" goto statement_identifier ;) }))) }))) (expression_statement "FUN_00274680();" (call_expression "FUN_00274680()" identifier (argument_list "()" ( ))) ;) (expression_statement "__s2 = local_58;" (assignment_expression "__s2 = local_58" identifier = identifier) ;) (if_statement "if (*pbVar12 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n    if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }\n    uVar9 = gettext("--section-start argument %s is not a valid hex number");\n    FUN_001690a0(uVar9,pbVar1);\nLAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }\n    return;\n  }" if (parenthesized_expression "(*pbVar12 != 0)" ( (binary_expression "*pbVar12 != 0" (pointer_expression "*pbVar12" * identifier) != number_literal) )) (compound_statement "{\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n    if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }\n    uVar9 = gettext("--section-start argument %s is not a valid hex number");\n    FUN_001690a0(uVar9,pbVar1);\nLAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }\n    return;\n  }" { (expression_statement "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];" (assignment_expression "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12]" identifier = (subscript_expression ""cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12]" (string_literal ""cccccccccccccccccccccccccccccccccccccccccccccccc"" " string_content ") [ (pointer_expression "*pbVar12" * identifier) ])) ;) (if_statement "if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }" if (parenthesized_expression "(bVar3 != 99)" ( (binary_expression "bVar3 != 99" identifier != number_literal) )) (compound_statement "{\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }" { (expression_statement "lVar15 = 0;" (assignment_expression "lVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);" do (compound_statement "{\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      }" { (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "lVar15 = lVar15 * 0x10 + (ulong)bVar3;" (assignment_expression "lVar15 = lVar15 * 0x10 + (ulong)bVar3" identifier = (binary_expression "lVar15 * 0x10 + (ulong)bVar3" (binary_expression "lVar15 * 0x10" identifier * number_literal) + (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier))) ;) (if_statement "if (*pbVar12 == 0) goto LAB_001bafbe;" if (parenthesized_expression "(*pbVar12 == 0)" ( (binary_expression "*pbVar12 == 0" (pointer_expression "*pbVar12" * identifier) == number_literal) )) (goto_statement "goto LAB_001bafbe;" goto statement_identifier ;)) (expression_statement "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];" (assignment_expression "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12]" identifier = (subscript_expression ""cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12]" (string_literal ""cccccccccccccccccccccccccccccccccccccccccccccccc"" " string_content ") [ (pointer_expression "*pbVar12" * identifier) ])) ;) }) while (parenthesized_expression "(bVar3 != 99)" ( (binary_expression "bVar3 != 99" identifier != number_literal) )) ;) })) (expression_statement "uVar9 = gettext("--section-start argument %s is not a valid hex number");" (assignment_expression "uVar9 = gettext("--section-start argument %s is not a valid hex number")" identifier = (call_expression "gettext("--section-start argument %s is not a valid hex number")" identifier (argument_list "("--section-start argument %s is not a valid hex number")" ( (string_literal ""--section-start argument %s is not a valid hex number"" " string_content ") )))) ;) (expression_statement "FUN_001690a0(uVar9,pbVar1);" (call_expression "FUN_001690a0(uVar9,pbVar1)" identifier (argument_list "(uVar9,pbVar1)" ( identifier , identifier ))) ;) (labeled_statement "LAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }" statement_identifier : (if_statement "if (local_58 != local_48) {\n      FUN_00276d20();\n    }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n      FUN_00276d20();\n    }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return;" return ;) })) (expression_statement "lVar15 = 0;" (assignment_expression "lVar15 = 0" identifier = number_literal) ;) (labeled_statement "LAB_001bafbe:\n  lVar13 = param_1 + 0x9278;" statement_identifier : (expression_statement "lVar13 = param_1 + 0x9278;" (assignment_expression "lVar13 = param_1 + 0x9278" identifier = (binary_expression "param_1 + 0x9278" identifier + number_literal)) ;)) (if_statement "if (*(long *)(param_1 + 0x9280) != 0) {\n    local_80 = local_58;\n    lVar8 = lVar13;\n    lVar14 = *(long *)(param_1 + 0x9280);\n    do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);\nLAB_001bb048:\n    bVar16 = lVar13 != lVar8;\n    lVar13 = lVar8;\n    if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x9280) != 0)" ( (binary_expression "*(long *)(param_1 + 0x9280) != 0" (pointer_expression "*(long *)(param_1 + 0x9280)" * (cast_expression "(long *)(param_1 + 0x9280)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x9280)" ( (binary_expression "param_1 + 0x9280" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    local_80 = local_58;\n    lVar8 = lVar13;\n    lVar14 = *(long *)(param_1 + 0x9280);\n    do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);\nLAB_001bb048:\n    bVar16 = lVar13 != lVar8;\n    lVar13 = lVar8;\n    if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }\n  }" { (expression_statement "local_80 = local_58;" (assignment_expression "local_80 = local_58" identifier = identifier) ;) (expression_statement "lVar8 = lVar13;" (assignment_expression "lVar8 = lVar13" identifier = identifier) ;) (expression_statement "lVar14 = *(long *)(param_1 + 0x9280);" (assignment_expression "lVar14 = *(long *)(param_1 + 0x9280)" identifier = (pointer_expression "*(long *)(param_1 + 0x9280)" * (cast_expression "(long *)(param_1 + 0x9280)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x9280)" ( (binary_expression "param_1 + 0x9280" identifier + number_literal) ))))) ;) (do_statement "do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);" do (compound_statement "{\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    }" { (while_statement "while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }" { (expression_statement "uVar4 = *(ulong *)(lVar14 + 0x28);" (assignment_expression "uVar4 = *(ulong *)(lVar14 + 0x28)" identifier = (pointer_expression "*(ulong *)(lVar14 + 0x28)" * (cast_expression "(ulong *)(lVar14 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x28)" ( (binary_expression "lVar14 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = local_50;" (assignment_expression "uVar11 = local_50" identifier = identifier) ;) (if_statement "if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }" if (parenthesized_expression "(uVar4 <= local_50)" ( (binary_expression "uVar4 <= local_50" identifier <= identifier) )) (compound_statement "{\n          uVar11 = uVar4;\n        }" { (expression_statement "uVar11 = uVar4;" (assignment_expression "uVar11 = uVar4" identifier = identifier) ;) })) (if_statement "if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;" if (parenthesized_expression "((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))" ( (binary_expression "(uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0)" (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0)" ( (comma_expression "iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0" (assignment_expression "iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11)" identifier = (call_expression "memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11)" identifier (argument_list "(*(void **)(lVar14 + 0x20),__s2,uVar11)" ( (pointer_expression "*(void **)(lVar14 + 0x20)" * (cast_expression "(void **)(lVar14 + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar14 + 0x20)" ( (binary_expression "lVar14 + 0x20" identifier + number_literal) )))) , identifier , identifier )))) , (binary_expression "iVar6 != 0" identifier != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = uVar4 - local_50;" (assignment_expression "lVar10 = uVar4 - local_50" identifier = (binary_expression "uVar4 - local_50" identifier - identifier)) ;) (if_statement "if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }" if (parenthesized_expression "(lVar10 < 0x80000000)" ( (binary_expression "lVar10 < 0x80000000" identifier < number_literal) )) (compound_statement "{\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }" { (if_statement "if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }" if (parenthesized_expression "(-0x80000001 < lVar10)" ( (binary_expression "-0x80000001 < lVar10" number_literal < identifier) )) (compound_statement "{\n            iVar6 = (int)lVar10;\n            break;\n          }" { (expression_statement "iVar6 = (int)lVar10;" (assignment_expression "iVar6 = (int)lVar10" identifier = (cast_expression "(int)lVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (break_statement "break;" break ;) })) (goto_statement "goto LAB_001baff0;" goto statement_identifier ;) })) (labeled_statement "LAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);" statement_identifier : (expression_statement "plVar2 = (long *)(lVar14 + 0x10);" (assignment_expression "plVar2 = (long *)(lVar14 + 0x10)" identifier = (cast_expression "(long *)(lVar14 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x10)" ( (binary_expression "lVar14 + 0x10" identifier + number_literal) )))) ;)) (expression_statement "lVar8 = lVar14;" (assignment_expression "lVar8 = lVar14" identifier = identifier) ;) (expression_statement "lVar14 = *plVar2;" (assignment_expression "lVar14 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (if_statement "if (*plVar2 == 0) goto LAB_001bb048;" if (parenthesized_expression "(*plVar2 == 0)" ( (binary_expression "*plVar2 == 0" (pointer_expression "*plVar2" * identifier) == number_literal) )) (goto_statement "goto LAB_001bb048;" goto statement_identifier ;)) })) (if_statement "if (-1 < iVar6) goto LAB_001bb03c;" if (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) (goto_statement "goto LAB_001bb03c;" goto statement_identifier ;)) (labeled_statement "LAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);" statement_identifier : (expression_statement "lVar14 = *(long *)(lVar14 + 0x18);" (assignment_expression "lVar14 = *(long *)(lVar14 + 0x18)" identifier = (pointer_expression "*(long *)(lVar14 + 0x18)" * (cast_expression "(long *)(lVar14 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x18)" ( (binary_expression "lVar14 + 0x18" identifier + number_literal) ))))) ;)) }) while (parenthesized_expression "(lVar14 != 0)" ( (binary_expression "lVar14 != 0" identifier != number_literal) )) ;) (labeled_statement "LAB_001bb048:\n    bVar16 = lVar13 != lVar8;" statement_identifier : (expression_statement "bVar16 = lVar13 != lVar8;" (assignment_expression "bVar16 = lVar13 != lVar8" identifier = (binary_expression "lVar13 != lVar8" identifier != identifier)) ;)) (expression_statement "lVar13 = lVar8;" (assignment_expression "lVar13 = lVar8" identifier = identifier) ;) (if_statement "if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }" { (expression_statement "uVar4 = *(ulong *)(lVar8 + 0x28);" (assignment_expression "uVar4 = *(ulong *)(lVar8 + 0x28)" identifier = (pointer_expression "*(ulong *)(lVar8 + 0x28)" * (cast_expression "(ulong *)(lVar8 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x28)" ( (binary_expression "lVar8 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = uVar4;" (assignment_expression "uVar11 = uVar4" identifier = identifier) ;) (if_statement "if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }" if (parenthesized_expression "(local_50 <= uVar4)" ( (binary_expression "local_50 <= uVar4" identifier <= identifier) )) (compound_statement "{\n        uVar11 = local_50;\n      }" { (expression_statement "uVar11 = local_50;" (assignment_expression "uVar11 = local_50" identifier = identifier) ;) })) (if_statement "if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }" if (parenthesized_expression "((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0))" ( (binary_expression "(uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)" (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)" ( (comma_expression "iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0" (assignment_expression "iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11)" identifier = (call_expression "memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11)" identifier (argument_list "(__s2,*(void **)(lVar8 + 0x20),uVar11)" ( identifier , (pointer_expression "*(void **)(lVar8 + 0x20)" * (cast_expression "(void **)(lVar8 + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0x20)" ( (binary_expression "lVar8 + 0x20" identifier + number_literal) )))) , identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }" { (expression_statement "lVar14 = local_50 - uVar4;" (assignment_expression "lVar14 = local_50 - uVar4" identifier = (binary_expression "local_50 - uVar4" identifier - identifier)) ;) (if_statement "if (0x7fffffff < lVar14) goto LAB_001bb0ca;" if (parenthesized_expression "(0x7fffffff < lVar14)" ( (binary_expression "0x7fffffff < lVar14" number_literal < identifier) )) (goto_statement "goto LAB_001bb0ca;" goto statement_identifier ;)) (if_statement "if (lVar14 < -0x80000000) goto LAB_001bb093;" if (parenthesized_expression "(lVar14 < -0x80000000)" ( (binary_expression "lVar14 < -0x80000000" identifier < number_literal) )) (goto_statement "goto LAB_001bb093;" goto statement_identifier ;)) (expression_statement "iVar6 = (int)lVar14;" (assignment_expression "iVar6 = (int)lVar14" identifier = (cast_expression "(int)lVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (if_statement "if (-1 < iVar6) goto LAB_001bb0ca;" if (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) (goto_statement "goto LAB_001bb0ca;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_001bb093:\n  local_60 = &local_58;" statement_identifier : (expression_statement "local_60 = &local_58;" (assignment_expression "local_60 = &local_58" identifier = (pointer_expression "&local_58" & identifier)) ;)) (expression_statement "lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61);" (assignment_expression "lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61)" identifier = (call_expression "FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61)" identifier (argument_list "(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61)" ( (binary_expression "param_1 + 0x9270" identifier + number_literal) , identifier , (pointer_expression "&DAT_00317ac0" & identifier) , (pointer_expression "&local_60" & identifier) , (pointer_expression "&local_61" & identifier) )))) ;) (expression_statement "local_80 = local_58;" (assignment_expression "local_80 = local_58" identifier = identifier) ;) (labeled_statement "LAB_001bb0ca:\n  *(long *)(lVar8 + 0x40) = lVar15;" statement_identifier : (expression_statement "*(long *)(lVar8 + 0x40) = lVar15;" (assignment_expression "*(long *)(lVar8 + 0x40) = lVar15" (pointer_expression "*(long *)(lVar8 + 0x40)" * (cast_expression "(long *)(lVar8 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x40)" ( (binary_expression "lVar8 + 0x40" identifier + number_literal) )))) = identifier) ;)) (if_statement "if (local_80 == local_48) {\n    return;\n  }" if (parenthesized_expression "(local_80 == local_48)" ( (binary_expression "local_80 == local_48" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_00276d20(local_80);" (call_expression "FUN_00276d20(local_80)" identifier (argument_list "(local_80)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , 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 ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) }))) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (string_literal " string_content ") [ (pointer_expression * IDENT) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression (string_literal " string_content ") [ (pointer_expression * IDENT) ])) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = 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 ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (break_statement break ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT != IDENT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = 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 , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_001baf10(long param_1,undefined8 param_2,char *param_3)\n\n{\n  byte *pbVar1;\n  long *plVar2;\n  byte bVar3;\n  ulong uVar4;\n  undefined1 *__s2;\n  char cVar5;\n  int iVar6;\n  char *pcVar7;\n  long lVar8;\n  undefined8 uVar9;\n  long lVar10;\n  ulong uVar11;\n  byte *pbVar12;\n  long lVar13;\n  long lVar14;\n  long lVar15;\n  bool bVar16;\n  undefined1 *local_80;\n  undefined1 local_61;\n  undefined1 **local_60;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  pcVar7 = strchr(param_3,0x3d);\n  if (pcVar7 == (char *)0x0) {\n    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    FUN_001690a0(uVar9);\n    return;\n  }\n  local_58 = local_48;\n  pbVar1 = (byte *)(pcVar7 + 1);\n  FUN_0015cbe0(&local_58,param_3,pcVar7);\n  cVar5 = pcVar7[1];\n  pbVar12 = pbVar1;\n  if (cVar5 == '0') {\n    if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }\n                    \n  FUN_00274680();\n  __s2 = local_58;\n  if (*pbVar12 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n    if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }\n    uVar9 = gettext("--section-start argument %s is not a valid hex number");\n    FUN_001690a0(uVar9,pbVar1);\nLAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }\n    return;\n  }\n  lVar15 = 0;\nLAB_001bafbe:\n  lVar13 = param_1 + 0x9278;\n  if (*(long *)(param_1 + 0x9280) != 0) {\n    local_80 = local_58;\n    lVar8 = lVar13;\n    lVar14 = *(long *)(param_1 + 0x9280);\n    do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);\nLAB_001bb048:\n    bVar16 = lVar13 != lVar8;\n    lVar13 = lVar8;\n    if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }\n  }\nLAB_001bb093:\n  local_60 = &local_58;\n  lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61);\n  local_80 = local_58;\nLAB_001bb0ca:\n  *(long *)(lVar8 + 0x40) = lVar15;\n  if (local_80 == local_48) {\n    return;\n  }\n  FUN_00276d20(local_80);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001baf10(long param_1,undefined8 param_2,char *param_3)" (identifier "FUN_001baf10") (parameter_list "(long param_1,undefined8 param_2,char *param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "char *param_3" (primitive_type "char") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  long *plVar2;\n  byte bVar3;\n  ulong uVar4;\n  undefined1 *__s2;\n  char cVar5;\n  int iVar6;\n  char *pcVar7;\n  long lVar8;\n  undefined8 uVar9;\n  long lVar10;\n  ulong uVar11;\n  byte *pbVar12;\n  long lVar13;\n  long lVar14;\n  long lVar15;\n  bool bVar16;\n  undefined1 *local_80;\n  undefined1 local_61;\n  undefined1 **local_60;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  pcVar7 = strchr(param_3,0x3d);\n  if (pcVar7 == (char *)0x0) {\n    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    FUN_001690a0(uVar9);\n    return;\n  }\n  local_58 = local_48;\n  pbVar1 = (byte *)(pcVar7 + 1);\n  FUN_0015cbe0(&local_58,param_3,pcVar7);\n  cVar5 = pcVar7[1];\n  pbVar12 = pbVar1;\n  if (cVar5 == '0') {\n    if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }\n                    \n  FUN_00274680();\n  __s2 = local_58;\n  if (*pbVar12 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n    if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }\n    uVar9 = gettext("--section-start argument %s is not a valid hex number");\n    FUN_001690a0(uVar9,pbVar1);\nLAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }\n    return;\n  }\n  lVar15 = 0;\nLAB_001bafbe:\n  lVar13 = param_1 + 0x9278;\n  if (*(long *)(param_1 + 0x9280) != 0) {\n    local_80 = local_58;\n    lVar8 = lVar13;\n    lVar14 = *(long *)(param_1 + 0x9280);\n    do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);\nLAB_001bb048:\n    bVar16 = lVar13 != lVar8;\n    lVar13 = lVar8;\n    if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }\n  }\nLAB_001bb093:\n  local_60 = &local_58;\n  lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61);\n  local_80 = local_58;\nLAB_001bb0ca:\n  *(long *)(lVar8 + 0x40) = lVar15;\n  if (local_80 == local_48) {\n    return;\n  }\n  FUN_00276d20(local_80);\n  return;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "undefined1 *__s2;" (type_identifier "undefined1") (pointer_declarator "*__s2" (* "*") (identifier "__s2")) (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "undefined8 uVar9;" (type_identifier "undefined8") (identifier "uVar9") (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "long lVar13;" (sized_type_specifier "long" (long "long")) (identifier "lVar13") (; ";")) (declaration "long lVar14;" (sized_type_specifier "long" (long "long")) (identifier "lVar14") (; ";")) (declaration "long lVar15;" (sized_type_specifier "long" (long "long")) (identifier "lVar15") (; ";")) (declaration "bool bVar16;" (primitive_type "bool") (identifier "bVar16") (; ";")) (declaration "undefined1 *local_80;" (type_identifier "undefined1") (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "undefined1 local_61;" (type_identifier "undefined1") (identifier "local_61") (; ";")) (declaration "undefined1 **local_60;" (type_identifier "undefined1") (pointer_declarator "**local_60" (* "*") (pointer_declarator "*local_60" (* "*") (identifier "local_60"))) (; ";")) (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") (] "]")) (; ";")) (expression_statement "pcVar7 = strchr(param_3,0x3d);" (assignment_expression "pcVar7 = strchr(param_3,0x3d)" (identifier "pcVar7") (= "=") (call_expression "strchr(param_3,0x3d)" (identifier "strchr") (argument_list "(param_3,0x3d)" (( "(") (identifier "param_3") (, ",") (number_literal "0x3d") () ")")))) (; ";")) (if_statement "if (pcVar7 == (char *)0x0) {\n    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    FUN_001690a0(uVar9);\n    return;\n  }" (if "if") (parenthesized_expression "(pcVar7 == (char *)0x0)" (( "(") (binary_expression "pcVar7 == (char *)0x0" (identifier "pcVar7") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");\n    FUN_001690a0(uVar9);\n    return;\n  }" ({ "{") (expression_statement "uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");" (assignment_expression "uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS")" (identifier "uVar9") (= "=") (call_expression "gettext("invalid argument to --section-start; must be SECTION=ADDRESS")" (identifier "gettext") (argument_list "("invalid argument to --section-start; must be SECTION=ADDRESS")" (( "(") (string_literal ""invalid argument to --section-start; must be SECTION=ADDRESS"" (" """) (string_content "invalid argument to --section-start; must be SECTION=ADDRESS") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001690a0(uVar9);" (call_expression "FUN_001690a0(uVar9)" (identifier "FUN_001690a0") (argument_list "(uVar9)" (( "(") (identifier "uVar9") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" (identifier "local_58") (= "=") (identifier "local_48")) (; ";")) (expression_statement "pbVar1 = (byte *)(pcVar7 + 1);" (assignment_expression "pbVar1 = (byte *)(pcVar7 + 1)" (identifier "pbVar1") (= "=") (cast_expression "(byte *)(pcVar7 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar7 + 1)" (( "(") (binary_expression "pcVar7 + 1" (identifier "pcVar7") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "FUN_0015cbe0(&local_58,param_3,pcVar7);" (call_expression "FUN_0015cbe0(&local_58,param_3,pcVar7)" (identifier "FUN_0015cbe0") (argument_list "(&local_58,param_3,pcVar7)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "param_3") (, ",") (identifier "pcVar7") () ")"))) (; ";")) (expression_statement "cVar5 = pcVar7[1];" (assignment_expression "cVar5 = pcVar7[1]" (identifier "cVar5") (= "=") (subscript_expression "pcVar7[1]" (identifier "pcVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pbVar12 = pbVar1;" (assignment_expression "pbVar12 = pbVar1" (identifier "pbVar12") (= "=") (identifier "pbVar1")) (; ";")) (if_statement "if (cVar5 == '0') {\n    if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }\n  }\n  else {\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }" (if "if") (parenthesized_expression "(cVar5 == '0')" (( "(") (binary_expression "cVar5 == '0'" (identifier "cVar5") (== "==") (char_literal "'0'" (' "'") (character "0") (' "'"))) () ")")) (compound_statement "{\n    if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }\n  }" ({ "{") (if_statement "if ((pcVar7[2] & 0xdfU) == 0x58) {\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }" (if "if") (parenthesized_expression "((pcVar7[2] & 0xdfU) == 0x58)" (( "(") (binary_expression "(pcVar7[2] & 0xdfU) == 0x58" (parenthesized_expression "(pcVar7[2] & 0xdfU)" (( "(") (binary_expression "pcVar7[2] & 0xdfU" (subscript_expression "pcVar7[2]" (identifier "pcVar7") ([ "[") (number_literal "2") (] "]")) (& "&") (number_literal "0xdfU")) () ")")) (== "==") (number_literal "0x58")) () ")")) (compound_statement "{\n      pbVar12 = (byte *)(pcVar7 + 3);\n      cVar5 = pcVar7[3];\n      goto LAB_001baf6f;\n    }" ({ "{") (expression_statement "pbVar12 = (byte *)(pcVar7 + 3);" (assignment_expression "pbVar12 = (byte *)(pcVar7 + 3)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(pcVar7 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar7 + 3)" (( "(") (binary_expression "pcVar7 + 3" (identifier "pcVar7") (+ "+") (number_literal "3")) () ")")))) (; ";")) (expression_statement "cVar5 = pcVar7[3];" (assignment_expression "cVar5 = pcVar7[3]" (identifier "cVar5") (= "=") (subscript_expression "pcVar7[3]" (identifier "pcVar7") ([ "[") (number_literal "3") (] "]"))) (; ";")) (goto_statement "goto LAB_001baf6f;" (goto "goto") (statement_identifier "LAB_001baf6f") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }" (else "else") (compound_statement "{\nLAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }\n  }" ({ "{") (labeled_statement "LAB_001baf6f:\n    if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }" (statement_identifier "LAB_001baf6f") (: ":") (if_statement "if (cVar5 == '\0') {\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar9 = gettext("--section-start address missing");\n      FUN_001690a0(uVar9);\n      goto LAB_001bb10e;\n    }" ({ "{") (expression_statement "uVar9 = gettext("--section-start address missing");" (assignment_expression "uVar9 = gettext("--section-start address missing")" (identifier "uVar9") (= "=") (call_expression "gettext("--section-start address missing")" (identifier "gettext") (argument_list "("--section-start address missing")" (( "(") (string_literal ""--section-start address missing"" (" """) (string_content "--section-start address missing") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001690a0(uVar9);" (call_expression "FUN_001690a0(uVar9)" (identifier "FUN_001690a0") (argument_list "(uVar9)" (( "(") (identifier "uVar9") () ")"))) (; ";")) (goto_statement "goto LAB_001bb10e;" (goto "goto") (statement_identifier "LAB_001bb10e") (; ";")) (} "}")))) (} "}")))) (expression_statement "FUN_00274680();" (call_expression "FUN_00274680()" (identifier "FUN_00274680") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "__s2 = local_58;" (assignment_expression "__s2 = local_58" (identifier "__s2") (= "=") (identifier "local_58")) (; ";")) (if_statement "if (*pbVar12 != 0) {\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n    if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }\n    uVar9 = gettext("--section-start argument %s is not a valid hex number");\n    FUN_001690a0(uVar9,pbVar1);\nLAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }\n    return;\n  }" (if "if") (parenthesized_expression "(*pbVar12 != 0)" (( "(") (binary_expression "*pbVar12 != 0" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n    if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }\n    uVar9 = gettext("--section-start argument %s is not a valid hex number");\n    FUN_001690a0(uVar9,pbVar1);\nLAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }\n    return;\n  }" ({ "{") (expression_statement "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];" (assignment_expression "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12]" (identifier "bVar3") (= "=") (subscript_expression ""cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12]" (string_literal ""cccccccccccccccccccccccccccccccccccccccccccccccc"" (" """) (string_content "cccccccccccccccccccccccccccccccccccccccccccccccc") (" """)) ([ "[") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (] "]"))) (; ";")) (if_statement "if (bVar3 != 99) {\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }" (if "if") (parenthesized_expression "(bVar3 != 99)" (( "(") (binary_expression "bVar3 != 99" (identifier "bVar3") (!= "!=") (number_literal "99")) () ")")) (compound_statement "{\n      lVar15 = 0;\n      do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);\n    }" ({ "{") (expression_statement "lVar15 = 0;" (assignment_expression "lVar15 = 0" (identifier "lVar15") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      } while (bVar3 != 99);" (do "do") (compound_statement "{\n        pbVar12 = pbVar12 + 1;\n        lVar15 = lVar15 * 0x10 + (ulong)bVar3;\n        if (*pbVar12 == 0) goto LAB_001bafbe;\n        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];\n      }" ({ "{") (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + 1" (identifier "pbVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar15 = lVar15 * 0x10 + (ulong)bVar3;" (assignment_expression "lVar15 = lVar15 * 0x10 + (ulong)bVar3" (identifier "lVar15") (= "=") (binary_expression "lVar15 * 0x10 + (ulong)bVar3" (binary_expression "lVar15 * 0x10" (identifier "lVar15") (* "*") (number_literal "0x10")) (+ "+") (cast_expression "(ulong)bVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar3")))) (; ";")) (if_statement "if (*pbVar12 == 0) goto LAB_001bafbe;" (if "if") (parenthesized_expression "(*pbVar12 == 0)" (( "(") (binary_expression "*pbVar12 == 0" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001bafbe;" (goto "goto") (statement_identifier "LAB_001bafbe") (; ";"))) (expression_statement "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];" (assignment_expression "bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12]" (identifier "bVar3") (= "=") (subscript_expression ""cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12]" (string_literal ""cccccccccccccccccccccccccccccccccccccccccccccccc"" (" """) (string_content "cccccccccccccccccccccccccccccccccccccccccccccccc") (" """)) ([ "[") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar3 != 99)" (( "(") (binary_expression "bVar3 != 99" (identifier "bVar3") (!= "!=") (number_literal "99")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar9 = gettext("--section-start argument %s is not a valid hex number");" (assignment_expression "uVar9 = gettext("--section-start argument %s is not a valid hex number")" (identifier "uVar9") (= "=") (call_expression "gettext("--section-start argument %s is not a valid hex number")" (identifier "gettext") (argument_list "("--section-start argument %s is not a valid hex number")" (( "(") (string_literal ""--section-start argument %s is not a valid hex number"" (" """) (string_content "--section-start argument %s is not a valid hex number") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001690a0(uVar9,pbVar1);" (call_expression "FUN_001690a0(uVar9,pbVar1)" (identifier "FUN_001690a0") (argument_list "(uVar9,pbVar1)" (( "(") (identifier "uVar9") (, ",") (identifier "pbVar1") () ")"))) (; ";")) (labeled_statement "LAB_001bb10e:\n    if (local_58 != local_48) {\n      FUN_00276d20();\n    }" (statement_identifier "LAB_001bb10e") (: ":") (if_statement "if (local_58 != local_48) {\n      FUN_00276d20();\n    }" (if "if") (parenthesized_expression "(local_58 != local_48)" (( "(") (binary_expression "local_58 != local_48" (identifier "local_58") (!= "!=") (identifier "local_48")) () ")")) (compound_statement "{\n      FUN_00276d20();\n    }" ({ "{") (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "lVar15 = 0;" (assignment_expression "lVar15 = 0" (identifier "lVar15") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_001bafbe:\n  lVar13 = param_1 + 0x9278;" (statement_identifier "LAB_001bafbe") (: ":") (expression_statement "lVar13 = param_1 + 0x9278;" (assignment_expression "lVar13 = param_1 + 0x9278" (identifier "lVar13") (= "=") (binary_expression "param_1 + 0x9278" (identifier "param_1") (+ "+") (number_literal "0x9278"))) (; ";"))) (if_statement "if (*(long *)(param_1 + 0x9280) != 0) {\n    local_80 = local_58;\n    lVar8 = lVar13;\n    lVar14 = *(long *)(param_1 + 0x9280);\n    do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);\nLAB_001bb048:\n    bVar16 = lVar13 != lVar8;\n    lVar13 = lVar8;\n    if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }\n  }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x9280) != 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x9280) != 0" (pointer_expression "*(long *)(param_1 + 0x9280)" (* "*") (cast_expression "(long *)(param_1 + 0x9280)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x9280)" (( "(") (binary_expression "param_1 + 0x9280" (identifier "param_1") (+ "+") (number_literal "0x9280")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_80 = local_58;\n    lVar8 = lVar13;\n    lVar14 = *(long *)(param_1 + 0x9280);\n    do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);\nLAB_001bb048:\n    bVar16 = lVar13 != lVar8;\n    lVar13 = lVar8;\n    if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }\n  }" ({ "{") (expression_statement "local_80 = local_58;" (assignment_expression "local_80 = local_58" (identifier "local_80") (= "=") (identifier "local_58")) (; ";")) (expression_statement "lVar8 = lVar13;" (assignment_expression "lVar8 = lVar13" (identifier "lVar8") (= "=") (identifier "lVar13")) (; ";")) (expression_statement "lVar14 = *(long *)(param_1 + 0x9280);" (assignment_expression "lVar14 = *(long *)(param_1 + 0x9280)" (identifier "lVar14") (= "=") (pointer_expression "*(long *)(param_1 + 0x9280)" (* "*") (cast_expression "(long *)(param_1 + 0x9280)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x9280)" (( "(") (binary_expression "param_1 + 0x9280" (identifier "param_1") (+ "+") (number_literal "0x9280")) () ")"))))) (; ";")) (do_statement "do {\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    } while (lVar14 != 0);" (do "do") (compound_statement "{\n      while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }\n      if (-1 < iVar6) goto LAB_001bb03c;\nLAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);\n    }" ({ "{") (while_statement "while( true ) {\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        uVar4 = *(ulong *)(lVar14 + 0x28);\n        uVar11 = local_50;\n        if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }\n        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;\n        lVar10 = uVar4 - local_50;\n        if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }\nLAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);\n        lVar8 = lVar14;\n        lVar14 = *plVar2;\n        if (*plVar2 == 0) goto LAB_001bb048;\n      }" ({ "{") (expression_statement "uVar4 = *(ulong *)(lVar14 + 0x28);" (assignment_expression "uVar4 = *(ulong *)(lVar14 + 0x28)" (identifier "uVar4") (= "=") (pointer_expression "*(ulong *)(lVar14 + 0x28)" (* "*") (cast_expression "(ulong *)(lVar14 + 0x28)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar14 + 0x28)" (( "(") (binary_expression "lVar14 + 0x28" (identifier "lVar14") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "uVar11 = local_50;" (assignment_expression "uVar11 = local_50" (identifier "uVar11") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (uVar4 <= local_50) {\n          uVar11 = uVar4;\n        }" (if "if") (parenthesized_expression "(uVar4 <= local_50)" (( "(") (binary_expression "uVar4 <= local_50" (identifier "uVar4") (<= "<=") (identifier "local_50")) () ")")) (compound_statement "{\n          uVar11 = uVar4;\n        }" ({ "{") (expression_statement "uVar11 = uVar4;" (assignment_expression "uVar11 = uVar4" (identifier "uVar11") (= "=") (identifier "uVar4")) (; ";")) (} "}"))) (if_statement "if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))\n        break;" (if "if") (parenthesized_expression "((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))" (( "(") (binary_expression "(uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0)" (parenthesized_expression "(uVar11 != 0)" (( "(") (binary_expression "uVar11 != 0" (identifier "uVar11") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0)" (( "(") (comma_expression "iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0" (assignment_expression "iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11)" (identifier "iVar6") (= "=") (call_expression "memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11)" (identifier "memcmp") (argument_list "(*(void **)(lVar14 + 0x20),__s2,uVar11)" (( "(") (pointer_expression "*(void **)(lVar14 + 0x20)" (* "*") (cast_expression "(void **)(lVar14 + 0x20)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar14 + 0x20)" (( "(") (binary_expression "lVar14 + 0x20" (identifier "lVar14") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (identifier "__s2") (, ",") (identifier "uVar11") () ")")))) (, ",") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = uVar4 - local_50;" (assignment_expression "lVar10 = uVar4 - local_50" (identifier "lVar10") (= "=") (binary_expression "uVar4 - local_50" (identifier "uVar4") (- "-") (identifier "local_50"))) (; ";")) (if_statement "if (lVar10 < 0x80000000) {\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }" (if "if") (parenthesized_expression "(lVar10 < 0x80000000)" (( "(") (binary_expression "lVar10 < 0x80000000" (identifier "lVar10") (< "<") (number_literal "0x80000000")) () ")")) (compound_statement "{\n          if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }\n          goto LAB_001baff0;\n        }" ({ "{") (if_statement "if (-0x80000001 < lVar10) {\n            iVar6 = (int)lVar10;\n            break;\n          }" (if "if") (parenthesized_expression "(-0x80000001 < lVar10)" (( "(") (binary_expression "-0x80000001 < lVar10" (number_literal "-0x80000001") (< "<") (identifier "lVar10")) () ")")) (compound_statement "{\n            iVar6 = (int)lVar10;\n            break;\n          }" ({ "{") (expression_statement "iVar6 = (int)lVar10;" (assignment_expression "iVar6 = (int)lVar10" (identifier "iVar6") (= "=") (cast_expression "(int)lVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar10"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (goto_statement "goto LAB_001baff0;" (goto "goto") (statement_identifier "LAB_001baff0") (; ";")) (} "}"))) (labeled_statement "LAB_001bb03c:\n        plVar2 = (long *)(lVar14 + 0x10);" (statement_identifier "LAB_001bb03c") (: ":") (expression_statement "plVar2 = (long *)(lVar14 + 0x10);" (assignment_expression "plVar2 = (long *)(lVar14 + 0x10)" (identifier "plVar2") (= "=") (cast_expression "(long *)(lVar14 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar14 + 0x10)" (( "(") (binary_expression "lVar14 + 0x10" (identifier "lVar14") (+ "+") (number_literal "0x10")) () ")")))) (; ";"))) (expression_statement "lVar8 = lVar14;" (assignment_expression "lVar8 = lVar14" (identifier "lVar8") (= "=") (identifier "lVar14")) (; ";")) (expression_statement "lVar14 = *plVar2;" (assignment_expression "lVar14 = *plVar2" (identifier "lVar14") (= "=") (pointer_expression "*plVar2" (* "*") (identifier "plVar2"))) (; ";")) (if_statement "if (*plVar2 == 0) goto LAB_001bb048;" (if "if") (parenthesized_expression "(*plVar2 == 0)" (( "(") (binary_expression "*plVar2 == 0" (pointer_expression "*plVar2" (* "*") (identifier "plVar2")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001bb048;" (goto "goto") (statement_identifier "LAB_001bb048") (; ";"))) (} "}"))) (if_statement "if (-1 < iVar6) goto LAB_001bb03c;" (if "if") (parenthesized_expression "(-1 < iVar6)" (( "(") (binary_expression "-1 < iVar6" (number_literal "-1") (< "<") (identifier "iVar6")) () ")")) (goto_statement "goto LAB_001bb03c;" (goto "goto") (statement_identifier "LAB_001bb03c") (; ";"))) (labeled_statement "LAB_001baff0:\n      lVar14 = *(long *)(lVar14 + 0x18);" (statement_identifier "LAB_001baff0") (: ":") (expression_statement "lVar14 = *(long *)(lVar14 + 0x18);" (assignment_expression "lVar14 = *(long *)(lVar14 + 0x18)" (identifier "lVar14") (= "=") (pointer_expression "*(long *)(lVar14 + 0x18)" (* "*") (cast_expression "(long *)(lVar14 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar14 + 0x18)" (( "(") (binary_expression "lVar14 + 0x18" (identifier "lVar14") (+ "+") (number_literal "0x18")) () ")"))))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(lVar14 != 0)" (( "(") (binary_expression "lVar14 != 0" (identifier "lVar14") (!= "!=") (number_literal "0")) () ")")) (; ";")) (labeled_statement "LAB_001bb048:\n    bVar16 = lVar13 != lVar8;" (statement_identifier "LAB_001bb048") (: ":") (expression_statement "bVar16 = lVar13 != lVar8;" (assignment_expression "bVar16 = lVar13 != lVar8" (identifier "bVar16") (= "=") (binary_expression "lVar13 != lVar8" (identifier "lVar13") (!= "!=") (identifier "lVar8"))) (; ";"))) (expression_statement "lVar13 = lVar8;" (assignment_expression "lVar13 = lVar8" (identifier "lVar13") (= "=") (identifier "lVar8")) (; ";")) (if_statement "if (bVar16) {\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }" (if "if") (parenthesized_expression "(bVar16)" (( "(") (identifier "bVar16") () ")")) (compound_statement "{\n      uVar4 = *(ulong *)(lVar8 + 0x28);\n      uVar11 = uVar4;\n      if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }\n      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }\n      if (-1 < iVar6) goto LAB_001bb0ca;\n    }" ({ "{") (expression_statement "uVar4 = *(ulong *)(lVar8 + 0x28);" (assignment_expression "uVar4 = *(ulong *)(lVar8 + 0x28)" (identifier "uVar4") (= "=") (pointer_expression "*(ulong *)(lVar8 + 0x28)" (* "*") (cast_expression "(ulong *)(lVar8 + 0x28)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x28)" (( "(") (binary_expression "lVar8 + 0x28" (identifier "lVar8") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "uVar11 = uVar4;" (assignment_expression "uVar11 = uVar4" (identifier "uVar11") (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (local_50 <= uVar4) {\n        uVar11 = local_50;\n      }" (if "if") (parenthesized_expression "(local_50 <= uVar4)" (( "(") (binary_expression "local_50 <= uVar4" (identifier "local_50") (<= "<=") (identifier "uVar4")) () ")")) (compound_statement "{\n        uVar11 = local_50;\n      }" ({ "{") (expression_statement "uVar11 = local_50;" (assignment_expression "uVar11 = local_50" (identifier "uVar11") (= "=") (identifier "local_50")) (; ";")) (} "}"))) (if_statement "if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }" (if "if") (parenthesized_expression "((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0))" (( "(") (binary_expression "(uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)" (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)" (( "(") (comma_expression "iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0" (assignment_expression "iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11)" (identifier "iVar6") (= "=") (call_expression "memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11)" (identifier "memcmp") (argument_list "(__s2,*(void **)(lVar8 + 0x20),uVar11)" (( "(") (identifier "__s2") (, ",") (pointer_expression "*(void **)(lVar8 + 0x20)" (* "*") (cast_expression "(void **)(lVar8 + 0x20)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar8 + 0x20)" (( "(") (binary_expression "lVar8 + 0x20" (identifier "lVar8") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (identifier "uVar11") () ")")))) (, ",") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        lVar14 = local_50 - uVar4;\n        if (0x7fffffff < lVar14) goto LAB_001bb0ca;\n        if (lVar14 < -0x80000000) goto LAB_001bb093;\n        iVar6 = (int)lVar14;\n      }" ({ "{") (expression_statement "lVar14 = local_50 - uVar4;" (assignment_expression "lVar14 = local_50 - uVar4" (identifier "lVar14") (= "=") (binary_expression "local_50 - uVar4" (identifier "local_50") (- "-") (identifier "uVar4"))) (; ";")) (if_statement "if (0x7fffffff < lVar14) goto LAB_001bb0ca;" (if "if") (parenthesized_expression "(0x7fffffff < lVar14)" (( "(") (binary_expression "0x7fffffff < lVar14" (number_literal "0x7fffffff") (< "<") (identifier "lVar14")) () ")")) (goto_statement "goto LAB_001bb0ca;" (goto "goto") (statement_identifier "LAB_001bb0ca") (; ";"))) (if_statement "if (lVar14 < -0x80000000) goto LAB_001bb093;" (if "if") (parenthesized_expression "(lVar14 < -0x80000000)" (( "(") (binary_expression "lVar14 < -0x80000000" (identifier "lVar14") (< "<") (number_literal "-0x80000000")) () ")")) (goto_statement "goto LAB_001bb093;" (goto "goto") (statement_identifier "LAB_001bb093") (; ";"))) (expression_statement "iVar6 = (int)lVar14;" (assignment_expression "iVar6 = (int)lVar14" (identifier "iVar6") (= "=") (cast_expression "(int)lVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar14"))) (; ";")) (} "}"))) (if_statement "if (-1 < iVar6) goto LAB_001bb0ca;" (if "if") (parenthesized_expression "(-1 < iVar6)" (( "(") (binary_expression "-1 < iVar6" (number_literal "-1") (< "<") (identifier "iVar6")) () ")")) (goto_statement "goto LAB_001bb0ca;" (goto "goto") (statement_identifier "LAB_001bb0ca") (; ";"))) (} "}"))) (} "}"))) (labeled_statement "LAB_001bb093:\n  local_60 = &local_58;" (statement_identifier "LAB_001bb093") (: ":") (expression_statement "local_60 = &local_58;" (assignment_expression "local_60 = &local_58" (identifier "local_60") (= "=") (pointer_expression "&local_58" (& "&") (identifier "local_58"))) (; ";"))) (expression_statement "lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61);" (assignment_expression "lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61)" (identifier "lVar8") (= "=") (call_expression "FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61)" (identifier "FUN_001bf2b0") (argument_list "(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61)" (( "(") (binary_expression "param_1 + 0x9270" (identifier "param_1") (+ "+") (number_literal "0x9270")) (, ",") (identifier "lVar13") (, ",") (pointer_expression "&DAT_00317ac0" (& "&") (identifier "DAT_00317ac0")) (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) (, ",") (pointer_expression "&local_61" (& "&") (identifier "local_61")) () ")")))) (; ";")) (expression_statement "local_80 = local_58;" (assignment_expression "local_80 = local_58" (identifier "local_80") (= "=") (identifier "local_58")) (; ";")) (labeled_statement "LAB_001bb0ca:\n  *(long *)(lVar8 + 0x40) = lVar15;" (statement_identifier "LAB_001bb0ca") (: ":") (expression_statement "*(long *)(lVar8 + 0x40) = lVar15;" (assignment_expression "*(long *)(lVar8 + 0x40) = lVar15" (pointer_expression "*(long *)(lVar8 + 0x40)" (* "*") (cast_expression "(long *)(lVar8 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x40)" (( "(") (binary_expression "lVar8 + 0x40" (identifier "lVar8") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "lVar15")) (; ";"))) (if_statement "if (local_80 == local_48) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_80 == local_48)" (( "(") (binary_expression "local_80 == local_48" (identifier "local_80") (== "==") (identifier "local_48")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00276d20(local_80);" (call_expression "FUN_00276d20(local_80)" (identifier "FUN_00276d20") (argument_list "(local_80)" (( "(") (identifier "local_80") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void parse_section_start(General_options * this, char * param_1, char *
   arg, Command_line * param_3) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,char *param_1,char *arg,type_2 *param_3)

{
  type_3 *pbVar1;
  type_4 *pp_Var2;
  type_3 var_15;
  type_5 __s2;
  char var_13;
  int var_24;
  char *var_8;
  type_6 iVar7;
  long var_25;
  type_4 var_22;
  type_4 var_21;
  type_3 *var_16;
  type_7 __pos;
  type_4 var_20;
  long var_17;
  bool bVar13;
  type_8 var_26;
  var_1<> var_2;
  _Head_base<0,_const_std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>&,_false>
  var_6;
  type_9 section_name;
  
  var_8 = var_7(arg,0x3d);
  if (var_8 == (char *)0x0) {
    var_8 = (char *)var_9("invalid argument to --section-start; must be SECTION=ADDRESS");
    var_10(var_8);
    return;
  }
  section_name._M_dataplus._M_p = (type_8)&section_name.field_2;
  pbVar1 = (type_3 *)(var_8 + 1);
  std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>::
  var_11<var_12*>(&section_name,arg,var_8);
  var_13 = var_8[1];
  var_16 = pbVar1;
  if (var_13 == '0') {
    if ((var_8[2] & 0xdfU) == 0x58) {
      var_16 = (type_3 *)(var_8 + 3);
      var_13 = var_8[3];
      goto LAB_001baf6f;
    }
  }
  else {
LAB_001baf6f:
    if (var_13 == '\0') {
      var_8 = (char *)var_9("--section-start address missing");
      var_10(var_8);
      goto LAB_001bb10e;
    }
  }
                    /* try { // try from 001baf77 to 001bb148 has its CatchHandler @ 001bb1a7 */
  var_14();
  __s2 = section_name._M_dataplus;
  if (*var_16 != 0) {
    var_15 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*var_16];
    if (var_15 != 99) {
      var_17 = 0;
      do {
        var_16 = var_16 + 1;
        var_17 = var_17 * 0x10 + (type_10)var_15;
        if (*var_16 == 0) goto LAB_001bafbe;
        var_15 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*var_16];
      } while (var_15 != 99);
    }
    var_8 = (char *)var_9("--section-start argument %s is not a valid hex number");
    var_10(var_8,pbVar1);
LAB_001bb10e:
    if ((anon_union_16_2_edb7204a_for_basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>var_18
         *)section_name._M_dataplus._M_p != &section_name.field_2) {
      var_19(section_name._M_dataplus._M_p);
    }
    return;
  }
  var_17 = 0;
LAB_001bafbe:
  var_20 = (this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
  __pos._M_node = &(this->section_starts_)._M_t._M_impl.super__Rb_tree_header._M_header;
  if (var_20 != (type_4)0x0) {
    var_26 = section_name._M_dataplus._M_p;
    iVar7._M_node = __pos._M_node;
    do {
      while( true ) {
        var_21 = var_20[1]._M_parent;
        var_22 = (type_4)section_name._M_string_length;
        if (var_21 <= section_name._M_string_length) {
          var_22 = var_21;
        }
        if ((var_22 != (type_4)0x0) &&
           (var_24 = var_23(*(void **)(var_20 + 1),__s2._M_p,(size_t)var_22), var_24 != 0)) break;
        var_25 = (long)var_21 - section_name._M_string_length;
        if (var_25 < 0x80000000) {
          if (-0x80000001 < var_25) {
            var_24 = (int)var_25;
            break;
          }
          goto LAB_001baff0;
        }
LAB_001bb03c:
        pp_Var2 = &var_20->_M_left;
        iVar7._M_node = var_20;
        var_20 = *pp_Var2;
        if (*pp_Var2 == (type_4)0x0) goto LAB_001bb048;
      }
      if (-1 < var_24) goto LAB_001bb03c;
LAB_001baff0:
      var_20 = var_20->_M_right;
    } while (var_20 != (type_4)0x0);
LAB_001bb048:
    bVar13 = __pos._M_node != iVar7._M_node;
    __pos._M_node = iVar7._M_node;
    if (bVar13) {
      var_20 = iVar7._M_node[1]._M_parent;
      var_21 = var_20;
      if (section_name._M_string_length <= var_20) {
        var_21 = (type_4)section_name._M_string_length;
      }
      if ((var_21 == (type_4)0x0) ||
         (var_24 = var_23(__s2._M_p,*(void **)(iVar7._M_node + 1),(size_t)var_21), var_24 == 0)) {
        var_25 = section_name._M_string_length - (long)var_20;
        if (0x7fffffff < var_25) goto LAB_001bb0ca;
        if (var_25 < -0x80000000) goto LAB_001bb093;
        var_24 = (int)var_25;
      }
      if (-1 < var_24) goto LAB_001bb0ca;
    }
  }
LAB_001bb093:
  var_6._M_head_impl = &section_name;
  iVar7 = std::
          _Rb_tree<std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>,_std::pair<const_std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>,_long_unsigned_int>var_5>,_std::less<std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>var_5>,_std::var_3<std::pair<const_std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>,_long_unsigned_int>var_5>var_5>
          ::
          _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::var_1<const_std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>&>,_std::var_1<>var_5>
                    (&(this->section_starts_)._M_t,__pos,
                     (piecewise_construct_t *)&std::piecewise_construct,
                     (var_1<const_std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>&>
                      *)&var_6,&var_2);
  var_26 = section_name._M_dataplus._M_p;
LAB_001bb0ca:
  *(long *)(iVar7._M_node + 2) = var_17;
  if ((anon_union_16_2_edb7204a_for_basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>var_18
       *)var_26 == &section_name.field_2) {
    return;
  }
  var_19(var_26);
  return;
}


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

void MASKED(long param_1,undefined8 param_2,char *param_3)

{
  byte *pbVar1;
  long *plVar2;
  byte bVar3;
  ulong uVar4;
  undefined1 *__s2;
  char cVar5;
  int iVar6;
  char *pcVar7;
  long lVar8;
  undefined8 uVar9;
  long lVar10;
  ulong uVar11;
  byte *pbVar12;
  long lVar13;
  long lVar14;
  long lVar15;
  bool bVar16;
  undefined1 *local_80;
  undefined1 local_61;
  undefined1 **local_60;
  undefined1 *local_58;
  ulong local_50;
  undefined1 local_48 [24];
  
  pcVar7 = strchr(param_3,0x3d);
  if (pcVar7 == (char *)0x0) {
    uVar9 = gettext("invalid argument to --section-start; must be SECTION=ADDRESS");
    FUN_001690a0(uVar9);
    return;
  }
  local_58 = local_48;
  pbVar1 = (byte *)(pcVar7 + 1);
  FUN_0015cbe0(&local_58,param_3,pcVar7);
  cVar5 = pcVar7[1];
  pbVar12 = pbVar1;
  if (cVar5 == '0') {
    if ((pcVar7[2] & 0xdfU) == 0x58) {
      pbVar12 = (byte *)(pcVar7 + 3);
      cVar5 = pcVar7[3];
      goto LAB_001baf6f;
    }
  }
  else {
LAB_001baf6f:
    if (cVar5 == '\0') {
      uVar9 = gettext("--section-start address missing");
      FUN_001690a0(uVar9);
      goto LAB_001bb10e;
    }
  }
                    /* try { // try from 001baf77 to 001bb148 has its CatchHandler @ 001bb1a7 */
  FUN_00274680();
  __s2 = local_58;
  if (*pbVar12 != 0) {
    bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];
    if (bVar3 != 99) {
      lVar15 = 0;
      do {
        pbVar12 = pbVar12 + 1;
        lVar15 = lVar15 * 0x10 + (ulong)bVar3;
        if (*pbVar12 == 0) goto LAB_001bafbe;
        bVar3 = "cccccccccccccccccccccccccccccccccccccccccccccccc"[*pbVar12];
      } while (bVar3 != 99);
    }
    uVar9 = gettext("--section-start argument %s is not a valid hex number");
    FUN_001690a0(uVar9,pbVar1);
LAB_001bb10e:
    if (local_58 != local_48) {
      FUN_00276d20();
    }
    return;
  }
  lVar15 = 0;
LAB_001bafbe:
  lVar13 = param_1 + 0x9278;
  if (*(long *)(param_1 + 0x9280) != 0) {
    local_80 = local_58;
    lVar8 = lVar13;
    lVar14 = *(long *)(param_1 + 0x9280);
    do {
      while( true ) {
        uVar4 = *(ulong *)(lVar14 + 0x28);
        uVar11 = local_50;
        if (uVar4 <= local_50) {
          uVar11 = uVar4;
        }
        if ((uVar11 != 0) && (iVar6 = memcmp(*(void **)(lVar14 + 0x20),__s2,uVar11), iVar6 != 0))
        break;
        lVar10 = uVar4 - local_50;
        if (lVar10 < 0x80000000) {
          if (-0x80000001 < lVar10) {
            iVar6 = (int)lVar10;
            break;
          }
          goto LAB_001baff0;
        }
LAB_001bb03c:
        plVar2 = (long *)(lVar14 + 0x10);
        lVar8 = lVar14;
        lVar14 = *plVar2;
        if (*plVar2 == 0) goto LAB_001bb048;
      }
      if (-1 < iVar6) goto LAB_001bb03c;
LAB_001baff0:
      lVar14 = *(long *)(lVar14 + 0x18);
    } while (lVar14 != 0);
LAB_001bb048:
    bVar16 = lVar13 != lVar8;
    lVar13 = lVar8;
    if (bVar16) {
      uVar4 = *(ulong *)(lVar8 + 0x28);
      uVar11 = uVar4;
      if (local_50 <= uVar4) {
        uVar11 = local_50;
      }
      if ((uVar11 == 0) || (iVar6 = memcmp(__s2,*(void **)(lVar8 + 0x20),uVar11), iVar6 == 0)) {
        lVar14 = local_50 - uVar4;
        if (0x7fffffff < lVar14) goto LAB_001bb0ca;
        if (lVar14 < -0x80000000) goto LAB_001bb093;
        iVar6 = (int)lVar14;
      }
      if (-1 < iVar6) goto LAB_001bb0ca;
    }
  }
LAB_001bb093:
  local_60 = &local_58;
  lVar8 = FUN_001bf2b0(param_1 + 0x9270,lVar13,&DAT_00317ac0,&local_60,&local_61);
  local_80 = local_58;
LAB_001bb0ca:
  *(long *)(lVar8 + 0x40) = lVar15;
  if (local_80 == local_48) {
    return;
  }
  FUN_00276d20(local_80);
  return;
}

