
/* DWARF original name: _M_emplace_unique<std::pair<std::__cxx11::basic_string<char,
   std::char_traits<char>, std::allocator<char> >, gold::Kept_section::Comdat_section_info> >
   DWARF original prototype:
   pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>
   _M_emplace_unique<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>(_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>_>,_gold::Kept_section::Comdat_section_info>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_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>_>,_gold::Kept_section::Comdat_section_info>_>_>
   * this,
   pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>
   * __args#0) */

pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>
 __thiscall
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>_>,_gold::Kept_section::Comdat_section_info>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_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>_>,_gold::Kept_section::Comdat_section_info>_>_>
::
_M_emplace_unique<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>
          (_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>_>,_gold::Kept_section::Comdat_section_info>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_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>_>,_gold::Kept_section::Comdat_section_info>_>_>
           *this,pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>
                 *__args_0)

{
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar1;
  _Rb_tree_header *p_Var2;
  size_t *psVar3;
  pointer pcVar4;
  _Base_ptr p_Var5;
  undefined4 uVar6;
  uint uVar7;
  int iVar8;
  ulong uVar9;
  _Rb_tree_node_base *p_Var10;
  long lVar11;
  _Base_ptr p_Var12;
  _Rb_tree_node_base *p_Var13;
  bool bVar14;
  void *__s2;
  undefined1 *__s1;
  _Base_ptr p_Var15;
  pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>
  pVar16;
  pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>
  pVar17;
  
  pVar17.first._M_node = (_Base_ptr)operator_new(0x50);
  pcVar4 = (__args_0->first)._M_dataplus._M_p;
  *(_Base_ptr **)(pVar17.first._M_node + 1) = &pVar17.first._M_node[1]._M_left;
  paVar1 = &(__args_0->first).field_2;
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)pcVar4 == paVar1) {
    p_Var5 = *(_Base_ptr *)((long)&(__args_0->first).field_2 + 8);
    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;
    pVar17.first._M_node[1]._M_right = p_Var5;
  }
  else {
    *(pointer *)(pVar17.first._M_node + 1) = pcVar4;
    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;
  }
  p_Var5 = (_Base_ptr)(__args_0->first)._M_string_length;
  uVar7 = (__args_0->second).shndx;
  uVar6 = *(undefined4 *)&(__args_0->second).field_0x4;
  p_Var15 = (_Base_ptr)(__args_0->second).size;
  (__args_0->first)._M_dataplus._M_p = (pointer)paVar1;
  p_Var2 = &(this->_M_impl).super__Rb_tree_header;
  (__args_0->first)._M_string_length = 0;
  (__args_0->first).field_2._M_local_buf[0] = '\0';
  p_Var10 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  pVar17.first._M_node[1]._M_parent = p_Var5;
  pVar17.first._M_node[2]._M_color = uVar7;
  *(undefined4 *)&pVar17.first._M_node[2].field_0x4 = uVar6;
  pVar17.first._M_node[2]._M_parent = p_Var15;
  if (p_Var10 == (_Rb_tree_node_base *)0x0) {
    p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;
    if (p_Var13 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) {
      __s1 = *(undefined1 **)(pVar17.first._M_node + 1);
LAB_0019f70b:
      p_Var10 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var13);
      p_Var15 = p_Var10[1]._M_parent;
      __s2 = *(void **)(p_Var10 + 1);
      p_Var12 = p_Var15;
      if (p_Var5 <= p_Var15) {
        p_Var12 = p_Var5;
      }
LAB_0019f64e:
      if ((p_Var12 == (_Base_ptr)0x0) || (iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0)) {
        lVar11 = (long)p_Var15 - (long)p_Var5;
        if (0x7fffffff < lVar11) goto LAB_0019f68d;
        if (-0x80000001 < lVar11) {
          iVar8 = (int)lVar11;
          goto LAB_0019f689;
        }
      }
      else {
LAB_0019f689:
        if (-1 < iVar8) goto LAB_0019f68d;
      }
      if (p_Var13 == (_Rb_tree_node_base *)0x0) {
        p_Var10 = (_Rb_tree_node_base *)0x0;
LAB_0019f68d:
        if (&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1) {
          operator_delete(__s1);
        }
        operator_delete(pVar17.first._M_node);
        pVar16._8_8_ = 0;
        pVar16.first._M_node = p_Var10;
        return pVar16;
      }
      goto LAB_0019f6c9;
    }
    p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;
LAB_0019f7b1:
    bVar14 = true;
  }
  else {
    __s1 = *(undefined1 **)(pVar17.first._M_node + 1);
    do {
      p_Var13 = p_Var10;
      p_Var15 = p_Var13[1]._M_parent;
      __s2 = *(void **)(p_Var13 + 1);
      p_Var12 = p_Var15;
      if (p_Var5 <= p_Var15) {
        p_Var12 = p_Var5;
      }
      if (p_Var12 == (_Base_ptr)0x0) {
LAB_0019f61e:
        uVar9 = (long)p_Var5 - (long)p_Var15;
        if ((long)uVar9 < 0x80000000) {
          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;
          goto LAB_0019f5d0;
        }
LAB_0019f638:
        p_Var10 = p_Var13->_M_right;
        bVar14 = false;
      }
      else {
        uVar7 = memcmp(__s1,__s2,(size_t)p_Var12);
        uVar9 = (ulong)uVar7;
        if (uVar7 == 0) goto LAB_0019f61e;
LAB_0019f634:
        if (-1 < (int)uVar9) goto LAB_0019f638;
LAB_0019f5d0:
        p_Var10 = p_Var13->_M_left;
        bVar14 = true;
      }
    } while (p_Var10 != (_Base_ptr)0x0);
    p_Var10 = p_Var13;
    if (!bVar14) goto LAB_0019f64e;
    if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var13) goto LAB_0019f70b;
LAB_0019f6c9:
    bVar14 = true;
    if ((_Rb_tree_header *)p_Var13 == p_Var2) goto LAB_0019f6d4;
    p_Var15 = p_Var13[1]._M_parent;
    p_Var12 = p_Var15;
    if (p_Var5 <= p_Var15) {
      p_Var12 = p_Var5;
    }
    if ((p_Var12 == (_Base_ptr)0x0) ||
       (iVar8 = memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12), iVar8 == 0)) {
      bVar14 = false;
      lVar11 = (long)p_Var5 - (long)p_Var15;
      if (0x7fffffff < lVar11) goto LAB_0019f6d4;
      if (lVar11 < -0x80000000) goto LAB_0019f7b1;
      iVar8 = (int)lVar11;
    }
    bVar14 = SUB41((uint)iVar8 >> 0x1f,0);
  }
LAB_0019f6d4:
  _Rb_tree_insert_and_rebalance(bVar14,pVar17.first._M_node,p_Var13,&p_Var2->_M_header);
  psVar3 = &(this->_M_impl).super__Rb_tree_header._M_node_count;
  *psVar3 = *psVar3 + 1;
  pVar17._8_8_ = 1;
  return pVar17;
}



undefined1  [16] FUN_0019f540(long param_1,long *param_2)

{
  ulong uVar1;
  long lVar2;
  bool bVar3;
  uint uVar4;
  int iVar5;
  ulong uVar6;
  long lVar7;
  ulong uVar8;
  ulong uVar9;
  size_t __n;
  void *__s2;
  void *__s1;
  undefined1 auVar10 [16];
  undefined1 auVar11 [16];
  
  auVar11._0_8_ = FUN_00275550(0x50);
  lVar7 = *param_2;
  *(void **)(auVar11._0_8_ + 0x20) = (void *)(auVar11._0_8_ + 0x30);
  if ((long *)lVar7 == param_2 + 2) {
    lVar7 = param_2[3];
    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];
    *(long *)(auVar11._0_8_ + 0x38) = lVar7;
  }
  else {
    *(long *)(auVar11._0_8_ + 0x20) = lVar7;
    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];
  }
  uVar1 = param_2[1];
  lVar7 = param_2[4];
  lVar2 = param_2[5];
  *param_2 = (long)(param_2 + 2);
  param_2[1] = 0;
  *(undefined1 *)(param_2 + 2) = 0;
  uVar6 = *(ulong *)(param_1 + 0x10);
  *(ulong *)(auVar11._0_8_ + 0x28) = uVar1;
  *(long *)(auVar11._0_8_ + 0x40) = lVar7;
  *(long *)(auVar11._0_8_ + 0x48) = lVar2;
  if (uVar6 == 0) {
    uVar9 = param_1 + 8;
    if (uVar9 != *(ulong *)(param_1 + 0x18)) {
      __s1 = *(void **)(auVar11._0_8_ + 0x20);
LAB_0019f70b:
      uVar6 = thunk_FUN_00278080(uVar9);
      uVar8 = *(ulong *)(uVar6 + 0x28);
      __s2 = *(void **)(uVar6 + 0x20);
      __n = uVar8;
      if (uVar1 <= uVar8) {
        __n = uVar1;
      }
LAB_0019f64e:
      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {
        lVar7 = uVar8 - uVar1;
        if (0x7fffffff < lVar7) goto LAB_0019f68d;
        if (-0x80000001 < lVar7) {
          iVar5 = (int)lVar7;
          goto LAB_0019f689;
        }
      }
      else {
LAB_0019f689:
        if (-1 < iVar5) goto LAB_0019f68d;
      }
      if (uVar9 == 0) {
        uVar6 = 0;
LAB_0019f68d:
        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {
          FUN_00276d20(__s1);
        }
        FUN_00276d20(auVar11._0_8_);
        auVar10._8_8_ = 0;
        auVar10._0_8_ = uVar6;
        return auVar10;
      }
      goto LAB_0019f6c9;
    }
    uVar9 = param_1 + 8;
LAB_0019f7b1:
    uVar4 = 1;
  }
  else {
    __s1 = *(void **)(auVar11._0_8_ + 0x20);
    do {
      uVar9 = uVar6;
      uVar8 = *(ulong *)(uVar9 + 0x28);
      __s2 = *(void **)(uVar9 + 0x20);
      __n = uVar8;
      if (uVar1 <= uVar8) {
        __n = uVar1;
      }
      if (__n == 0) {
LAB_0019f61e:
        uVar6 = uVar1 - uVar8;
        if ((long)uVar6 < 0x80000000) {
          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;
          goto LAB_0019f5d0;
        }
LAB_0019f638:
        uVar6 = *(ulong *)(uVar9 + 0x18);
        bVar3 = false;
      }
      else {
        uVar4 = memcmp(__s1,__s2,__n);
        uVar6 = (ulong)uVar4;
        if (uVar4 == 0) goto LAB_0019f61e;
LAB_0019f634:
        if (-1 < (int)uVar6) goto LAB_0019f638;
LAB_0019f5d0:
        uVar6 = *(ulong *)(uVar9 + 0x10);
        bVar3 = true;
      }
    } while (uVar6 != 0);
    uVar6 = uVar9;
    if (!bVar3) goto LAB_0019f64e;
    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;
LAB_0019f6c9:
    uVar4 = 1;
    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;
    uVar6 = *(ulong *)(uVar9 + 0x28);
    uVar8 = uVar6;
    if (uVar1 <= uVar6) {
      uVar8 = uVar1;
    }
    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {
      uVar4 = 0;
      lVar7 = uVar1 - uVar6;
      if (0x7fffffff < lVar7) goto LAB_0019f6d4;
      if (lVar7 < -0x80000000) goto LAB_0019f7b1;
      uVar4 = (uint)lVar7;
    }
    uVar4 = uVar4 >> 0x1f;
  }
LAB_0019f6d4:
  FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U);
  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;
  auVar11._8_8_ = 1;
  return auVar11;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
MOV R12,RDI
MOV EDI,0x50
PUSH RBP
MOV RBP,RSI
PUSH RBX
SUB RSP,0x28
CALL 0x00275550
MOV RDX,qword ptr [RBP]
MOV RBX,RAX
ADD RAX,0x30
MOV qword ptr [RSP + 0x18],RAX
MOV qword ptr [RBX + 0x20],RAX
LEA RAX,[RBP + 0x10]
CMP RDX,RAX
JZ 0x0019f730
MOV qword ptr [RBX + 0x20],RDX
MOV RDX,qword ptr [RBP + 0x10]
MOV qword ptr [RBX + 0x30],RDX
MOV R14,qword ptr [RBP + 0x8]
MOVDQU XMM0,xmmword ptr [RBP + 0x20]
MOV qword ptr [RBP],RAX
LEA RAX,[R12 + 0x8]
MOV qword ptr [RBP + 0x8],0x0
MOV byte ptr [RBP + 0x10],0x0
MOV RBP,qword ptr [R12 + 0x10]
MOV qword ptr [RBX + 0x28],R14
MOVUPS xmmword ptr [RBX + 0x40],XMM0
MOV qword ptr [RSP],RAX
TEST RBP,RBP
JZ 0x0019f7a0
MOV R13,qword ptr [RBX + 0x20]
JMP 0x0019f5e1
MOV RAX,qword ptr [RBP + 0x10]
MOV EDX,0x1
TEST RAX,RAX
JZ 0x0019f643
MOV RBP,RAX
MOV R15,qword ptr [RBP + 0x28]
MOV R11,qword ptr [RBP + 0x20]
CMP R14,R15
MOV R9,R15
CMOVBE R9,R14
TEST R9,R9
JZ 0x0019f61e
MOV RDX,R9
MOV RSI,R11
MOV RDI,R13
MOV qword ptr [RSP + 0x10],R9
MOV qword ptr [RSP + 0x8],R11
CALL 0x0013e840
MOV R11,qword ptr [RSP + 0x8]
MOV R9,qword ptr [RSP + 0x10]
TEST EAX,EAX
JNZ 0x0019f634
MOV RAX,R14
SUB RAX,R15
CMP RAX,0x7fffffff
JG 0x0019f638
CMP RAX,-0x80000000
JL 0x0019f5d0
TEST EAX,EAX
JS 0x0019f5d0
MOV RAX,qword ptr [RBP + 0x18]
XOR EDX,EDX
TEST RAX,RAX
JNZ 0x0019f5de
MOV R10,RBP
TEST DL,DL
JNZ 0x0019f700
TEST R9,R9
JZ 0x0019f66f
MOV RDX,R9
MOV RSI,R13
MOV RDI,R11
MOV qword ptr [RSP + 0x8],R10
CALL 0x0013e840
MOV R10,qword ptr [RSP + 0x8]
TEST EAX,EAX
JNZ 0x0019f689
MOV RCX,R15
SUB RCX,R14
CMP RCX,0x7fffffff
JG 0x0019f68d
CMP RCX,-0x80000000
JL 0x0019f6c0
MOV EAX,ECX
TEST EAX,EAX
JS 0x0019f6c0
CMP qword ptr [RSP + 0x18],R13
JZ 0x0019f69c
MOV RDI,R13
CALL 0x00276d20
MOV RDI,RBX
CALL 0x00276d20
ADD RSP,0x28
MOV RAX,RBP
XOR EDX,EDX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
TEST R10,R10
JZ 0x0019f7d4
MOV EDI,0x1
CMP R10,qword ptr [RSP]
JNZ 0x0019f740
MOV RCX,qword ptr [RSP]
MOV RDX,R10
MOV RSI,RBX
CALL 0x00278220
ADD qword ptr [R12 + 0x28],0x1
ADD RSP,0x28
MOV RAX,RBX
MOV EDX,0x1
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CMP qword ptr [R12 + 0x18],RBP
JZ 0x0019f7c0
MOV RDI,RBP
CALL 0x00278140
MOV R10,RBP
MOV R15,qword ptr [RAX + 0x28]
MOV R11,qword ptr [RAX + 0x20]
MOV RBP,RAX
CMP R14,R15
MOV R9,R15
CMOVBE R9,R14
JMP 0x0019f64e
MOVDQU XMM1,xmmword ptr [RBP + 0x10]
MOVUPS xmmword ptr [RBX + 0x30],XMM1
JMP 0x0019f58b
MOV RBP,qword ptr [R10 + 0x28]
CMP R14,RBP
MOV RDX,RBP
CMOVBE RDX,R14
TEST RDX,RDX
JZ 0x0019f76d
MOV RSI,qword ptr [R10 + 0x20]
MOV RDI,R13
MOV qword ptr [RSP + 0x8],R10
CALL 0x0013e840
MOV R10,qword ptr [RSP + 0x8]
TEST EAX,EAX
JNZ 0x0019f78e
MOV R8,R14
XOR EDI,EDI
SUB R8,RBP
CMP R8,0x7fffffff
JG 0x0019f6d4
CMP R8,-0x80000000
JL 0x0019f7b1
MOV EAX,R8D
SHR EAX,0x1f
MOV EDI,EAX
JMP 0x0019f6d4
LEA RAX,[R12 + 0x8]
CMP RAX,qword ptr [R12 + 0x18]
JNZ 0x0019f7c8
LEA R10,[R12 + 0x8]
MOV EDI,0x1
JMP 0x0019f6d4
MOV R10,RBP
JMP 0x0019f6c9
MOV RBP,RAX
MOV R13,qword ptr [RBX + 0x20]
JMP 0x0019f70b
XOR EBP,EBP
JMP 0x0019f68d
(translation_unit "undefined1  [16] FUN_0019f540(long param_1,long *param_2)\n\n{\n  ulong uVar1;\n  long lVar2;\n  bool bVar3;\n  uint uVar4;\n  int iVar5;\n  ulong uVar6;\n  long lVar7;\n  ulong uVar8;\n  ulong uVar9;\n  size_t __n;\n  void *__s2;\n  void *__s1;\n  undefined1 auVar10 [16];\n  undefined1 auVar11 [16];\n  \n  auVar11._0_8_ = FUN_00275550(0x50);\n  lVar7 = *param_2;\n  *(void **)(auVar11._0_8_ + 0x20) = (void *)(auVar11._0_8_ + 0x30);\n  if ((long *)lVar7 == param_2 + 2) {\n    lVar7 = param_2[3];\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n    *(long *)(auVar11._0_8_ + 0x38) = lVar7;\n  }\n  else {\n    *(long *)(auVar11._0_8_ + 0x20) = lVar7;\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n  }\n  uVar1 = param_2[1];\n  lVar7 = param_2[4];\n  lVar2 = param_2[5];\n  *param_2 = (long)(param_2 + 2);\n  param_2[1] = 0;\n  *(undefined1 *)(param_2 + 2) = 0;\n  uVar6 = *(ulong *)(param_1 + 0x10);\n  *(ulong *)(auVar11._0_8_ + 0x28) = uVar1;\n  *(long *)(auVar11._0_8_ + 0x40) = lVar7;\n  *(long *)(auVar11._0_8_ + 0x48) = lVar2;\n  if (uVar6 == 0) {\n    uVar9 = param_1 + 8;\n    if (uVar9 != *(ulong *)(param_1 + 0x18)) {\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }\n    uVar9 = param_1 + 8;\nLAB_0019f7b1:\n    uVar4 = 1;\n  }\n  else {\n    __s1 = *(void **)(auVar11._0_8_ + 0x20);\n    do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar9;\n    if (!bVar3) goto LAB_0019f64e;\n    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;\nLAB_0019f6c9:\n    uVar4 = 1;\n    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;\n    uVar6 = *(ulong *)(uVar9 + 0x28);\n    uVar8 = uVar6;\n    if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }\n    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }\n    uVar4 = uVar4 >> 0x1f;\n  }\nLAB_0019f6d4:\n  FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar11._8_8_ = 1;\n  return auVar11;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (macro_type_specifier "FUN_0019f540(long param_1,long *param_2)" identifier ( (ERROR "long param_1,long *" (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) , (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *))) (type_descriptor "param_2" type_identifier) )) ; (compound_statement "{\n  ulong uVar1;\n  long lVar2;\n  bool bVar3;\n  uint uVar4;\n  int iVar5;\n  ulong uVar6;\n  long lVar7;\n  ulong uVar8;\n  ulong uVar9;\n  size_t __n;\n  void *__s2;\n  void *__s1;\n  undefined1 auVar10 [16];\n  undefined1 auVar11 [16];\n  \n  auVar11._0_8_ = FUN_00275550(0x50);\n  lVar7 = *param_2;\n  *(void **)(auVar11._0_8_ + 0x20) = (void *)(auVar11._0_8_ + 0x30);\n  if ((long *)lVar7 == param_2 + 2) {\n    lVar7 = param_2[3];\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n    *(long *)(auVar11._0_8_ + 0x38) = lVar7;\n  }\n  else {\n    *(long *)(auVar11._0_8_ + 0x20) = lVar7;\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n  }\n  uVar1 = param_2[1];\n  lVar7 = param_2[4];\n  lVar2 = param_2[5];\n  *param_2 = (long)(param_2 + 2);\n  param_2[1] = 0;\n  *(undefined1 *)(param_2 + 2) = 0;\n  uVar6 = *(ulong *)(param_1 + 0x10);\n  *(ulong *)(auVar11._0_8_ + 0x28) = uVar1;\n  *(long *)(auVar11._0_8_ + 0x40) = lVar7;\n  *(long *)(auVar11._0_8_ + 0x48) = lVar2;\n  if (uVar6 == 0) {\n    uVar9 = param_1 + 8;\n    if (uVar9 != *(ulong *)(param_1 + 0x18)) {\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }\n    uVar9 = param_1 + 8;\nLAB_0019f7b1:\n    uVar4 = 1;\n  }\n  else {\n    __s1 = *(void **)(auVar11._0_8_ + 0x20);\n    do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar9;\n    if (!bVar3) goto LAB_0019f64e;\n    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;\nLAB_0019f6c9:\n    uVar4 = 1;\n    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;\n    uVar6 = *(ulong *)(uVar9 + 0x28);\n    uVar8 = uVar6;\n    if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }\n    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }\n    uVar4 = uVar4 >> 0x1f;\n  }\nLAB_0019f6d4:\n  FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar11._8_8_ = 1;\n  return auVar11;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "void *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "void *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "undefined1 auVar10 [16];" type_identifier (array_declarator "auVar10 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar11 [16];" type_identifier (array_declarator "auVar11 [16]" identifier [ number_literal ]) ;) (expression_statement "auVar11._0_8_ = FUN_00275550(0x50);" (assignment_expression "auVar11._0_8_ = FUN_00275550(0x50)" (field_expression "auVar11._0_8_" identifier . field_identifier) = (call_expression "FUN_00275550(0x50)" identifier (argument_list "(0x50)" ( number_literal )))) ;) (expression_statement "lVar7 = *param_2;" (assignment_expression "lVar7 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(void **)(auVar11._0_8_ + 0x20) = (void *)(auVar11._0_8_ + 0x30);" (assignment_expression "*(void **)(auVar11._0_8_ + 0x20) = (void *)(auVar11._0_8_ + 0x30)" (pointer_expression "*(void **)(auVar11._0_8_ + 0x20)" * (cast_expression "(void **)(auVar11._0_8_ + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(auVar11._0_8_ + 0x20)" ( (binary_expression "auVar11._0_8_ + 0x20" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = (cast_expression "(void *)(auVar11._0_8_ + 0x30)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x30)" ( (binary_expression "auVar11._0_8_ + 0x30" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) ;) (if_statement "if ((long *)lVar7 == param_2 + 2) {\n    lVar7 = param_2[3];\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n    *(long *)(auVar11._0_8_ + 0x38) = lVar7;\n  }\n  else {\n    *(long *)(auVar11._0_8_ + 0x20) = lVar7;\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n  }" if (parenthesized_expression "((long *)lVar7 == param_2 + 2)" ( (binary_expression "(long *)lVar7 == param_2 + 2" (cast_expression "(long *)lVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier) == (binary_expression "param_2 + 2" identifier + number_literal)) )) (compound_statement "{\n    lVar7 = param_2[3];\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n    *(long *)(auVar11._0_8_ + 0x38) = lVar7;\n  }" { (expression_statement "lVar7 = param_2[3];" (assignment_expression "lVar7 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "*(long *)(auVar11._0_8_ + 0x30) = param_2[2];" (assignment_expression "*(long *)(auVar11._0_8_ + 0x30) = param_2[2]" (pointer_expression "*(long *)(auVar11._0_8_ + 0x30)" * (cast_expression "(long *)(auVar11._0_8_ + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x30)" ( (binary_expression "auVar11._0_8_ + 0x30" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "*(long *)(auVar11._0_8_ + 0x38) = lVar7;" (assignment_expression "*(long *)(auVar11._0_8_ + 0x38) = lVar7" (pointer_expression "*(long *)(auVar11._0_8_ + 0x38)" * (cast_expression "(long *)(auVar11._0_8_ + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x38)" ( (binary_expression "auVar11._0_8_ + 0x38" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    *(long *)(auVar11._0_8_ + 0x20) = lVar7;\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n  }" else (compound_statement "{\n    *(long *)(auVar11._0_8_ + 0x20) = lVar7;\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n  }" { (expression_statement "*(long *)(auVar11._0_8_ + 0x20) = lVar7;" (assignment_expression "*(long *)(auVar11._0_8_ + 0x20) = lVar7" (pointer_expression "*(long *)(auVar11._0_8_ + 0x20)" * (cast_expression "(long *)(auVar11._0_8_ + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x20)" ( (binary_expression "auVar11._0_8_ + 0x20" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(auVar11._0_8_ + 0x30) = param_2[2];" (assignment_expression "*(long *)(auVar11._0_8_ + 0x30) = param_2[2]" (pointer_expression "*(long *)(auVar11._0_8_ + 0x30)" * (cast_expression "(long *)(auVar11._0_8_ + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x30)" ( (binary_expression "auVar11._0_8_ + 0x30" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar1 = param_2[1];" (assignment_expression "uVar1 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "lVar7 = param_2[4];" (assignment_expression "lVar7 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "lVar2 = param_2[5];" (assignment_expression "lVar2 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) (expression_statement "*param_2 = (long)(param_2 + 2);" (assignment_expression "*param_2 = (long)(param_2 + 2)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(param_2 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) ;) (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_2 + 2) = 0;" (assignment_expression "*(undefined1 *)(param_2 + 2) = 0" (pointer_expression "*(undefined1 *)(param_2 + 2)" * (cast_expression "(undefined1 *)(param_2 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar6 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(param_1 + 0x10)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x10)" * (cast_expression "(ulong *)(param_1 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(ulong *)(auVar11._0_8_ + 0x28) = uVar1;" (assignment_expression "*(ulong *)(auVar11._0_8_ + 0x28) = uVar1" (pointer_expression "*(ulong *)(auVar11._0_8_ + 0x28)" * (cast_expression "(ulong *)(auVar11._0_8_ + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x28)" ( (binary_expression "auVar11._0_8_ + 0x28" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(auVar11._0_8_ + 0x40) = lVar7;" (assignment_expression "*(long *)(auVar11._0_8_ + 0x40) = lVar7" (pointer_expression "*(long *)(auVar11._0_8_ + 0x40)" * (cast_expression "(long *)(auVar11._0_8_ + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x40)" ( (binary_expression "auVar11._0_8_ + 0x40" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(auVar11._0_8_ + 0x48) = lVar2;" (assignment_expression "*(long *)(auVar11._0_8_ + 0x48) = lVar2" (pointer_expression "*(long *)(auVar11._0_8_ + 0x48)" * (cast_expression "(long *)(auVar11._0_8_ + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x48)" ( (binary_expression "auVar11._0_8_ + 0x48" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (if_statement "if (uVar6 == 0) {\n    uVar9 = param_1 + 8;\n    if (uVar9 != *(ulong *)(param_1 + 0x18)) {\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }\n    uVar9 = param_1 + 8;\nLAB_0019f7b1:\n    uVar4 = 1;\n  }\n  else {\n    __s1 = *(void **)(auVar11._0_8_ + 0x20);\n    do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar9;\n    if (!bVar3) goto LAB_0019f64e;\n    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;\nLAB_0019f6c9:\n    uVar4 = 1;\n    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;\n    uVar6 = *(ulong *)(uVar9 + 0x28);\n    uVar8 = uVar6;\n    if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }\n    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }\n    uVar4 = uVar4 >> 0x1f;\n  }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar9 = param_1 + 8;\n    if (uVar9 != *(ulong *)(param_1 + 0x18)) {\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }\n    uVar9 = param_1 + 8;\nLAB_0019f7b1:\n    uVar4 = 1;\n  }" { (expression_statement "uVar9 = param_1 + 8;" (assignment_expression "uVar9 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (if_statement "if (uVar9 != *(ulong *)(param_1 + 0x18)) {\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }" if (parenthesized_expression "(uVar9 != *(ulong *)(param_1 + 0x18))" ( (binary_expression "uVar9 != *(ulong *)(param_1 + 0x18)" identifier != (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }" { (expression_statement "__s1 = *(void **)(auVar11._0_8_ + 0x20);" (assignment_expression "__s1 = *(void **)(auVar11._0_8_ + 0x20)" identifier = (pointer_expression "*(void **)(auVar11._0_8_ + 0x20)" * (cast_expression "(void **)(auVar11._0_8_ + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(auVar11._0_8_ + 0x20)" ( (binary_expression "auVar11._0_8_ + 0x20" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) ))))) ;) (labeled_statement "LAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);" statement_identifier : (expression_statement "uVar6 = thunk_FUN_00278080(uVar9);" (assignment_expression "uVar6 = thunk_FUN_00278080(uVar9)" identifier = (call_expression "thunk_FUN_00278080(uVar9)" identifier (argument_list "(uVar9)" ( identifier )))) ;)) (expression_statement "uVar8 = *(ulong *)(uVar6 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(uVar6 + 0x28)" identifier = (pointer_expression "*(ulong *)(uVar6 + 0x28)" * (cast_expression "(ulong *)(uVar6 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x28)" ( (binary_expression "uVar6 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "__s2 = *(void **)(uVar6 + 0x20);" (assignment_expression "__s2 = *(void **)(uVar6 + 0x20)" identifier = (pointer_expression "*(void **)(uVar6 + 0x20)" * (cast_expression "(void **)(uVar6 + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar6 + 0x20)" ( (binary_expression "uVar6 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "__n = uVar8;" (assignment_expression "__n = uVar8" identifier = identifier) ;) (if_statement "if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }" if (parenthesized_expression "(uVar1 <= uVar8)" ( (binary_expression "uVar1 <= uVar8" identifier <= identifier) )) (compound_statement "{\n        __n = uVar1;\n      }" { (expression_statement "__n = uVar1;" (assignment_expression "__n = uVar1" identifier = identifier) ;) })) (labeled_statement "LAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }" statement_identifier : (if_statement "if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }" if (parenthesized_expression "((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0))" ( (binary_expression "(__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)" (parenthesized_expression "(__n == 0)" ( (binary_expression "__n == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)" ( (comma_expression "iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0" (assignment_expression "iVar5 = memcmp(__s2,__s1,__n)" identifier = (call_expression "memcmp(__s2,__s1,__n)" identifier (argument_list "(__s2,__s1,__n)" ( identifier , identifier , identifier )))) , (binary_expression "iVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }" { (expression_statement "lVar7 = uVar8 - uVar1;" (assignment_expression "lVar7 = uVar8 - uVar1" identifier = (binary_expression "uVar8 - uVar1" identifier - identifier)) ;) (if_statement "if (0x7fffffff < lVar7) goto LAB_0019f68d;" if (parenthesized_expression "(0x7fffffff < lVar7)" ( (binary_expression "0x7fffffff < lVar7" number_literal < identifier) )) (goto_statement "goto LAB_0019f68d;" goto statement_identifier ;)) (if_statement "if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }" if (parenthesized_expression "(-0x80000001 < lVar7)" ( (binary_expression "-0x80000001 < lVar7" number_literal < identifier) )) (compound_statement "{\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }" { (expression_statement "iVar5 = (int)lVar7;" (assignment_expression "iVar5 = (int)lVar7" identifier = (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_0019f689;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }" else (compound_statement "{\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }" { (labeled_statement "LAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;" statement_identifier : (if_statement "if (-1 < iVar5) goto LAB_0019f68d;" if (parenthesized_expression "(-1 < iVar5)" ( (binary_expression "-1 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_0019f68d;" goto statement_identifier ;))) })))) (if_statement "if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }" statement_identifier : (if_statement "if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }" if (parenthesized_expression "((void *)(auVar11._0_8_ + 0x30) != __s1)" ( (binary_expression "(void *)(auVar11._0_8_ + 0x30) != __s1" (cast_expression "(void *)(auVar11._0_8_ + 0x30)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x30)" ( (binary_expression "auVar11._0_8_ + 0x30" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) ))) != identifier) )) (compound_statement "{\n          FUN_00276d20(__s1);\n        }" { (expression_statement "FUN_00276d20(__s1);" (call_expression "FUN_00276d20(__s1)" identifier (argument_list "(__s1)" ( identifier ))) ;) }))) (expression_statement "FUN_00276d20(auVar11._0_8_);" (call_expression "FUN_00276d20(auVar11._0_8_)" identifier (argument_list "(auVar11._0_8_)" ( (field_expression "auVar11._0_8_" identifier . field_identifier) ))) ;) (expression_statement "auVar10._8_8_ = 0;" (assignment_expression "auVar10._8_8_ = 0" (field_expression "auVar10._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar10._0_8_ = uVar6;" (assignment_expression "auVar10._0_8_ = uVar6" (field_expression "auVar10._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar10;" return identifier ;) })) (goto_statement "goto LAB_0019f6c9;" goto statement_identifier ;) })) (expression_statement "uVar9 = param_1 + 8;" (assignment_expression "uVar9 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (labeled_statement "LAB_0019f7b1:\n    uVar4 = 1;" statement_identifier : (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;)) }) (else_clause "else {\n    __s1 = *(void **)(auVar11._0_8_ + 0x20);\n    do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar9;\n    if (!bVar3) goto LAB_0019f64e;\n    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;\nLAB_0019f6c9:\n    uVar4 = 1;\n    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;\n    uVar6 = *(ulong *)(uVar9 + 0x28);\n    uVar8 = uVar6;\n    if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }\n    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }\n    uVar4 = uVar4 >> 0x1f;\n  }" else (compound_statement "{\n    __s1 = *(void **)(auVar11._0_8_ + 0x20);\n    do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar9;\n    if (!bVar3) goto LAB_0019f64e;\n    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;\nLAB_0019f6c9:\n    uVar4 = 1;\n    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;\n    uVar6 = *(ulong *)(uVar9 + 0x28);\n    uVar8 = uVar6;\n    if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }\n    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }\n    uVar4 = uVar4 >> 0x1f;\n  }" { (expression_statement "__s1 = *(void **)(auVar11._0_8_ + 0x20);" (assignment_expression "__s1 = *(void **)(auVar11._0_8_ + 0x20)" identifier = (pointer_expression "*(void **)(auVar11._0_8_ + 0x20)" * (cast_expression "(void **)(auVar11._0_8_ + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(auVar11._0_8_ + 0x20)" ( (binary_expression "auVar11._0_8_ + 0x20" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) ))))) ;) (do_statement "do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);" do (compound_statement "{\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    }" { (expression_statement "uVar9 = uVar6;" (assignment_expression "uVar9 = uVar6" identifier = identifier) ;) (expression_statement "uVar8 = *(ulong *)(uVar9 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(uVar9 + 0x28)" identifier = (pointer_expression "*(ulong *)(uVar9 + 0x28)" * (cast_expression "(ulong *)(uVar9 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + 0x28)" ( (binary_expression "uVar9 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "__s2 = *(void **)(uVar9 + 0x20);" (assignment_expression "__s2 = *(void **)(uVar9 + 0x20)" identifier = (pointer_expression "*(void **)(uVar9 + 0x20)" * (cast_expression "(void **)(uVar9 + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar9 + 0x20)" ( (binary_expression "uVar9 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "__n = uVar8;" (assignment_expression "__n = uVar8" identifier = identifier) ;) (if_statement "if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }" if (parenthesized_expression "(uVar1 <= uVar8)" ( (binary_expression "uVar1 <= uVar8" identifier <= identifier) )) (compound_statement "{\n        __n = uVar1;\n      }" { (expression_statement "__n = uVar1;" (assignment_expression "__n = uVar1" identifier = identifier) ;) })) (if_statement "if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }" if (parenthesized_expression "(__n == 0)" ( (binary_expression "__n == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }" { (labeled_statement "LAB_0019f61e:\n        uVar6 = uVar1 - uVar8;" statement_identifier : (expression_statement "uVar6 = uVar1 - uVar8;" (assignment_expression "uVar6 = uVar1 - uVar8" identifier = (binary_expression "uVar1 - uVar8" identifier - identifier)) ;)) (if_statement "if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }" if (parenthesized_expression "((long)uVar6 < 0x80000000)" ( (binary_expression "(long)uVar6 < 0x80000000" (cast_expression "(long)uVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }" { (if_statement "if (-0x80000001 < (long)uVar6) goto LAB_0019f634;" if (parenthesized_expression "(-0x80000001 < (long)uVar6)" ( (binary_expression "-0x80000001 < (long)uVar6" number_literal < (cast_expression "(long)uVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (goto_statement "goto LAB_0019f634;" goto statement_identifier ;)) (goto_statement "goto LAB_0019f5d0;" goto statement_identifier ;) })) (labeled_statement "LAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);" statement_identifier : (expression_statement "uVar6 = *(ulong *)(uVar9 + 0x18);" (assignment_expression "uVar6 = *(ulong *)(uVar9 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar9 + 0x18)" * (cast_expression "(ulong *)(uVar9 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + 0x18)" ( (binary_expression "uVar9 + 0x18" identifier + number_literal) ))))) ;)) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) }) (else_clause "else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }" else (compound_statement "{\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }" { (expression_statement "uVar4 = memcmp(__s1,__s2,__n);" (assignment_expression "uVar4 = memcmp(__s1,__s2,__n)" identifier = (call_expression "memcmp(__s1,__s2,__n)" identifier (argument_list "(__s1,__s2,__n)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar6 = (ulong)uVar4;" (assignment_expression "uVar6 = (ulong)uVar4" identifier = (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar4 == 0) goto LAB_0019f61e;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0019f61e;" goto statement_identifier ;)) (labeled_statement "LAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;" statement_identifier : (if_statement "if (-1 < (int)uVar6) goto LAB_0019f638;" if (parenthesized_expression "(-1 < (int)uVar6)" ( (binary_expression "-1 < (int)uVar6" number_literal < (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0019f638;" goto statement_identifier ;))) (labeled_statement "LAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);" statement_identifier : (expression_statement "uVar6 = *(ulong *)(uVar9 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(uVar9 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar9 + 0x10)" * (cast_expression "(ulong *)(uVar9 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + 0x10)" ( (binary_expression "uVar9 + 0x10" identifier + number_literal) ))))) ;)) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) }))) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (expression_statement "uVar6 = uVar9;" (assignment_expression "uVar6 = uVar9" identifier = identifier) ;) (if_statement "if (!bVar3) goto LAB_0019f64e;" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (goto_statement "goto LAB_0019f64e;" goto statement_identifier ;)) (if_statement "if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;" if (parenthesized_expression "(*(ulong *)(param_1 + 0x18) != uVar9)" ( (binary_expression "*(ulong *)(param_1 + 0x18) != uVar9" (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != identifier) )) (goto_statement "goto LAB_0019f70b;" goto statement_identifier ;)) (labeled_statement "LAB_0019f6c9:\n    uVar4 = 1;" statement_identifier : (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;)) (if_statement "if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;" if (parenthesized_expression "(uVar9 == param_1 + 8U)" ( (binary_expression "uVar9 == param_1 + 8U" identifier == (binary_expression "param_1 + 8U" identifier + number_literal)) )) (goto_statement "goto LAB_0019f6d4;" goto statement_identifier ;)) (expression_statement "uVar6 = *(ulong *)(uVar9 + 0x28);" (assignment_expression "uVar6 = *(ulong *)(uVar9 + 0x28)" identifier = (pointer_expression "*(ulong *)(uVar9 + 0x28)" * (cast_expression "(ulong *)(uVar9 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + 0x28)" ( (binary_expression "uVar9 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" identifier = identifier) ;) (if_statement "if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }" if (parenthesized_expression "(uVar1 <= uVar6)" ( (binary_expression "uVar1 <= uVar6" identifier <= identifier) )) (compound_statement "{\n      uVar8 = uVar1;\n    }" { (expression_statement "uVar8 = uVar1;" (assignment_expression "uVar8 = uVar1" identifier = identifier) ;) })) (if_statement "if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }" if (parenthesized_expression "((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0))" ( (binary_expression "(uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)" (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) || (parenthesized_expression "(uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)" ( (comma_expression "uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0" (assignment_expression "uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8)" identifier = (call_expression "memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8)" identifier (argument_list "(__s1,*(void **)(uVar9 + 0x20),uVar8)" ( identifier , (pointer_expression "*(void **)(uVar9 + 0x20)" * (cast_expression "(void **)(uVar9 + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar9 + 0x20)" ( (binary_expression "uVar9 + 0x20" identifier + number_literal) )))) , identifier )))) , (binary_expression "uVar4 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "lVar7 = uVar1 - uVar6;" (assignment_expression "lVar7 = uVar1 - uVar6" identifier = (binary_expression "uVar1 - uVar6" identifier - identifier)) ;) (if_statement "if (0x7fffffff < lVar7) goto LAB_0019f6d4;" if (parenthesized_expression "(0x7fffffff < lVar7)" ( (binary_expression "0x7fffffff < lVar7" number_literal < identifier) )) (goto_statement "goto LAB_0019f6d4;" goto statement_identifier ;)) (if_statement "if (lVar7 < -0x80000000) goto LAB_0019f7b1;" if (parenthesized_expression "(lVar7 < -0x80000000)" ( (binary_expression "lVar7 < -0x80000000" identifier < number_literal) )) (goto_statement "goto LAB_0019f7b1;" goto statement_identifier ;)) (expression_statement "uVar4 = (uint)lVar7;" (assignment_expression "uVar4 = (uint)lVar7" identifier = (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "uVar4 = uVar4 >> 0x1f;" (assignment_expression "uVar4 = uVar4 >> 0x1f" identifier = (binary_expression "uVar4 >> 0x1f" identifier >> number_literal)) ;) }))) (labeled_statement "LAB_0019f6d4:\n  FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U);" statement_identifier : (expression_statement "FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U);" (call_expression "FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U)" identifier (argument_list "(uVar4,auVar11._0_8_,uVar9,param_1 + 8U)" ( identifier , (field_expression "auVar11._0_8_" identifier . field_identifier) , identifier , (binary_expression "param_1 + 8U" identifier + number_literal) ))) ;)) (expression_statement "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;" (assignment_expression "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "auVar11._8_8_ = 1;" (assignment_expression "auVar11._8_8_ = 1" (field_expression "auVar11._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar11;" return identifier ;) }))
(translation_unit "/* DWARF original name: _M_emplace_unique<std::pair<std::__cxx11::basic_string<char,\n   std::char_traits<char>, std::allocator<char> >, gold::Kept_section::Comdat_section_info> >\n   DWARF original prototype:\n   pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>\n   _M_emplace_unique<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>(_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>_>,_gold::Kept_section::Comdat_section_info>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_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>_>,_gold::Kept_section::Comdat_section_info>_>_>\n   * this,\n   pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>\n   * __args#0) */\n\npair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>\n __thiscall\nstd::\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>_>,_gold::Kept_section::Comdat_section_info>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_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>_>,_gold::Kept_section::Comdat_section_info>_>_>\n::\n_M_emplace_unique<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>\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>_>,_gold::Kept_section::Comdat_section_info>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_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>_>,_gold::Kept_section::Comdat_section_info>_>_>\n           *this,pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>\n                 *__args_0)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  _Rb_tree_header *p_Var2;\n  size_t *psVar3;\n  pointer pcVar4;\n  _Base_ptr p_Var5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  ulong uVar9;\n  _Rb_tree_node_base *p_Var10;\n  long lVar11;\n  _Base_ptr p_Var12;\n  _Rb_tree_node_base *p_Var13;\n  bool bVar14;\n  void *__s2;\n  undefined1 *__s1;\n  _Base_ptr p_Var15;\n  pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>\n  pVar16;\n  pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>\n  pVar17;\n  \n  pVar17.first._M_node = (_Base_ptr)operator_new(0x50);\n  pcVar4 = (__args_0->first)._M_dataplus._M_p;\n  *(_Base_ptr **)(pVar17.first._M_node + 1) = &pVar17.first._M_node[1]._M_left;\n  paVar1 = &(__args_0->first).field_2;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar1) {\n    p_Var5 = *(_Base_ptr *)((long)&(__args_0->first).field_2 + 8);\n    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;\n    pVar17.first._M_node[1]._M_right = p_Var5;\n  }\n  else {\n    *(pointer *)(pVar17.first._M_node + 1) = pcVar4;\n    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;\n  }\n  p_Var5 = (_Base_ptr)(__args_0->first)._M_string_length;\n  uVar7 = (__args_0->second).shndx;\n  uVar6 = *(undefined4 *)&(__args_0->second).field_0x4;\n  p_Var15 = (_Base_ptr)(__args_0->second).size;\n  (__args_0->first)._M_dataplus._M_p = (pointer)paVar1;\n  p_Var2 = &(this->_M_impl).super__Rb_tree_header;\n  (__args_0->first)._M_string_length = 0;\n  (__args_0->first).field_2._M_local_buf[0] = '\0';\n  p_Var10 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  pVar17.first._M_node[1]._M_parent = p_Var5;\n  pVar17.first._M_node[2]._M_color = uVar7;\n  *(undefined4 *)&pVar17.first._M_node[2].field_0x4 = uVar6;\n  pVar17.first._M_node[2]._M_parent = p_Var15;\n  if (p_Var10 == (_Rb_tree_node_base *)0x0) {\n    p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;\n    if (p_Var13 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\nLAB_0019f70b:\n      p_Var10 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var13);\n      p_Var15 = p_Var10[1]._M_parent;\n      __s2 = *(void **)(p_Var10 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\nLAB_0019f64e:\n      if ((p_Var12 == (_Base_ptr)0x0) || (iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0)) {\n        lVar11 = (long)p_Var15 - (long)p_Var5;\n        if (0x7fffffff < lVar11) goto LAB_0019f68d;\n        if (-0x80000001 < lVar11) {\n          iVar8 = (int)lVar11;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar8) goto LAB_0019f68d;\n      }\n      if (p_Var13 == (_Rb_tree_node_base *)0x0) {\n        p_Var10 = (_Rb_tree_node_base *)0x0;\nLAB_0019f68d:\n        if (&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1) {\n          operator_delete(__s1);\n        }\n        operator_delete(pVar17.first._M_node);\n        pVar16._8_8_ = 0;\n        pVar16.first._M_node = p_Var10;\n        return pVar16;\n      }\n      goto LAB_0019f6c9;\n    }\n    p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_0019f7b1:\n    bVar14 = true;\n  }\n  else {\n    __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\n    do {\n      p_Var13 = p_Var10;\n      p_Var15 = p_Var13[1]._M_parent;\n      __s2 = *(void **)(p_Var13 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\n      if (p_Var12 == (_Base_ptr)0x0) {\nLAB_0019f61e:\n        uVar9 = (long)p_Var5 - (long)p_Var15;\n        if ((long)uVar9 < 0x80000000) {\n          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        p_Var10 = p_Var13->_M_right;\n        bVar14 = false;\n      }\n      else {\n        uVar7 = memcmp(__s1,__s2,(size_t)p_Var12);\n        uVar9 = (ulong)uVar7;\n        if (uVar7 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar9) goto LAB_0019f638;\nLAB_0019f5d0:\n        p_Var10 = p_Var13->_M_left;\n        bVar14 = true;\n      }\n    } while (p_Var10 != (_Base_ptr)0x0);\n    p_Var10 = p_Var13;\n    if (!bVar14) goto LAB_0019f64e;\n    if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var13) goto LAB_0019f70b;\nLAB_0019f6c9:\n    bVar14 = true;\n    if ((_Rb_tree_header *)p_Var13 == p_Var2) goto LAB_0019f6d4;\n    p_Var15 = p_Var13[1]._M_parent;\n    p_Var12 = p_Var15;\n    if (p_Var5 <= p_Var15) {\n      p_Var12 = p_Var5;\n    }\n    if ((p_Var12 == (_Base_ptr)0x0) ||\n       (iVar8 = memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12), iVar8 == 0)) {\n      bVar14 = false;\n      lVar11 = (long)p_Var5 - (long)p_Var15;\n      if (0x7fffffff < lVar11) goto LAB_0019f6d4;\n      if (lVar11 < -0x80000000) goto LAB_0019f7b1;\n      iVar8 = (int)lVar11;\n    }\n    bVar14 = SUB41((uint)iVar8 >> 0x1f,0);\n  }\nLAB_0019f6d4:\n  _Rb_tree_insert_and_rebalance(bVar14,pVar17.first._M_node,p_Var13,&p_Var2->_M_header);\n  psVar3 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar3 = *psVar3 + 1;\n  pVar17._8_8_ = 1;\n  return pVar17;\n}\n\n" comment (ERROR "pair<std::_Rb_tree_iterator<std::pair<const_std::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : :) (labeled_statement "__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>\n __thiscall" statement_identifier (ERROR "::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold:" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) :) : (expression_statement "Kept_section::Comdat_section_info>_>,_bool>\n __thiscall" (comma_expression "Kept_section::Comdat_section_info>_>,_bool>\n __thiscall" identifier (ERROR "::Comdat_section_info>_>" : : (binary_expression "Comdat_section_info>_" identifier > identifier) >) , (binary_expression "_bool>\n __thiscall" identifier > identifier)) ;)) (labeled_statement "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>_>,_gold::Kept_section::Comdat_section_info>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_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>_>,_gold::Kept_section::Comdat_section_info>_>_>\n::\n_M_emplace_unique<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>\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>_>,_gold::Kept_section::Comdat_section_info>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_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>_>,_gold::Kept_section::Comdat_section_info>_>_>\n           *this,pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>\n                 *__args_0)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  _Rb_tree_header *p_Var2;\n  size_t *psVar3;\n  pointer pcVar4;\n  _Base_ptr p_Var5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  ulong uVar9;\n  _Rb_tree_node_base *p_Var10;\n  long lVar11;\n  _Base_ptr p_Var12;\n  _Rb_tree_node_base *p_Var13;\n  bool bVar14;\n  void *__s2;\n  undefined1 *__s1;\n  _Base_ptr p_Var15;\n  pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>\n  pVar16;\n  pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>\n  pVar17;\n  \n  pVar17.first._M_node = (_Base_ptr)operator_new(0x50);\n  pcVar4 = (__args_0->first)._M_dataplus._M_p;\n  *(_Base_ptr **)(pVar17.first._M_node + 1) = &pVar17.first._M_node[1]._M_left;\n  paVar1 = &(__args_0->first).field_2;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar1) {\n    p_Var5 = *(_Base_ptr *)((long)&(__args_0->first).field_2 + 8);\n    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;\n    pVar17.first._M_node[1]._M_right = p_Var5;\n  }\n  else {\n    *(pointer *)(pVar17.first._M_node + 1) = pcVar4;\n    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;\n  }\n  p_Var5 = (_Base_ptr)(__args_0->first)._M_string_length;\n  uVar7 = (__args_0->second).shndx;\n  uVar6 = *(undefined4 *)&(__args_0->second).field_0x4;\n  p_Var15 = (_Base_ptr)(__args_0->second).size;\n  (__args_0->first)._M_dataplus._M_p = (pointer)paVar1;\n  p_Var2 = &(this->_M_impl).super__Rb_tree_header;\n  (__args_0->first)._M_string_length = 0;\n  (__args_0->first).field_2._M_local_buf[0] = '\0';\n  p_Var10 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  pVar17.first._M_node[1]._M_parent = p_Var5;\n  pVar17.first._M_node[2]._M_color = uVar7;\n  *(undefined4 *)&pVar17.first._M_node[2].field_0x4 = uVar6;\n  pVar17.first._M_node[2]._M_parent = p_Var15;\n  if (p_Var10 == (_Rb_tree_node_base *)0x0) {\n    p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;\n    if (p_Var13 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\nLAB_0019f70b:\n      p_Var10 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var13);\n      p_Var15 = p_Var10[1]._M_parent;\n      __s2 = *(void **)(p_Var10 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\nLAB_0019f64e:\n      if ((p_Var12 == (_Base_ptr)0x0) || (iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0)) {\n        lVar11 = (long)p_Var15 - (long)p_Var5;\n        if (0x7fffffff < lVar11) goto LAB_0019f68d;\n        if (-0x80000001 < lVar11) {\n          iVar8 = (int)lVar11;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar8) goto LAB_0019f68d;\n      }\n      if (p_Var13 == (_Rb_tree_node_base *)0x0) {\n        p_Var10 = (_Rb_tree_node_base *)0x0;\nLAB_0019f68d:\n        if (&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1) {\n          operator_delete(__s1);\n        }\n        operator_delete(pVar17.first._M_node);\n        pVar16._8_8_ = 0;\n        pVar16.first._M_node = p_Var10;\n        return pVar16;\n      }\n      goto LAB_0019f6c9;\n    }\n    p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_0019f7b1:\n    bVar14 = true;\n  }\n  else {\n    __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\n    do {\n      p_Var13 = p_Var10;\n      p_Var15 = p_Var13[1]._M_parent;\n      __s2 = *(void **)(p_Var13 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\n      if (p_Var12 == (_Base_ptr)0x0) {\nLAB_0019f61e:\n        uVar9 = (long)p_Var5 - (long)p_Var15;\n        if ((long)uVar9 < 0x80000000) {\n          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        p_Var10 = p_Var13->_M_right;\n        bVar14 = false;\n      }\n      else {\n        uVar7 = memcmp(__s1,__s2,(size_t)p_Var12);\n        uVar9 = (ulong)uVar7;\n        if (uVar7 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar9) goto LAB_0019f638;\nLAB_0019f5d0:\n        p_Var10 = p_Var13->_M_left;\n        bVar14 = true;\n      }\n    } while (p_Var10 != (_Base_ptr)0x0);\n    p_Var10 = p_Var13;\n    if (!bVar14) goto LAB_0019f64e;\n    if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var13) goto LAB_0019f70b;\nLAB_0019f6c9:\n    bVar14 = true;\n    if ((_Rb_tree_header *)p_Var13 == p_Var2) goto LAB_0019f6d4;\n    p_Var15 = p_Var13[1]._M_parent;\n    p_Var12 = p_Var15;\n    if (p_Var5 <= p_Var15) {\n      p_Var12 = p_Var5;\n    }\n    if ((p_Var12 == (_Base_ptr)0x0) ||\n       (iVar8 = memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12), iVar8 == 0)) {\n      bVar14 = false;\n      lVar11 = (long)p_Var5 - (long)p_Var15;\n      if (0x7fffffff < lVar11) goto LAB_0019f6d4;\n      if (lVar11 < -0x80000000) goto LAB_0019f7b1;\n      iVar8 = (int)lVar11;\n    }\n    bVar14 = SUB41((uint)iVar8 >> 0x1f,0);\n  }\nLAB_0019f6d4:\n  _Rb_tree_insert_and_rebalance(bVar14,pVar17.first._M_node,p_Var13,&p_Var2->_M_header);\n  psVar3 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar3 = *psVar3 + 1;\n  pVar17._8_8_ = 1;\n  return pVar17;\n}" statement_identifier (ERROR "::\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>_>,_gold::Kept_section::Comdat_section_info>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_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>_>,_gold::Kept_section::Comdat_section_info>_>_>\n::\n_M_emplace_unique<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>\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>_>,_gold::Kept_section::Comdat_section_info>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_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>_>,_gold::Kept_section::Comdat_section_info>_>_>\n           *this,pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold:" : : (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>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "Kept_section::Comdat_section_info>,_std" identifier (ERROR "::Comdat_section_info>" : : identifier >) , 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>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "Kept_section::Comdat_section_info>_>,_std" identifier (ERROR "::Comdat_section_info>_>" : : (binary_expression "Comdat_section_info>_" identifier > identifier) >) , 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>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "Kept_section::Comdat_section_info>_>_>\n::\n_M_emplace_unique<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold" identifier (ERROR "::Comdat_section_info>_>_>\n::\n_M_emplace_unique<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>" : : (binary_expression "Comdat_section_info>_>_" (binary_expression "Comdat_section_info>_" identifier > identifier) > identifier) > : : (binary_expression "_M_emplace_unique<std" identifier < identifier) : : (binary_expression "pair<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>_" (binary_expression "allocator<char" identifier < identifier) > identifier) >) , identifier) : : (comma_expression "Kept_section::Comdat_section_info>_>\n          (_Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std" identifier (ERROR "::Comdat_section_info>_>\n          (_Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>" : : (binary_expression "Comdat_section_info>_" 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>_" (binary_expression "allocator<char" identifier < identifier) > 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>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "Kept_section::Comdat_section_info>,_std" identifier (ERROR "::Comdat_section_info>" : : identifier >) , 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>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "Kept_section::Comdat_section_info>_>,_std" identifier (ERROR "::Comdat_section_info>_>" : : (binary_expression "Comdat_section_info>_" identifier > identifier) >) , 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>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "Kept_section::Comdat_section_info>_>_>\n           *this,pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold" identifier (ERROR "::Comdat_section_info>_>_>\n           *this,pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>" : : (comma_expression "Comdat_section_info>_>_>\n           *this,pair<std" (binary_expression "Comdat_section_info>_>_>\n           *this" (binary_expression "Comdat_section_info>_>_" (binary_expression "Comdat_section_info>_" identifier > identifier) > identifier) > (pointer_expression "*this" * identifier)) , (binary_expression "pair<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>_" (binary_expression "allocator<char" identifier < identifier) > identifier) >) , identifier) :) : (labeled_statement "Kept_section::Comdat_section_info>\n                 *__args_0)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  _Rb_tree_header *p_Var2;\n  size_t *psVar3;\n  pointer pcVar4;\n  _Base_ptr p_Var5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  ulong uVar9;\n  _Rb_tree_node_base *p_Var10;\n  long lVar11;\n  _Base_ptr p_Var12;\n  _Rb_tree_node_base *p_Var13;\n  bool bVar14;\n  void *__s2;\n  undefined1 *__s1;\n  _Base_ptr p_Var15;\n  pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>\n  pVar16;\n  pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>\n  pVar17;\n  \n  pVar17.first._M_node = (_Base_ptr)operator_new(0x50);\n  pcVar4 = (__args_0->first)._M_dataplus._M_p;\n  *(_Base_ptr **)(pVar17.first._M_node + 1) = &pVar17.first._M_node[1]._M_left;\n  paVar1 = &(__args_0->first).field_2;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar1) {\n    p_Var5 = *(_Base_ptr *)((long)&(__args_0->first).field_2 + 8);\n    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;\n    pVar17.first._M_node[1]._M_right = p_Var5;\n  }\n  else {\n    *(pointer *)(pVar17.first._M_node + 1) = pcVar4;\n    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;\n  }\n  p_Var5 = (_Base_ptr)(__args_0->first)._M_string_length;\n  uVar7 = (__args_0->second).shndx;\n  uVar6 = *(undefined4 *)&(__args_0->second).field_0x4;\n  p_Var15 = (_Base_ptr)(__args_0->second).size;\n  (__args_0->first)._M_dataplus._M_p = (pointer)paVar1;\n  p_Var2 = &(this->_M_impl).super__Rb_tree_header;\n  (__args_0->first)._M_string_length = 0;\n  (__args_0->first).field_2._M_local_buf[0] = '\0';\n  p_Var10 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  pVar17.first._M_node[1]._M_parent = p_Var5;\n  pVar17.first._M_node[2]._M_color = uVar7;\n  *(undefined4 *)&pVar17.first._M_node[2].field_0x4 = uVar6;\n  pVar17.first._M_node[2]._M_parent = p_Var15;\n  if (p_Var10 == (_Rb_tree_node_base *)0x0) {\n    p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;\n    if (p_Var13 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\nLAB_0019f70b:\n      p_Var10 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var13);\n      p_Var15 = p_Var10[1]._M_parent;\n      __s2 = *(void **)(p_Var10 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\nLAB_0019f64e:\n      if ((p_Var12 == (_Base_ptr)0x0) || (iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0)) {\n        lVar11 = (long)p_Var15 - (long)p_Var5;\n        if (0x7fffffff < lVar11) goto LAB_0019f68d;\n        if (-0x80000001 < lVar11) {\n          iVar8 = (int)lVar11;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar8) goto LAB_0019f68d;\n      }\n      if (p_Var13 == (_Rb_tree_node_base *)0x0) {\n        p_Var10 = (_Rb_tree_node_base *)0x0;\nLAB_0019f68d:\n        if (&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1) {\n          operator_delete(__s1);\n        }\n        operator_delete(pVar17.first._M_node);\n        pVar16._8_8_ = 0;\n        pVar16.first._M_node = p_Var10;\n        return pVar16;\n      }\n      goto LAB_0019f6c9;\n    }\n    p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_0019f7b1:\n    bVar14 = true;\n  }\n  else {\n    __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\n    do {\n      p_Var13 = p_Var10;\n      p_Var15 = p_Var13[1]._M_parent;\n      __s2 = *(void **)(p_Var13 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\n      if (p_Var12 == (_Base_ptr)0x0) {\nLAB_0019f61e:\n        uVar9 = (long)p_Var5 - (long)p_Var15;\n        if ((long)uVar9 < 0x80000000) {\n          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        p_Var10 = p_Var13->_M_right;\n        bVar14 = false;\n      }\n      else {\n        uVar7 = memcmp(__s1,__s2,(size_t)p_Var12);\n        uVar9 = (ulong)uVar7;\n        if (uVar7 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar9) goto LAB_0019f638;\nLAB_0019f5d0:\n        p_Var10 = p_Var13->_M_left;\n        bVar14 = true;\n      }\n    } while (p_Var10 != (_Base_ptr)0x0);\n    p_Var10 = p_Var13;\n    if (!bVar14) goto LAB_0019f64e;\n    if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var13) goto LAB_0019f70b;\nLAB_0019f6c9:\n    bVar14 = true;\n    if ((_Rb_tree_header *)p_Var13 == p_Var2) goto LAB_0019f6d4;\n    p_Var15 = p_Var13[1]._M_parent;\n    p_Var12 = p_Var15;\n    if (p_Var5 <= p_Var15) {\n      p_Var12 = p_Var5;\n    }\n    if ((p_Var12 == (_Base_ptr)0x0) ||\n       (iVar8 = memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12), iVar8 == 0)) {\n      bVar14 = false;\n      lVar11 = (long)p_Var5 - (long)p_Var15;\n      if (0x7fffffff < lVar11) goto LAB_0019f6d4;\n      if (lVar11 < -0x80000000) goto LAB_0019f7b1;\n      iVar8 = (int)lVar11;\n    }\n    bVar14 = SUB41((uint)iVar8 >> 0x1f,0);\n  }\nLAB_0019f6d4:\n  _Rb_tree_insert_and_rebalance(bVar14,pVar17.first._M_node,p_Var13,&p_Var2->_M_header);\n  psVar3 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar3 = *psVar3 + 1;\n  pVar17._8_8_ = 1;\n  return pVar17;\n}" statement_identifier : (ERROR ":Comdat_section_info>\n                 *__args_0)" : (binary_expression "Comdat_section_info>\n                 *__args_0" identifier > (pointer_expression "*__args_0" * identifier)) )) (compound_statement "{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  _Rb_tree_header *p_Var2;\n  size_t *psVar3;\n  pointer pcVar4;\n  _Base_ptr p_Var5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  ulong uVar9;\n  _Rb_tree_node_base *p_Var10;\n  long lVar11;\n  _Base_ptr p_Var12;\n  _Rb_tree_node_base *p_Var13;\n  bool bVar14;\n  void *__s2;\n  undefined1 *__s1;\n  _Base_ptr p_Var15;\n  pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>\n  pVar16;\n  pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>\n  pVar17;\n  \n  pVar17.first._M_node = (_Base_ptr)operator_new(0x50);\n  pcVar4 = (__args_0->first)._M_dataplus._M_p;\n  *(_Base_ptr **)(pVar17.first._M_node + 1) = &pVar17.first._M_node[1]._M_left;\n  paVar1 = &(__args_0->first).field_2;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar1) {\n    p_Var5 = *(_Base_ptr *)((long)&(__args_0->first).field_2 + 8);\n    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;\n    pVar17.first._M_node[1]._M_right = p_Var5;\n  }\n  else {\n    *(pointer *)(pVar17.first._M_node + 1) = pcVar4;\n    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;\n  }\n  p_Var5 = (_Base_ptr)(__args_0->first)._M_string_length;\n  uVar7 = (__args_0->second).shndx;\n  uVar6 = *(undefined4 *)&(__args_0->second).field_0x4;\n  p_Var15 = (_Base_ptr)(__args_0->second).size;\n  (__args_0->first)._M_dataplus._M_p = (pointer)paVar1;\n  p_Var2 = &(this->_M_impl).super__Rb_tree_header;\n  (__args_0->first)._M_string_length = 0;\n  (__args_0->first).field_2._M_local_buf[0] = '\0';\n  p_Var10 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  pVar17.first._M_node[1]._M_parent = p_Var5;\n  pVar17.first._M_node[2]._M_color = uVar7;\n  *(undefined4 *)&pVar17.first._M_node[2].field_0x4 = uVar6;\n  pVar17.first._M_node[2]._M_parent = p_Var15;\n  if (p_Var10 == (_Rb_tree_node_base *)0x0) {\n    p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;\n    if (p_Var13 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\nLAB_0019f70b:\n      p_Var10 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var13);\n      p_Var15 = p_Var10[1]._M_parent;\n      __s2 = *(void **)(p_Var10 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\nLAB_0019f64e:\n      if ((p_Var12 == (_Base_ptr)0x0) || (iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0)) {\n        lVar11 = (long)p_Var15 - (long)p_Var5;\n        if (0x7fffffff < lVar11) goto LAB_0019f68d;\n        if (-0x80000001 < lVar11) {\n          iVar8 = (int)lVar11;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar8) goto LAB_0019f68d;\n      }\n      if (p_Var13 == (_Rb_tree_node_base *)0x0) {\n        p_Var10 = (_Rb_tree_node_base *)0x0;\nLAB_0019f68d:\n        if (&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1) {\n          operator_delete(__s1);\n        }\n        operator_delete(pVar17.first._M_node);\n        pVar16._8_8_ = 0;\n        pVar16.first._M_node = p_Var10;\n        return pVar16;\n      }\n      goto LAB_0019f6c9;\n    }\n    p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_0019f7b1:\n    bVar14 = true;\n  }\n  else {\n    __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\n    do {\n      p_Var13 = p_Var10;\n      p_Var15 = p_Var13[1]._M_parent;\n      __s2 = *(void **)(p_Var13 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\n      if (p_Var12 == (_Base_ptr)0x0) {\nLAB_0019f61e:\n        uVar9 = (long)p_Var5 - (long)p_Var15;\n        if ((long)uVar9 < 0x80000000) {\n          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        p_Var10 = p_Var13->_M_right;\n        bVar14 = false;\n      }\n      else {\n        uVar7 = memcmp(__s1,__s2,(size_t)p_Var12);\n        uVar9 = (ulong)uVar7;\n        if (uVar7 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar9) goto LAB_0019f638;\nLAB_0019f5d0:\n        p_Var10 = p_Var13->_M_left;\n        bVar14 = true;\n      }\n    } while (p_Var10 != (_Base_ptr)0x0);\n    p_Var10 = p_Var13;\n    if (!bVar14) goto LAB_0019f64e;\n    if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var13) goto LAB_0019f70b;\nLAB_0019f6c9:\n    bVar14 = true;\n    if ((_Rb_tree_header *)p_Var13 == p_Var2) goto LAB_0019f6d4;\n    p_Var15 = p_Var13[1]._M_parent;\n    p_Var12 = p_Var15;\n    if (p_Var5 <= p_Var15) {\n      p_Var12 = p_Var5;\n    }\n    if ((p_Var12 == (_Base_ptr)0x0) ||\n       (iVar8 = memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12), iVar8 == 0)) {\n      bVar14 = false;\n      lVar11 = (long)p_Var5 - (long)p_Var15;\n      if (0x7fffffff < lVar11) goto LAB_0019f6d4;\n      if (lVar11 < -0x80000000) goto LAB_0019f7b1;\n      iVar8 = (int)lVar11;\n    }\n    bVar14 = SUB41((uint)iVar8 >> 0x1f,0);\n  }\nLAB_0019f6d4:\n  _Rb_tree_insert_and_rebalance(bVar14,pVar17.first._M_node,p_Var13,&p_Var2->_M_header);\n  psVar3 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar3 = *psVar3 + 1;\n  pVar17._8_8_ = 1;\n  return pVar17;\n}" { (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) : :) (expression_statement "allocator<char>_>_9\n  *paVar1;" (binary_expression "allocator<char>_>_9\n  *paVar1" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar1" identifier * identifier)) ;) (declaration "_Rb_tree_header *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "size_t *psVar3;" primitive_type (pointer_declarator "*psVar3" * identifier) ;) (declaration "pointer pcVar4;" type_identifier identifier ;) (declaration "_Base_ptr p_Var5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *p_Var10;" type_identifier (pointer_declarator "*p_Var10" * identifier) ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "_Base_ptr p_Var12;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *p_Var13;" type_identifier (pointer_declarator "*p_Var13" * identifier) ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "void *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "undefined1 *__s1;" type_identifier (pointer_declarator "*__s1" * identifier) ;) (declaration "_Base_ptr p_Var15;" type_identifier identifier ;) (ERROR "pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<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>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : :) (expression_statement "Kept_section::Comdat_section_info>_>,_bool>\n  pVar16;" (comma_expression "Kept_section::Comdat_section_info>_>,_bool>\n  pVar16" identifier (ERROR "::Comdat_section_info>_>" : : (binary_expression "Comdat_section_info>_" identifier > identifier) >) , (binary_expression "_bool>\n  pVar16" identifier > identifier)) ;) (ERROR "pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<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>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : :) (expression_statement "Kept_section::Comdat_section_info>_>,_bool>\n  pVar17;" (comma_expression "Kept_section::Comdat_section_info>_>,_bool>\n  pVar17" identifier (ERROR "::Comdat_section_info>_>" : : (binary_expression "Comdat_section_info>_" identifier > identifier) >) , (binary_expression "_bool>\n  pVar17" identifier > identifier)) ;) (expression_statement "pVar17.first._M_node = (_Base_ptr)operator_new(0x50);" (assignment_expression "pVar17.first._M_node = (_Base_ptr)operator_new(0x50)" (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) = (cast_expression "(_Base_ptr)operator_new(0x50)" ( (type_descriptor "_Base_ptr" type_identifier) ) (call_expression "operator_new(0x50)" identifier (argument_list "(0x50)" ( number_literal ))))) ;) (expression_statement "pcVar4 = (__args_0->first)._M_dataplus._M_p;" (assignment_expression "pcVar4 = (__args_0->first)._M_dataplus._M_p" identifier = (field_expression "(__args_0->first)._M_dataplus._M_p" (field_expression "(__args_0->first)._M_dataplus" (parenthesized_expression "(__args_0->first)" ( (field_expression "__args_0->first" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "*(_Base_ptr **)(pVar17.first._M_node + 1) = &pVar17.first._M_node[1]._M_left;" (assignment_expression "*(_Base_ptr **)(pVar17.first._M_node + 1) = &pVar17.first._M_node[1]._M_left" (pointer_expression "*(_Base_ptr **)(pVar17.first._M_node + 1)" * (cast_expression "(_Base_ptr **)(pVar17.first._M_node + 1)" ( (type_descriptor "_Base_ptr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pVar17.first._M_node + 1)" ( (binary_expression "pVar17.first._M_node + 1" (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) + number_literal) )))) = (pointer_expression "&pVar17.first._M_node[1]._M_left" & (field_expression "pVar17.first._M_node[1]._M_left" (subscript_expression "pVar17.first._M_node[1]" (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "paVar1 = &(__args_0->first).field_2;" (assignment_expression "paVar1 = &(__args_0->first).field_2" identifier = (pointer_expression "&(__args_0->first).field_2" & (field_expression "(__args_0->first).field_2" (parenthesized_expression "(__args_0->first)" ( (field_expression "__args_0->first" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar1) {\n    p_Var5 = *(_Base_ptr *)((long)&(__args_0->first).field_2 + 8);\n    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;\n    pVar17.first._M_node[1]._M_right = p_Var5;\n  }\n  else {\n    *(pointer *)(pVar17.first._M_node + 1) = pcVar4;\n    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)pcVar4 == paVar1)" ( (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       *)pcVar4 == paVar1" (binary_expression "allocator<char>_>_9\n       *)pcVar4" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)pcVar4" identifier * (ERROR ")" )) identifier)) == identifier) )) )) (compound_statement "{\n    p_Var5 = *(_Base_ptr *)((long)&(__args_0->first).field_2 + 8);\n    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;\n    pVar17.first._M_node[1]._M_right = p_Var5;\n  }" { (expression_statement "p_Var5 = *(_Base_ptr *)((long)&(__args_0->first).field_2 + 8);" (assignment_expression "p_Var5 = *(_Base_ptr *)((long)&(__args_0->first).field_2 + 8)" identifier = (pointer_expression "*(_Base_ptr *)((long)&(__args_0->first).field_2 + 8)" * (cast_expression "(_Base_ptr *)((long)&(__args_0->first).field_2 + 8)" ( (type_descriptor "_Base_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&(__args_0->first).field_2 + 8)" ( (binary_expression "(long)&(__args_0->first).field_2 + 8" (cast_expression "(long)&(__args_0->first).field_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&(__args_0->first).field_2" & (field_expression "(__args_0->first).field_2" (parenthesized_expression "(__args_0->first)" ( (field_expression "__args_0->first" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;" (assignment_expression "pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity" (field_expression "pVar17.first._M_node[1]._M_left" (subscript_expression "pVar17.first._M_node[1]" (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = (field_expression "(_Base_ptr)(__args_0->first).field_2._M_allocated_capacity" (field_expression "(_Base_ptr)(__args_0->first).field_2" (call_expression "(_Base_ptr)(__args_0->first)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "(__args_0->first)" ( (field_expression "__args_0->first" identifier -> field_identifier) ))) . field_identifier) . field_identifier)) ;) (expression_statement "pVar17.first._M_node[1]._M_right = p_Var5;" (assignment_expression "pVar17.first._M_node[1]._M_right = p_Var5" (field_expression "pVar17.first._M_node[1]._M_right" (subscript_expression "pVar17.first._M_node[1]" (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = identifier) ;) }) (else_clause "else {\n    *(pointer *)(pVar17.first._M_node + 1) = pcVar4;\n    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;\n  }" else (compound_statement "{\n    *(pointer *)(pVar17.first._M_node + 1) = pcVar4;\n    pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;\n  }" { (expression_statement "*(pointer *)(pVar17.first._M_node + 1) = pcVar4;" (assignment_expression "*(pointer *)(pVar17.first._M_node + 1) = pcVar4" (pointer_expression "*(pointer *)(pVar17.first._M_node + 1)" * (cast_expression "(pointer *)(pVar17.first._M_node + 1)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pVar17.first._M_node + 1)" ( (binary_expression "pVar17.first._M_node + 1" (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity;" (assignment_expression "pVar17.first._M_node[1]._M_left = (_Base_ptr)(__args_0->first).field_2._M_allocated_capacity" (field_expression "pVar17.first._M_node[1]._M_left" (subscript_expression "pVar17.first._M_node[1]" (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = (field_expression "(_Base_ptr)(__args_0->first).field_2._M_allocated_capacity" (field_expression "(_Base_ptr)(__args_0->first).field_2" (call_expression "(_Base_ptr)(__args_0->first)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "(__args_0->first)" ( (field_expression "__args_0->first" identifier -> field_identifier) ))) . field_identifier) . field_identifier)) ;) }))) (expression_statement "p_Var5 = (_Base_ptr)(__args_0->first)._M_string_length;" (assignment_expression "p_Var5 = (_Base_ptr)(__args_0->first)._M_string_length" identifier = (field_expression "(_Base_ptr)(__args_0->first)._M_string_length" (call_expression "(_Base_ptr)(__args_0->first)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "(__args_0->first)" ( (field_expression "__args_0->first" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "uVar7 = (__args_0->second).shndx;" (assignment_expression "uVar7 = (__args_0->second).shndx" identifier = (field_expression "(__args_0->second).shndx" (parenthesized_expression "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar6 = *(undefined4 *)&(__args_0->second).field_0x4;" (assignment_expression "uVar6 = *(undefined4 *)&(__args_0->second).field_0x4" identifier = (pointer_expression "*(undefined4 *)&(__args_0->second).field_0x4" * (cast_expression "(undefined4 *)&(__args_0->second).field_0x4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(__args_0->second).field_0x4" & (field_expression "(__args_0->second).field_0x4" (parenthesized_expression "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) )) . field_identifier))))) ;) (expression_statement "p_Var15 = (_Base_ptr)(__args_0->second).size;" (assignment_expression "p_Var15 = (_Base_ptr)(__args_0->second).size" identifier = (field_expression "(_Base_ptr)(__args_0->second).size" (call_expression "(_Base_ptr)(__args_0->second)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "(__args_0->first)._M_dataplus._M_p = (pointer)paVar1;" (assignment_expression "(__args_0->first)._M_dataplus._M_p = (pointer)paVar1" (field_expression "(__args_0->first)._M_dataplus._M_p" (field_expression "(__args_0->first)._M_dataplus" (parenthesized_expression "(__args_0->first)" ( (field_expression "__args_0->first" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar1" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "p_Var2 = &(this->_M_impl).super__Rb_tree_header;" (assignment_expression "p_Var2 = &(this->_M_impl).super__Rb_tree_header" identifier = (pointer_expression "&(this->_M_impl).super__Rb_tree_header" & (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "(__args_0->first)._M_string_length = 0;" (assignment_expression "(__args_0->first)._M_string_length = 0" (field_expression "(__args_0->first)._M_string_length" (parenthesized_expression "(__args_0->first)" ( (field_expression "__args_0->first" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(__args_0->first).field_2._M_local_buf[0] = '\0';" (assignment_expression "(__args_0->first).field_2._M_local_buf[0] = '\0'" (subscript_expression "(__args_0->first).field_2._M_local_buf[0]" (field_expression "(__args_0->first).field_2._M_local_buf" (field_expression "(__args_0->first).field_2" (parenthesized_expression "(__args_0->first)" ( (field_expression "__args_0->first" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "p_Var10 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var10 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent" identifier = (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_parent" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "pVar17.first._M_node[1]._M_parent = p_Var5;" (assignment_expression "pVar17.first._M_node[1]._M_parent = p_Var5" (field_expression "pVar17.first._M_node[1]._M_parent" (subscript_expression "pVar17.first._M_node[1]" (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "pVar17.first._M_node[2]._M_color = uVar7;" (assignment_expression "pVar17.first._M_node[2]._M_color = uVar7" (field_expression "pVar17.first._M_node[2]._M_color" (subscript_expression "pVar17.first._M_node[2]" (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "*(undefined4 *)&pVar17.first._M_node[2].field_0x4 = uVar6;" (assignment_expression "*(undefined4 *)&pVar17.first._M_node[2].field_0x4 = uVar6" (pointer_expression "*(undefined4 *)&pVar17.first._M_node[2].field_0x4" * (cast_expression "(undefined4 *)&pVar17.first._M_node[2].field_0x4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pVar17.first._M_node[2].field_0x4" & (field_expression "pVar17.first._M_node[2].field_0x4" (subscript_expression "pVar17.first._M_node[2]" (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier)))) = identifier) ;) (expression_statement "pVar17.first._M_node[2]._M_parent = p_Var15;" (assignment_expression "pVar17.first._M_node[2]._M_parent = p_Var15" (field_expression "pVar17.first._M_node[2]._M_parent" (subscript_expression "pVar17.first._M_node[2]" (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = identifier) ;) (if_statement "if (p_Var10 == (_Rb_tree_node_base *)0x0) {\n    p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;\n    if (p_Var13 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\nLAB_0019f70b:\n      p_Var10 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var13);\n      p_Var15 = p_Var10[1]._M_parent;\n      __s2 = *(void **)(p_Var10 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\nLAB_0019f64e:\n      if ((p_Var12 == (_Base_ptr)0x0) || (iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0)) {\n        lVar11 = (long)p_Var15 - (long)p_Var5;\n        if (0x7fffffff < lVar11) goto LAB_0019f68d;\n        if (-0x80000001 < lVar11) {\n          iVar8 = (int)lVar11;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar8) goto LAB_0019f68d;\n      }\n      if (p_Var13 == (_Rb_tree_node_base *)0x0) {\n        p_Var10 = (_Rb_tree_node_base *)0x0;\nLAB_0019f68d:\n        if (&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1) {\n          operator_delete(__s1);\n        }\n        operator_delete(pVar17.first._M_node);\n        pVar16._8_8_ = 0;\n        pVar16.first._M_node = p_Var10;\n        return pVar16;\n      }\n      goto LAB_0019f6c9;\n    }\n    p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_0019f7b1:\n    bVar14 = true;\n  }\n  else {\n    __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\n    do {\n      p_Var13 = p_Var10;\n      p_Var15 = p_Var13[1]._M_parent;\n      __s2 = *(void **)(p_Var13 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\n      if (p_Var12 == (_Base_ptr)0x0) {\nLAB_0019f61e:\n        uVar9 = (long)p_Var5 - (long)p_Var15;\n        if ((long)uVar9 < 0x80000000) {\n          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        p_Var10 = p_Var13->_M_right;\n        bVar14 = false;\n      }\n      else {\n        uVar7 = memcmp(__s1,__s2,(size_t)p_Var12);\n        uVar9 = (ulong)uVar7;\n        if (uVar7 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar9) goto LAB_0019f638;\nLAB_0019f5d0:\n        p_Var10 = p_Var13->_M_left;\n        bVar14 = true;\n      }\n    } while (p_Var10 != (_Base_ptr)0x0);\n    p_Var10 = p_Var13;\n    if (!bVar14) goto LAB_0019f64e;\n    if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var13) goto LAB_0019f70b;\nLAB_0019f6c9:\n    bVar14 = true;\n    if ((_Rb_tree_header *)p_Var13 == p_Var2) goto LAB_0019f6d4;\n    p_Var15 = p_Var13[1]._M_parent;\n    p_Var12 = p_Var15;\n    if (p_Var5 <= p_Var15) {\n      p_Var12 = p_Var5;\n    }\n    if ((p_Var12 == (_Base_ptr)0x0) ||\n       (iVar8 = memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12), iVar8 == 0)) {\n      bVar14 = false;\n      lVar11 = (long)p_Var5 - (long)p_Var15;\n      if (0x7fffffff < lVar11) goto LAB_0019f6d4;\n      if (lVar11 < -0x80000000) goto LAB_0019f7b1;\n      iVar8 = (int)lVar11;\n    }\n    bVar14 = SUB41((uint)iVar8 >> 0x1f,0);\n  }" if (parenthesized_expression "(p_Var10 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var10 == (_Rb_tree_node_base *)0x0" identifier == (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;\n    if (p_Var13 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\nLAB_0019f70b:\n      p_Var10 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var13);\n      p_Var15 = p_Var10[1]._M_parent;\n      __s2 = *(void **)(p_Var10 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\nLAB_0019f64e:\n      if ((p_Var12 == (_Base_ptr)0x0) || (iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0)) {\n        lVar11 = (long)p_Var15 - (long)p_Var5;\n        if (0x7fffffff < lVar11) goto LAB_0019f68d;\n        if (-0x80000001 < lVar11) {\n          iVar8 = (int)lVar11;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar8) goto LAB_0019f68d;\n      }\n      if (p_Var13 == (_Rb_tree_node_base *)0x0) {\n        p_Var10 = (_Rb_tree_node_base *)0x0;\nLAB_0019f68d:\n        if (&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1) {\n          operator_delete(__s1);\n        }\n        operator_delete(pVar17.first._M_node);\n        pVar16._8_8_ = 0;\n        pVar16.first._M_node = p_Var10;\n        return pVar16;\n      }\n      goto LAB_0019f6c9;\n    }\n    p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_0019f7b1:\n    bVar14 = true;\n  }" { (expression_statement "p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;" (assignment_expression "p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header" identifier = (pointer_expression "&(this->_M_impl).super__Rb_tree_header._M_header" & (field_expression "(this->_M_impl).super__Rb_tree_header._M_header" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (if_statement "if (p_Var13 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\nLAB_0019f70b:\n      p_Var10 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var13);\n      p_Var15 = p_Var10[1]._M_parent;\n      __s2 = *(void **)(p_Var10 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\nLAB_0019f64e:\n      if ((p_Var12 == (_Base_ptr)0x0) || (iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0)) {\n        lVar11 = (long)p_Var15 - (long)p_Var5;\n        if (0x7fffffff < lVar11) goto LAB_0019f68d;\n        if (-0x80000001 < lVar11) {\n          iVar8 = (int)lVar11;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar8) goto LAB_0019f68d;\n      }\n      if (p_Var13 == (_Rb_tree_node_base *)0x0) {\n        p_Var10 = (_Rb_tree_node_base *)0x0;\nLAB_0019f68d:\n        if (&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1) {\n          operator_delete(__s1);\n        }\n        operator_delete(pVar17.first._M_node);\n        pVar16._8_8_ = 0;\n        pVar16.first._M_node = p_Var10;\n        return pVar16;\n      }\n      goto LAB_0019f6c9;\n    }" if (parenthesized_expression "(p_Var13 != (this->_M_impl).super__Rb_tree_header._M_header._M_left)" ( (binary_expression "p_Var13 != (this->_M_impl).super__Rb_tree_header._M_header._M_left" identifier != (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_left" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) )) (compound_statement "{\n      __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\nLAB_0019f70b:\n      p_Var10 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var13);\n      p_Var15 = p_Var10[1]._M_parent;\n      __s2 = *(void **)(p_Var10 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\nLAB_0019f64e:\n      if ((p_Var12 == (_Base_ptr)0x0) || (iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0)) {\n        lVar11 = (long)p_Var15 - (long)p_Var5;\n        if (0x7fffffff < lVar11) goto LAB_0019f68d;\n        if (-0x80000001 < lVar11) {\n          iVar8 = (int)lVar11;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar8) goto LAB_0019f68d;\n      }\n      if (p_Var13 == (_Rb_tree_node_base *)0x0) {\n        p_Var10 = (_Rb_tree_node_base *)0x0;\nLAB_0019f68d:\n        if (&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1) {\n          operator_delete(__s1);\n        }\n        operator_delete(pVar17.first._M_node);\n        pVar16._8_8_ = 0;\n        pVar16.first._M_node = p_Var10;\n        return pVar16;\n      }\n      goto LAB_0019f6c9;\n    }" { (expression_statement "__s1 = *(undefined1 **)(pVar17.first._M_node + 1);" (assignment_expression "__s1 = *(undefined1 **)(pVar17.first._M_node + 1)" identifier = (pointer_expression "*(undefined1 **)(pVar17.first._M_node + 1)" * (cast_expression "(undefined1 **)(pVar17.first._M_node + 1)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pVar17.first._M_node + 1)" ( (binary_expression "pVar17.first._M_node + 1" (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) + number_literal) ))))) ;) (labeled_statement "LAB_0019f70b:\n      p_Var10 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var13);" statement_identifier : (expression_statement "p_Var10 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var13);" (assignment_expression "p_Var10 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var13)" identifier = (cast_expression "(_Rb_tree_node_base *)_Rb_tree_decrement(p_Var13)" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "_Rb_tree_decrement(p_Var13)" identifier (argument_list "(p_Var13)" ( identifier ))))) ;)) (expression_statement "p_Var15 = p_Var10[1]._M_parent;" (assignment_expression "p_Var15 = p_Var10[1]._M_parent" identifier = (field_expression "p_Var10[1]._M_parent" (subscript_expression "p_Var10[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "__s2 = *(void **)(p_Var10 + 1);" (assignment_expression "__s2 = *(void **)(p_Var10 + 1)" identifier = (pointer_expression "*(void **)(p_Var10 + 1)" * (cast_expression "(void **)(p_Var10 + 1)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var10 + 1)" ( (binary_expression "p_Var10 + 1" identifier + number_literal) ))))) ;) (expression_statement "p_Var12 = p_Var15;" (assignment_expression "p_Var12 = p_Var15" identifier = identifier) ;) (if_statement "if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }" if (parenthesized_expression "(p_Var5 <= p_Var15)" ( (binary_expression "p_Var5 <= p_Var15" identifier <= identifier) )) (compound_statement "{\n        p_Var12 = p_Var5;\n      }" { (expression_statement "p_Var12 = p_Var5;" (assignment_expression "p_Var12 = p_Var5" identifier = identifier) ;) })) (labeled_statement "LAB_0019f64e:\n      if ((p_Var12 == (_Base_ptr)0x0) || (iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0)) {\n        lVar11 = (long)p_Var15 - (long)p_Var5;\n        if (0x7fffffff < lVar11) goto LAB_0019f68d;\n        if (-0x80000001 < lVar11) {\n          iVar8 = (int)lVar11;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar8) goto LAB_0019f68d;\n      }" statement_identifier : (if_statement "if ((p_Var12 == (_Base_ptr)0x0) || (iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0)) {\n        lVar11 = (long)p_Var15 - (long)p_Var5;\n        if (0x7fffffff < lVar11) goto LAB_0019f68d;\n        if (-0x80000001 < lVar11) {\n          iVar8 = (int)lVar11;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar8) goto LAB_0019f68d;\n      }" if (parenthesized_expression "((p_Var12 == (_Base_ptr)0x0) || (iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0))" ( (binary_expression "(p_Var12 == (_Base_ptr)0x0) || (iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0)" (parenthesized_expression "(p_Var12 == (_Base_ptr)0x0)" ( (binary_expression "p_Var12 == (_Base_ptr)0x0" identifier == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) || (parenthesized_expression "(iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0)" ( (comma_expression "iVar8 = memcmp(__s2,__s1,(size_t)p_Var12), iVar8 == 0" (assignment_expression "iVar8 = memcmp(__s2,__s1,(size_t)p_Var12)" identifier = (call_expression "memcmp(__s2,__s1,(size_t)p_Var12)" identifier (argument_list "(__s2,__s1,(size_t)p_Var12)" ( identifier , identifier , (cast_expression "(size_t)p_Var12" ( (type_descriptor "size_t" primitive_type) ) identifier) )))) , (binary_expression "iVar8 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        lVar11 = (long)p_Var15 - (long)p_Var5;\n        if (0x7fffffff < lVar11) goto LAB_0019f68d;\n        if (-0x80000001 < lVar11) {\n          iVar8 = (int)lVar11;\n          goto LAB_0019f689;\n        }\n      }" { (expression_statement "lVar11 = (long)p_Var15 - (long)p_Var5;" (assignment_expression "lVar11 = (long)p_Var15 - (long)p_Var5" identifier = (binary_expression "(long)p_Var15 - (long)p_Var5" (cast_expression "(long)p_Var15" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)p_Var5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (0x7fffffff < lVar11) goto LAB_0019f68d;" if (parenthesized_expression "(0x7fffffff < lVar11)" ( (binary_expression "0x7fffffff < lVar11" number_literal < identifier) )) (goto_statement "goto LAB_0019f68d;" goto statement_identifier ;)) (if_statement "if (-0x80000001 < lVar11) {\n          iVar8 = (int)lVar11;\n          goto LAB_0019f689;\n        }" if (parenthesized_expression "(-0x80000001 < lVar11)" ( (binary_expression "-0x80000001 < lVar11" number_literal < identifier) )) (compound_statement "{\n          iVar8 = (int)lVar11;\n          goto LAB_0019f689;\n        }" { (expression_statement "iVar8 = (int)lVar11;" (assignment_expression "iVar8 = (int)lVar11" identifier = (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_0019f689;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_0019f689:\n        if (-1 < iVar8) goto LAB_0019f68d;\n      }" else (compound_statement "{\nLAB_0019f689:\n        if (-1 < iVar8) goto LAB_0019f68d;\n      }" { (labeled_statement "LAB_0019f689:\n        if (-1 < iVar8) goto LAB_0019f68d;" statement_identifier : (if_statement "if (-1 < iVar8) goto LAB_0019f68d;" if (parenthesized_expression "(-1 < iVar8)" ( (binary_expression "-1 < iVar8" number_literal < identifier) )) (goto_statement "goto LAB_0019f68d;" goto statement_identifier ;))) })))) (if_statement "if (p_Var13 == (_Rb_tree_node_base *)0x0) {\n        p_Var10 = (_Rb_tree_node_base *)0x0;\nLAB_0019f68d:\n        if (&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1) {\n          operator_delete(__s1);\n        }\n        operator_delete(pVar17.first._M_node);\n        pVar16._8_8_ = 0;\n        pVar16.first._M_node = p_Var10;\n        return pVar16;\n      }" if (parenthesized_expression "(p_Var13 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var13 == (_Rb_tree_node_base *)0x0" identifier == (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        p_Var10 = (_Rb_tree_node_base *)0x0;\nLAB_0019f68d:\n        if (&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1) {\n          operator_delete(__s1);\n        }\n        operator_delete(pVar17.first._M_node);\n        pVar16._8_8_ = 0;\n        pVar16.first._M_node = p_Var10;\n        return pVar16;\n      }" { (expression_statement "p_Var10 = (_Rb_tree_node_base *)0x0;" (assignment_expression "p_Var10 = (_Rb_tree_node_base *)0x0" identifier = (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0019f68d:\n        if (&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1) {\n          operator_delete(__s1);\n        }" statement_identifier : (if_statement "if (&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1) {\n          operator_delete(__s1);\n        }" if (parenthesized_expression "(&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1)" ( (binary_expression "&pVar17.first._M_node[1]._M_left != (_Base_ptr *)__s1" (pointer_expression "&pVar17.first._M_node[1]._M_left" & (field_expression "pVar17.first._M_node[1]._M_left" (subscript_expression "pVar17.first._M_node[1]" (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier)) != (cast_expression "(_Base_ptr *)__s1" ( (type_descriptor "_Base_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n          operator_delete(__s1);\n        }" { (expression_statement "operator_delete(__s1);" (call_expression "operator_delete(__s1)" identifier (argument_list "(__s1)" ( identifier ))) ;) }))) (expression_statement "operator_delete(pVar17.first._M_node);" (call_expression "operator_delete(pVar17.first._M_node)" identifier (argument_list "(pVar17.first._M_node)" ( (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) ))) ;) (expression_statement "pVar16._8_8_ = 0;" (assignment_expression "pVar16._8_8_ = 0" (field_expression "pVar16._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "pVar16.first._M_node = p_Var10;" (assignment_expression "pVar16.first._M_node = p_Var10" (field_expression "pVar16.first._M_node" (field_expression "pVar16.first" identifier . field_identifier) . field_identifier) = identifier) ;) (return_statement "return pVar16;" return identifier ;) })) (goto_statement "goto LAB_0019f6c9;" goto statement_identifier ;) })) (expression_statement "p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header;" (assignment_expression "p_Var13 = &(this->_M_impl).super__Rb_tree_header._M_header" identifier = (pointer_expression "&(this->_M_impl).super__Rb_tree_header._M_header" & (field_expression "(this->_M_impl).super__Rb_tree_header._M_header" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (labeled_statement "LAB_0019f7b1:\n    bVar14 = true;" statement_identifier : (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" identifier = true) ;)) }) (else_clause "else {\n    __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\n    do {\n      p_Var13 = p_Var10;\n      p_Var15 = p_Var13[1]._M_parent;\n      __s2 = *(void **)(p_Var13 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\n      if (p_Var12 == (_Base_ptr)0x0) {\nLAB_0019f61e:\n        uVar9 = (long)p_Var5 - (long)p_Var15;\n        if ((long)uVar9 < 0x80000000) {\n          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        p_Var10 = p_Var13->_M_right;\n        bVar14 = false;\n      }\n      else {\n        uVar7 = memcmp(__s1,__s2,(size_t)p_Var12);\n        uVar9 = (ulong)uVar7;\n        if (uVar7 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar9) goto LAB_0019f638;\nLAB_0019f5d0:\n        p_Var10 = p_Var13->_M_left;\n        bVar14 = true;\n      }\n    } while (p_Var10 != (_Base_ptr)0x0);\n    p_Var10 = p_Var13;\n    if (!bVar14) goto LAB_0019f64e;\n    if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var13) goto LAB_0019f70b;\nLAB_0019f6c9:\n    bVar14 = true;\n    if ((_Rb_tree_header *)p_Var13 == p_Var2) goto LAB_0019f6d4;\n    p_Var15 = p_Var13[1]._M_parent;\n    p_Var12 = p_Var15;\n    if (p_Var5 <= p_Var15) {\n      p_Var12 = p_Var5;\n    }\n    if ((p_Var12 == (_Base_ptr)0x0) ||\n       (iVar8 = memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12), iVar8 == 0)) {\n      bVar14 = false;\n      lVar11 = (long)p_Var5 - (long)p_Var15;\n      if (0x7fffffff < lVar11) goto LAB_0019f6d4;\n      if (lVar11 < -0x80000000) goto LAB_0019f7b1;\n      iVar8 = (int)lVar11;\n    }\n    bVar14 = SUB41((uint)iVar8 >> 0x1f,0);\n  }" else (compound_statement "{\n    __s1 = *(undefined1 **)(pVar17.first._M_node + 1);\n    do {\n      p_Var13 = p_Var10;\n      p_Var15 = p_Var13[1]._M_parent;\n      __s2 = *(void **)(p_Var13 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\n      if (p_Var12 == (_Base_ptr)0x0) {\nLAB_0019f61e:\n        uVar9 = (long)p_Var5 - (long)p_Var15;\n        if ((long)uVar9 < 0x80000000) {\n          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        p_Var10 = p_Var13->_M_right;\n        bVar14 = false;\n      }\n      else {\n        uVar7 = memcmp(__s1,__s2,(size_t)p_Var12);\n        uVar9 = (ulong)uVar7;\n        if (uVar7 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar9) goto LAB_0019f638;\nLAB_0019f5d0:\n        p_Var10 = p_Var13->_M_left;\n        bVar14 = true;\n      }\n    } while (p_Var10 != (_Base_ptr)0x0);\n    p_Var10 = p_Var13;\n    if (!bVar14) goto LAB_0019f64e;\n    if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var13) goto LAB_0019f70b;\nLAB_0019f6c9:\n    bVar14 = true;\n    if ((_Rb_tree_header *)p_Var13 == p_Var2) goto LAB_0019f6d4;\n    p_Var15 = p_Var13[1]._M_parent;\n    p_Var12 = p_Var15;\n    if (p_Var5 <= p_Var15) {\n      p_Var12 = p_Var5;\n    }\n    if ((p_Var12 == (_Base_ptr)0x0) ||\n       (iVar8 = memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12), iVar8 == 0)) {\n      bVar14 = false;\n      lVar11 = (long)p_Var5 - (long)p_Var15;\n      if (0x7fffffff < lVar11) goto LAB_0019f6d4;\n      if (lVar11 < -0x80000000) goto LAB_0019f7b1;\n      iVar8 = (int)lVar11;\n    }\n    bVar14 = SUB41((uint)iVar8 >> 0x1f,0);\n  }" { (expression_statement "__s1 = *(undefined1 **)(pVar17.first._M_node + 1);" (assignment_expression "__s1 = *(undefined1 **)(pVar17.first._M_node + 1)" identifier = (pointer_expression "*(undefined1 **)(pVar17.first._M_node + 1)" * (cast_expression "(undefined1 **)(pVar17.first._M_node + 1)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pVar17.first._M_node + 1)" ( (binary_expression "pVar17.first._M_node + 1" (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) + number_literal) ))))) ;) (do_statement "do {\n      p_Var13 = p_Var10;\n      p_Var15 = p_Var13[1]._M_parent;\n      __s2 = *(void **)(p_Var13 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\n      if (p_Var12 == (_Base_ptr)0x0) {\nLAB_0019f61e:\n        uVar9 = (long)p_Var5 - (long)p_Var15;\n        if ((long)uVar9 < 0x80000000) {\n          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        p_Var10 = p_Var13->_M_right;\n        bVar14 = false;\n      }\n      else {\n        uVar7 = memcmp(__s1,__s2,(size_t)p_Var12);\n        uVar9 = (ulong)uVar7;\n        if (uVar7 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar9) goto LAB_0019f638;\nLAB_0019f5d0:\n        p_Var10 = p_Var13->_M_left;\n        bVar14 = true;\n      }\n    } while (p_Var10 != (_Base_ptr)0x0);" do (compound_statement "{\n      p_Var13 = p_Var10;\n      p_Var15 = p_Var13[1]._M_parent;\n      __s2 = *(void **)(p_Var13 + 1);\n      p_Var12 = p_Var15;\n      if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }\n      if (p_Var12 == (_Base_ptr)0x0) {\nLAB_0019f61e:\n        uVar9 = (long)p_Var5 - (long)p_Var15;\n        if ((long)uVar9 < 0x80000000) {\n          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        p_Var10 = p_Var13->_M_right;\n        bVar14 = false;\n      }\n      else {\n        uVar7 = memcmp(__s1,__s2,(size_t)p_Var12);\n        uVar9 = (ulong)uVar7;\n        if (uVar7 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar9) goto LAB_0019f638;\nLAB_0019f5d0:\n        p_Var10 = p_Var13->_M_left;\n        bVar14 = true;\n      }\n    }" { (expression_statement "p_Var13 = p_Var10;" (assignment_expression "p_Var13 = p_Var10" identifier = identifier) ;) (expression_statement "p_Var15 = p_Var13[1]._M_parent;" (assignment_expression "p_Var15 = p_Var13[1]._M_parent" identifier = (field_expression "p_Var13[1]._M_parent" (subscript_expression "p_Var13[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "__s2 = *(void **)(p_Var13 + 1);" (assignment_expression "__s2 = *(void **)(p_Var13 + 1)" identifier = (pointer_expression "*(void **)(p_Var13 + 1)" * (cast_expression "(void **)(p_Var13 + 1)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var13 + 1)" ( (binary_expression "p_Var13 + 1" identifier + number_literal) ))))) ;) (expression_statement "p_Var12 = p_Var15;" (assignment_expression "p_Var12 = p_Var15" identifier = identifier) ;) (if_statement "if (p_Var5 <= p_Var15) {\n        p_Var12 = p_Var5;\n      }" if (parenthesized_expression "(p_Var5 <= p_Var15)" ( (binary_expression "p_Var5 <= p_Var15" identifier <= identifier) )) (compound_statement "{\n        p_Var12 = p_Var5;\n      }" { (expression_statement "p_Var12 = p_Var5;" (assignment_expression "p_Var12 = p_Var5" identifier = identifier) ;) })) (if_statement "if (p_Var12 == (_Base_ptr)0x0) {\nLAB_0019f61e:\n        uVar9 = (long)p_Var5 - (long)p_Var15;\n        if ((long)uVar9 < 0x80000000) {\n          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        p_Var10 = p_Var13->_M_right;\n        bVar14 = false;\n      }\n      else {\n        uVar7 = memcmp(__s1,__s2,(size_t)p_Var12);\n        uVar9 = (ulong)uVar7;\n        if (uVar7 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar9) goto LAB_0019f638;\nLAB_0019f5d0:\n        p_Var10 = p_Var13->_M_left;\n        bVar14 = true;\n      }" if (parenthesized_expression "(p_Var12 == (_Base_ptr)0x0)" ( (binary_expression "p_Var12 == (_Base_ptr)0x0" identifier == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\nLAB_0019f61e:\n        uVar9 = (long)p_Var5 - (long)p_Var15;\n        if ((long)uVar9 < 0x80000000) {\n          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        p_Var10 = p_Var13->_M_right;\n        bVar14 = false;\n      }" { (labeled_statement "LAB_0019f61e:\n        uVar9 = (long)p_Var5 - (long)p_Var15;" statement_identifier : (expression_statement "uVar9 = (long)p_Var5 - (long)p_Var15;" (assignment_expression "uVar9 = (long)p_Var5 - (long)p_Var15" identifier = (binary_expression "(long)p_Var5 - (long)p_Var15" (cast_expression "(long)p_Var5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)p_Var15" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;)) (if_statement "if ((long)uVar9 < 0x80000000) {\n          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }" if (parenthesized_expression "((long)uVar9 < 0x80000000)" ( (binary_expression "(long)uVar9 < 0x80000000" (cast_expression "(long)uVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }" { (if_statement "if (-0x80000001 < (long)uVar9) goto LAB_0019f634;" if (parenthesized_expression "(-0x80000001 < (long)uVar9)" ( (binary_expression "-0x80000001 < (long)uVar9" number_literal < (cast_expression "(long)uVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (goto_statement "goto LAB_0019f634;" goto statement_identifier ;)) (goto_statement "goto LAB_0019f5d0;" goto statement_identifier ;) })) (labeled_statement "LAB_0019f638:\n        p_Var10 = p_Var13->_M_right;" statement_identifier : (expression_statement "p_Var10 = p_Var13->_M_right;" (assignment_expression "p_Var10 = p_Var13->_M_right" identifier = (field_expression "p_Var13->_M_right" identifier -> field_identifier)) ;)) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) }) (else_clause "else {\n        uVar7 = memcmp(__s1,__s2,(size_t)p_Var12);\n        uVar9 = (ulong)uVar7;\n        if (uVar7 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar9) goto LAB_0019f638;\nLAB_0019f5d0:\n        p_Var10 = p_Var13->_M_left;\n        bVar14 = true;\n      }" else (compound_statement "{\n        uVar7 = memcmp(__s1,__s2,(size_t)p_Var12);\n        uVar9 = (ulong)uVar7;\n        if (uVar7 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar9) goto LAB_0019f638;\nLAB_0019f5d0:\n        p_Var10 = p_Var13->_M_left;\n        bVar14 = true;\n      }" { (expression_statement "uVar7 = memcmp(__s1,__s2,(size_t)p_Var12);" (assignment_expression "uVar7 = memcmp(__s1,__s2,(size_t)p_Var12)" identifier = (call_expression "memcmp(__s1,__s2,(size_t)p_Var12)" identifier (argument_list "(__s1,__s2,(size_t)p_Var12)" ( identifier , identifier , (cast_expression "(size_t)p_Var12" ( (type_descriptor "size_t" primitive_type) ) identifier) )))) ;) (expression_statement "uVar9 = (ulong)uVar7;" (assignment_expression "uVar9 = (ulong)uVar7" identifier = (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar7 == 0) goto LAB_0019f61e;" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0019f61e;" goto statement_identifier ;)) (labeled_statement "LAB_0019f634:\n        if (-1 < (int)uVar9) goto LAB_0019f638;" statement_identifier : (if_statement "if (-1 < (int)uVar9) goto LAB_0019f638;" if (parenthesized_expression "(-1 < (int)uVar9)" ( (binary_expression "-1 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0019f638;" goto statement_identifier ;))) (labeled_statement "LAB_0019f5d0:\n        p_Var10 = p_Var13->_M_left;" statement_identifier : (expression_statement "p_Var10 = p_Var13->_M_left;" (assignment_expression "p_Var10 = p_Var13->_M_left" identifier = (field_expression "p_Var13->_M_left" identifier -> field_identifier)) ;)) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" identifier = true) ;) }))) }) while (parenthesized_expression "(p_Var10 != (_Base_ptr)0x0)" ( (binary_expression "p_Var10 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "p_Var10 = p_Var13;" (assignment_expression "p_Var10 = p_Var13" identifier = identifier) ;) (if_statement "if (!bVar14) goto LAB_0019f64e;" if (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) (goto_statement "goto LAB_0019f64e;" goto statement_identifier ;)) (if_statement "if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var13) goto LAB_0019f70b;" if (parenthesized_expression "((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var13)" ( (binary_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var13" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_left" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) != identifier) )) (goto_statement "goto LAB_0019f70b;" goto statement_identifier ;)) (labeled_statement "LAB_0019f6c9:\n    bVar14 = true;" statement_identifier : (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" identifier = true) ;)) (if_statement "if ((_Rb_tree_header *)p_Var13 == p_Var2) goto LAB_0019f6d4;" if (parenthesized_expression "((_Rb_tree_header *)p_Var13 == p_Var2)" ( (binary_expression "(_Rb_tree_header *)p_Var13 == p_Var2" (cast_expression "(_Rb_tree_header *)p_Var13" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == identifier) )) (goto_statement "goto LAB_0019f6d4;" goto statement_identifier ;)) (expression_statement "p_Var15 = p_Var13[1]._M_parent;" (assignment_expression "p_Var15 = p_Var13[1]._M_parent" identifier = (field_expression "p_Var13[1]._M_parent" (subscript_expression "p_Var13[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "p_Var12 = p_Var15;" (assignment_expression "p_Var12 = p_Var15" identifier = identifier) ;) (if_statement "if (p_Var5 <= p_Var15) {\n      p_Var12 = p_Var5;\n    }" if (parenthesized_expression "(p_Var5 <= p_Var15)" ( (binary_expression "p_Var5 <= p_Var15" identifier <= identifier) )) (compound_statement "{\n      p_Var12 = p_Var5;\n    }" { (expression_statement "p_Var12 = p_Var5;" (assignment_expression "p_Var12 = p_Var5" identifier = identifier) ;) })) (if_statement "if ((p_Var12 == (_Base_ptr)0x0) ||\n       (iVar8 = memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12), iVar8 == 0)) {\n      bVar14 = false;\n      lVar11 = (long)p_Var5 - (long)p_Var15;\n      if (0x7fffffff < lVar11) goto LAB_0019f6d4;\n      if (lVar11 < -0x80000000) goto LAB_0019f7b1;\n      iVar8 = (int)lVar11;\n    }" if (parenthesized_expression "((p_Var12 == (_Base_ptr)0x0) ||\n       (iVar8 = memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12), iVar8 == 0))" ( (binary_expression "(p_Var12 == (_Base_ptr)0x0) ||\n       (iVar8 = memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12), iVar8 == 0)" (parenthesized_expression "(p_Var12 == (_Base_ptr)0x0)" ( (binary_expression "p_Var12 == (_Base_ptr)0x0" identifier == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) || (parenthesized_expression "(iVar8 = memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12), iVar8 == 0)" ( (comma_expression "iVar8 = memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12), iVar8 == 0" (assignment_expression "iVar8 = memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12)" identifier = (call_expression "memcmp(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12)" identifier (argument_list "(__s1,*(void **)(p_Var13 + 1),(size_t)p_Var12)" ( identifier , (pointer_expression "*(void **)(p_Var13 + 1)" * (cast_expression "(void **)(p_Var13 + 1)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var13 + 1)" ( (binary_expression "p_Var13 + 1" identifier + number_literal) )))) , (cast_expression "(size_t)p_Var12" ( (type_descriptor "size_t" primitive_type) ) identifier) )))) , (binary_expression "iVar8 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      bVar14 = false;\n      lVar11 = (long)p_Var5 - (long)p_Var15;\n      if (0x7fffffff < lVar11) goto LAB_0019f6d4;\n      if (lVar11 < -0x80000000) goto LAB_0019f7b1;\n      iVar8 = (int)lVar11;\n    }" { (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "lVar11 = (long)p_Var5 - (long)p_Var15;" (assignment_expression "lVar11 = (long)p_Var5 - (long)p_Var15" identifier = (binary_expression "(long)p_Var5 - (long)p_Var15" (cast_expression "(long)p_Var5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)p_Var15" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (0x7fffffff < lVar11) goto LAB_0019f6d4;" if (parenthesized_expression "(0x7fffffff < lVar11)" ( (binary_expression "0x7fffffff < lVar11" number_literal < identifier) )) (goto_statement "goto LAB_0019f6d4;" goto statement_identifier ;)) (if_statement "if (lVar11 < -0x80000000) goto LAB_0019f7b1;" if (parenthesized_expression "(lVar11 < -0x80000000)" ( (binary_expression "lVar11 < -0x80000000" identifier < number_literal) )) (goto_statement "goto LAB_0019f7b1;" goto statement_identifier ;)) (expression_statement "iVar8 = (int)lVar11;" (assignment_expression "iVar8 = (int)lVar11" identifier = (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "bVar14 = SUB41((uint)iVar8 >> 0x1f,0);" (assignment_expression "bVar14 = SUB41((uint)iVar8 >> 0x1f,0)" identifier = (call_expression "SUB41((uint)iVar8 >> 0x1f,0)" identifier (argument_list "((uint)iVar8 >> 0x1f,0)" ( (binary_expression "(uint)iVar8 >> 0x1f" (cast_expression "(uint)iVar8" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) , number_literal )))) ;) }))) (labeled_statement "LAB_0019f6d4:\n  _Rb_tree_insert_and_rebalance(bVar14,pVar17.first._M_node,p_Var13,&p_Var2->_M_header);" statement_identifier : (expression_statement "_Rb_tree_insert_and_rebalance(bVar14,pVar17.first._M_node,p_Var13,&p_Var2->_M_header);" (call_expression "_Rb_tree_insert_and_rebalance(bVar14,pVar17.first._M_node,p_Var13,&p_Var2->_M_header)" identifier (argument_list "(bVar14,pVar17.first._M_node,p_Var13,&p_Var2->_M_header)" ( identifier , (field_expression "pVar17.first._M_node" (field_expression "pVar17.first" identifier . field_identifier) . field_identifier) , identifier , (pointer_expression "&p_Var2->_M_header" & (field_expression "p_Var2->_M_header" identifier -> field_identifier)) ))) ;)) (expression_statement "psVar3 = &(this->_M_impl).super__Rb_tree_header._M_node_count;" (assignment_expression "psVar3 = &(this->_M_impl).super__Rb_tree_header._M_node_count" identifier = (pointer_expression "&(this->_M_impl).super__Rb_tree_header._M_node_count" & (field_expression "(this->_M_impl).super__Rb_tree_header._M_node_count" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*psVar3 = *psVar3 + 1;" (assignment_expression "*psVar3 = *psVar3 + 1" (pointer_expression "*psVar3" * identifier) = (binary_expression "*psVar3 + 1" (pointer_expression "*psVar3" * identifier) + number_literal)) ;) (expression_statement "pVar17._8_8_ = 1;" (assignment_expression "pVar17._8_8_ = 1" (field_expression "pVar17._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return pVar17;" return identifier ;) }))))
(translation_unit "undefined1  [16] FUN_0019f540(long param_1,long *param_2)\n\n{\n  ulong uVar1;\n  long lVar2;\n  bool bVar3;\n  uint uVar4;\n  int iVar5;\n  ulong uVar6;\n  long lVar7;\n  ulong uVar8;\n  ulong uVar9;\n  size_t __n;\n  void *__s2;\n  void *__s1;\n  undefined1 auVar10 [16];\n  undefined1 auVar11 [16];\n  \n  auVar11._0_8_ = FUN_00275550(0x50);\n  lVar7 = *param_2;\n  *(void **)(auVar11._0_8_ + 0x20) = (void *)(auVar11._0_8_ + 0x30);\n  if ((long *)lVar7 == param_2 + 2) {\n    lVar7 = param_2[3];\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n    *(long *)(auVar11._0_8_ + 0x38) = lVar7;\n  }\n  else {\n    *(long *)(auVar11._0_8_ + 0x20) = lVar7;\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n  }\n  uVar1 = param_2[1];\n  lVar7 = param_2[4];\n  lVar2 = param_2[5];\n  *param_2 = (long)(param_2 + 2);\n  param_2[1] = 0;\n  *(undefined1 *)(param_2 + 2) = 0;\n  uVar6 = *(ulong *)(param_1 + 0x10);\n  *(ulong *)(auVar11._0_8_ + 0x28) = uVar1;\n  *(long *)(auVar11._0_8_ + 0x40) = lVar7;\n  *(long *)(auVar11._0_8_ + 0x48) = lVar2;\n  if (uVar6 == 0) {\n    uVar9 = param_1 + 8;\n    if (uVar9 != *(ulong *)(param_1 + 0x18)) {\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }\n    uVar9 = param_1 + 8;\nLAB_0019f7b1:\n    uVar4 = 1;\n  }\n  else {\n    __s1 = *(void **)(auVar11._0_8_ + 0x20);\n    do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar9;\n    if (!bVar3) goto LAB_0019f64e;\n    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;\nLAB_0019f6c9:\n    uVar4 = 1;\n    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;\n    uVar6 = *(ulong *)(uVar9 + 0x28);\n    uVar8 = uVar6;\n    if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }\n    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }\n    uVar4 = uVar4 >> 0x1f;\n  }\nLAB_0019f6d4:\n  FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar11._8_8_ = 1;\n  return auVar11;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (macro_type_specifier "FUN_0019f540(long param_1,long *param_2)" identifier ( (ERROR "long param_1,long *" (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) , (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *))) (type_descriptor "param_2" type_identifier) )) ; (compound_statement "{\n  ulong uVar1;\n  long lVar2;\n  bool bVar3;\n  uint uVar4;\n  int iVar5;\n  ulong uVar6;\n  long lVar7;\n  ulong uVar8;\n  ulong uVar9;\n  size_t __n;\n  void *__s2;\n  void *__s1;\n  undefined1 auVar10 [16];\n  undefined1 auVar11 [16];\n  \n  auVar11._0_8_ = FUN_00275550(0x50);\n  lVar7 = *param_2;\n  *(void **)(auVar11._0_8_ + 0x20) = (void *)(auVar11._0_8_ + 0x30);\n  if ((long *)lVar7 == param_2 + 2) {\n    lVar7 = param_2[3];\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n    *(long *)(auVar11._0_8_ + 0x38) = lVar7;\n  }\n  else {\n    *(long *)(auVar11._0_8_ + 0x20) = lVar7;\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n  }\n  uVar1 = param_2[1];\n  lVar7 = param_2[4];\n  lVar2 = param_2[5];\n  *param_2 = (long)(param_2 + 2);\n  param_2[1] = 0;\n  *(undefined1 *)(param_2 + 2) = 0;\n  uVar6 = *(ulong *)(param_1 + 0x10);\n  *(ulong *)(auVar11._0_8_ + 0x28) = uVar1;\n  *(long *)(auVar11._0_8_ + 0x40) = lVar7;\n  *(long *)(auVar11._0_8_ + 0x48) = lVar2;\n  if (uVar6 == 0) {\n    uVar9 = param_1 + 8;\n    if (uVar9 != *(ulong *)(param_1 + 0x18)) {\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }\n    uVar9 = param_1 + 8;\nLAB_0019f7b1:\n    uVar4 = 1;\n  }\n  else {\n    __s1 = *(void **)(auVar11._0_8_ + 0x20);\n    do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar9;\n    if (!bVar3) goto LAB_0019f64e;\n    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;\nLAB_0019f6c9:\n    uVar4 = 1;\n    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;\n    uVar6 = *(ulong *)(uVar9 + 0x28);\n    uVar8 = uVar6;\n    if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }\n    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }\n    uVar4 = uVar4 >> 0x1f;\n  }\nLAB_0019f6d4:\n  FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar11._8_8_ = 1;\n  return auVar11;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "void *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "void *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "undefined1 auVar10 [16];" type_identifier (array_declarator "auVar10 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar11 [16];" type_identifier (array_declarator "auVar11 [16]" identifier [ number_literal ]) ;) (expression_statement "auVar11._0_8_ = FUN_00275550(0x50);" (assignment_expression "auVar11._0_8_ = FUN_00275550(0x50)" (field_expression "auVar11._0_8_" identifier . field_identifier) = (call_expression "FUN_00275550(0x50)" identifier (argument_list "(0x50)" ( number_literal )))) ;) (expression_statement "lVar7 = *param_2;" (assignment_expression "lVar7 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(void **)(auVar11._0_8_ + 0x20) = (void *)(auVar11._0_8_ + 0x30);" (assignment_expression "*(void **)(auVar11._0_8_ + 0x20) = (void *)(auVar11._0_8_ + 0x30)" (pointer_expression "*(void **)(auVar11._0_8_ + 0x20)" * (cast_expression "(void **)(auVar11._0_8_ + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(auVar11._0_8_ + 0x20)" ( (binary_expression "auVar11._0_8_ + 0x20" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = (cast_expression "(void *)(auVar11._0_8_ + 0x30)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x30)" ( (binary_expression "auVar11._0_8_ + 0x30" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) ;) (if_statement "if ((long *)lVar7 == param_2 + 2) {\n    lVar7 = param_2[3];\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n    *(long *)(auVar11._0_8_ + 0x38) = lVar7;\n  }\n  else {\n    *(long *)(auVar11._0_8_ + 0x20) = lVar7;\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n  }" if (parenthesized_expression "((long *)lVar7 == param_2 + 2)" ( (binary_expression "(long *)lVar7 == param_2 + 2" (cast_expression "(long *)lVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier) == (binary_expression "param_2 + 2" identifier + number_literal)) )) (compound_statement "{\n    lVar7 = param_2[3];\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n    *(long *)(auVar11._0_8_ + 0x38) = lVar7;\n  }" { (expression_statement "lVar7 = param_2[3];" (assignment_expression "lVar7 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "*(long *)(auVar11._0_8_ + 0x30) = param_2[2];" (assignment_expression "*(long *)(auVar11._0_8_ + 0x30) = param_2[2]" (pointer_expression "*(long *)(auVar11._0_8_ + 0x30)" * (cast_expression "(long *)(auVar11._0_8_ + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x30)" ( (binary_expression "auVar11._0_8_ + 0x30" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "*(long *)(auVar11._0_8_ + 0x38) = lVar7;" (assignment_expression "*(long *)(auVar11._0_8_ + 0x38) = lVar7" (pointer_expression "*(long *)(auVar11._0_8_ + 0x38)" * (cast_expression "(long *)(auVar11._0_8_ + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x38)" ( (binary_expression "auVar11._0_8_ + 0x38" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    *(long *)(auVar11._0_8_ + 0x20) = lVar7;\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n  }" else (compound_statement "{\n    *(long *)(auVar11._0_8_ + 0x20) = lVar7;\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n  }" { (expression_statement "*(long *)(auVar11._0_8_ + 0x20) = lVar7;" (assignment_expression "*(long *)(auVar11._0_8_ + 0x20) = lVar7" (pointer_expression "*(long *)(auVar11._0_8_ + 0x20)" * (cast_expression "(long *)(auVar11._0_8_ + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x20)" ( (binary_expression "auVar11._0_8_ + 0x20" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(auVar11._0_8_ + 0x30) = param_2[2];" (assignment_expression "*(long *)(auVar11._0_8_ + 0x30) = param_2[2]" (pointer_expression "*(long *)(auVar11._0_8_ + 0x30)" * (cast_expression "(long *)(auVar11._0_8_ + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x30)" ( (binary_expression "auVar11._0_8_ + 0x30" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar1 = param_2[1];" (assignment_expression "uVar1 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "lVar7 = param_2[4];" (assignment_expression "lVar7 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "lVar2 = param_2[5];" (assignment_expression "lVar2 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) (expression_statement "*param_2 = (long)(param_2 + 2);" (assignment_expression "*param_2 = (long)(param_2 + 2)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(param_2 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) ;) (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_2 + 2) = 0;" (assignment_expression "*(undefined1 *)(param_2 + 2) = 0" (pointer_expression "*(undefined1 *)(param_2 + 2)" * (cast_expression "(undefined1 *)(param_2 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar6 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(param_1 + 0x10)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x10)" * (cast_expression "(ulong *)(param_1 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(ulong *)(auVar11._0_8_ + 0x28) = uVar1;" (assignment_expression "*(ulong *)(auVar11._0_8_ + 0x28) = uVar1" (pointer_expression "*(ulong *)(auVar11._0_8_ + 0x28)" * (cast_expression "(ulong *)(auVar11._0_8_ + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x28)" ( (binary_expression "auVar11._0_8_ + 0x28" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(auVar11._0_8_ + 0x40) = lVar7;" (assignment_expression "*(long *)(auVar11._0_8_ + 0x40) = lVar7" (pointer_expression "*(long *)(auVar11._0_8_ + 0x40)" * (cast_expression "(long *)(auVar11._0_8_ + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x40)" ( (binary_expression "auVar11._0_8_ + 0x40" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(auVar11._0_8_ + 0x48) = lVar2;" (assignment_expression "*(long *)(auVar11._0_8_ + 0x48) = lVar2" (pointer_expression "*(long *)(auVar11._0_8_ + 0x48)" * (cast_expression "(long *)(auVar11._0_8_ + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x48)" ( (binary_expression "auVar11._0_8_ + 0x48" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (if_statement "if (uVar6 == 0) {\n    uVar9 = param_1 + 8;\n    if (uVar9 != *(ulong *)(param_1 + 0x18)) {\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }\n    uVar9 = param_1 + 8;\nLAB_0019f7b1:\n    uVar4 = 1;\n  }\n  else {\n    __s1 = *(void **)(auVar11._0_8_ + 0x20);\n    do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar9;\n    if (!bVar3) goto LAB_0019f64e;\n    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;\nLAB_0019f6c9:\n    uVar4 = 1;\n    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;\n    uVar6 = *(ulong *)(uVar9 + 0x28);\n    uVar8 = uVar6;\n    if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }\n    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }\n    uVar4 = uVar4 >> 0x1f;\n  }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar9 = param_1 + 8;\n    if (uVar9 != *(ulong *)(param_1 + 0x18)) {\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }\n    uVar9 = param_1 + 8;\nLAB_0019f7b1:\n    uVar4 = 1;\n  }" { (expression_statement "uVar9 = param_1 + 8;" (assignment_expression "uVar9 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (if_statement "if (uVar9 != *(ulong *)(param_1 + 0x18)) {\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }" if (parenthesized_expression "(uVar9 != *(ulong *)(param_1 + 0x18))" ( (binary_expression "uVar9 != *(ulong *)(param_1 + 0x18)" identifier != (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }" { (expression_statement "__s1 = *(void **)(auVar11._0_8_ + 0x20);" (assignment_expression "__s1 = *(void **)(auVar11._0_8_ + 0x20)" identifier = (pointer_expression "*(void **)(auVar11._0_8_ + 0x20)" * (cast_expression "(void **)(auVar11._0_8_ + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(auVar11._0_8_ + 0x20)" ( (binary_expression "auVar11._0_8_ + 0x20" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) ))))) ;) (labeled_statement "LAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);" statement_identifier : (expression_statement "uVar6 = thunk_FUN_00278080(uVar9);" (assignment_expression "uVar6 = thunk_FUN_00278080(uVar9)" identifier = (call_expression "thunk_FUN_00278080(uVar9)" identifier (argument_list "(uVar9)" ( identifier )))) ;)) (expression_statement "uVar8 = *(ulong *)(uVar6 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(uVar6 + 0x28)" identifier = (pointer_expression "*(ulong *)(uVar6 + 0x28)" * (cast_expression "(ulong *)(uVar6 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x28)" ( (binary_expression "uVar6 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "__s2 = *(void **)(uVar6 + 0x20);" (assignment_expression "__s2 = *(void **)(uVar6 + 0x20)" identifier = (pointer_expression "*(void **)(uVar6 + 0x20)" * (cast_expression "(void **)(uVar6 + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar6 + 0x20)" ( (binary_expression "uVar6 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "__n = uVar8;" (assignment_expression "__n = uVar8" identifier = identifier) ;) (if_statement "if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }" if (parenthesized_expression "(uVar1 <= uVar8)" ( (binary_expression "uVar1 <= uVar8" identifier <= identifier) )) (compound_statement "{\n        __n = uVar1;\n      }" { (expression_statement "__n = uVar1;" (assignment_expression "__n = uVar1" identifier = identifier) ;) })) (labeled_statement "LAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }" statement_identifier : (if_statement "if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }" if (parenthesized_expression "((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0))" ( (binary_expression "(__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)" (parenthesized_expression "(__n == 0)" ( (binary_expression "__n == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)" ( (comma_expression "iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0" (assignment_expression "iVar5 = memcmp(__s2,__s1,__n)" identifier = (call_expression "memcmp(__s2,__s1,__n)" identifier (argument_list "(__s2,__s1,__n)" ( identifier , identifier , identifier )))) , (binary_expression "iVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }" { (expression_statement "lVar7 = uVar8 - uVar1;" (assignment_expression "lVar7 = uVar8 - uVar1" identifier = (binary_expression "uVar8 - uVar1" identifier - identifier)) ;) (if_statement "if (0x7fffffff < lVar7) goto LAB_0019f68d;" if (parenthesized_expression "(0x7fffffff < lVar7)" ( (binary_expression "0x7fffffff < lVar7" number_literal < identifier) )) (goto_statement "goto LAB_0019f68d;" goto statement_identifier ;)) (if_statement "if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }" if (parenthesized_expression "(-0x80000001 < lVar7)" ( (binary_expression "-0x80000001 < lVar7" number_literal < identifier) )) (compound_statement "{\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }" { (expression_statement "iVar5 = (int)lVar7;" (assignment_expression "iVar5 = (int)lVar7" identifier = (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_0019f689;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }" else (compound_statement "{\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }" { (labeled_statement "LAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;" statement_identifier : (if_statement "if (-1 < iVar5) goto LAB_0019f68d;" if (parenthesized_expression "(-1 < iVar5)" ( (binary_expression "-1 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_0019f68d;" goto statement_identifier ;))) })))) (if_statement "if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }" statement_identifier : (if_statement "if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }" if (parenthesized_expression "((void *)(auVar11._0_8_ + 0x30) != __s1)" ( (binary_expression "(void *)(auVar11._0_8_ + 0x30) != __s1" (cast_expression "(void *)(auVar11._0_8_ + 0x30)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar11._0_8_ + 0x30)" ( (binary_expression "auVar11._0_8_ + 0x30" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) ))) != identifier) )) (compound_statement "{\n          FUN_00276d20(__s1);\n        }" { (expression_statement "FUN_00276d20(__s1);" (call_expression "FUN_00276d20(__s1)" identifier (argument_list "(__s1)" ( identifier ))) ;) }))) (expression_statement "FUN_00276d20(auVar11._0_8_);" (call_expression "FUN_00276d20(auVar11._0_8_)" identifier (argument_list "(auVar11._0_8_)" ( (field_expression "auVar11._0_8_" identifier . field_identifier) ))) ;) (expression_statement "auVar10._8_8_ = 0;" (assignment_expression "auVar10._8_8_ = 0" (field_expression "auVar10._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar10._0_8_ = uVar6;" (assignment_expression "auVar10._0_8_ = uVar6" (field_expression "auVar10._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar10;" return identifier ;) })) (goto_statement "goto LAB_0019f6c9;" goto statement_identifier ;) })) (expression_statement "uVar9 = param_1 + 8;" (assignment_expression "uVar9 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (labeled_statement "LAB_0019f7b1:\n    uVar4 = 1;" statement_identifier : (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;)) }) (else_clause "else {\n    __s1 = *(void **)(auVar11._0_8_ + 0x20);\n    do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar9;\n    if (!bVar3) goto LAB_0019f64e;\n    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;\nLAB_0019f6c9:\n    uVar4 = 1;\n    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;\n    uVar6 = *(ulong *)(uVar9 + 0x28);\n    uVar8 = uVar6;\n    if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }\n    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }\n    uVar4 = uVar4 >> 0x1f;\n  }" else (compound_statement "{\n    __s1 = *(void **)(auVar11._0_8_ + 0x20);\n    do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar9;\n    if (!bVar3) goto LAB_0019f64e;\n    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;\nLAB_0019f6c9:\n    uVar4 = 1;\n    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;\n    uVar6 = *(ulong *)(uVar9 + 0x28);\n    uVar8 = uVar6;\n    if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }\n    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }\n    uVar4 = uVar4 >> 0x1f;\n  }" { (expression_statement "__s1 = *(void **)(auVar11._0_8_ + 0x20);" (assignment_expression "__s1 = *(void **)(auVar11._0_8_ + 0x20)" identifier = (pointer_expression "*(void **)(auVar11._0_8_ + 0x20)" * (cast_expression "(void **)(auVar11._0_8_ + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(auVar11._0_8_ + 0x20)" ( (binary_expression "auVar11._0_8_ + 0x20" (field_expression "auVar11._0_8_" identifier . field_identifier) + number_literal) ))))) ;) (do_statement "do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);" do (compound_statement "{\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    }" { (expression_statement "uVar9 = uVar6;" (assignment_expression "uVar9 = uVar6" identifier = identifier) ;) (expression_statement "uVar8 = *(ulong *)(uVar9 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(uVar9 + 0x28)" identifier = (pointer_expression "*(ulong *)(uVar9 + 0x28)" * (cast_expression "(ulong *)(uVar9 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + 0x28)" ( (binary_expression "uVar9 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "__s2 = *(void **)(uVar9 + 0x20);" (assignment_expression "__s2 = *(void **)(uVar9 + 0x20)" identifier = (pointer_expression "*(void **)(uVar9 + 0x20)" * (cast_expression "(void **)(uVar9 + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar9 + 0x20)" ( (binary_expression "uVar9 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "__n = uVar8;" (assignment_expression "__n = uVar8" identifier = identifier) ;) (if_statement "if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }" if (parenthesized_expression "(uVar1 <= uVar8)" ( (binary_expression "uVar1 <= uVar8" identifier <= identifier) )) (compound_statement "{\n        __n = uVar1;\n      }" { (expression_statement "__n = uVar1;" (assignment_expression "__n = uVar1" identifier = identifier) ;) })) (if_statement "if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }" if (parenthesized_expression "(__n == 0)" ( (binary_expression "__n == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }" { (labeled_statement "LAB_0019f61e:\n        uVar6 = uVar1 - uVar8;" statement_identifier : (expression_statement "uVar6 = uVar1 - uVar8;" (assignment_expression "uVar6 = uVar1 - uVar8" identifier = (binary_expression "uVar1 - uVar8" identifier - identifier)) ;)) (if_statement "if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }" if (parenthesized_expression "((long)uVar6 < 0x80000000)" ( (binary_expression "(long)uVar6 < 0x80000000" (cast_expression "(long)uVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }" { (if_statement "if (-0x80000001 < (long)uVar6) goto LAB_0019f634;" if (parenthesized_expression "(-0x80000001 < (long)uVar6)" ( (binary_expression "-0x80000001 < (long)uVar6" number_literal < (cast_expression "(long)uVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (goto_statement "goto LAB_0019f634;" goto statement_identifier ;)) (goto_statement "goto LAB_0019f5d0;" goto statement_identifier ;) })) (labeled_statement "LAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);" statement_identifier : (expression_statement "uVar6 = *(ulong *)(uVar9 + 0x18);" (assignment_expression "uVar6 = *(ulong *)(uVar9 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar9 + 0x18)" * (cast_expression "(ulong *)(uVar9 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + 0x18)" ( (binary_expression "uVar9 + 0x18" identifier + number_literal) ))))) ;)) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) }) (else_clause "else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }" else (compound_statement "{\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }" { (expression_statement "uVar4 = memcmp(__s1,__s2,__n);" (assignment_expression "uVar4 = memcmp(__s1,__s2,__n)" identifier = (call_expression "memcmp(__s1,__s2,__n)" identifier (argument_list "(__s1,__s2,__n)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar6 = (ulong)uVar4;" (assignment_expression "uVar6 = (ulong)uVar4" identifier = (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar4 == 0) goto LAB_0019f61e;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0019f61e;" goto statement_identifier ;)) (labeled_statement "LAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;" statement_identifier : (if_statement "if (-1 < (int)uVar6) goto LAB_0019f638;" if (parenthesized_expression "(-1 < (int)uVar6)" ( (binary_expression "-1 < (int)uVar6" number_literal < (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0019f638;" goto statement_identifier ;))) (labeled_statement "LAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);" statement_identifier : (expression_statement "uVar6 = *(ulong *)(uVar9 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(uVar9 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar9 + 0x10)" * (cast_expression "(ulong *)(uVar9 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + 0x10)" ( (binary_expression "uVar9 + 0x10" identifier + number_literal) ))))) ;)) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) }))) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (expression_statement "uVar6 = uVar9;" (assignment_expression "uVar6 = uVar9" identifier = identifier) ;) (if_statement "if (!bVar3) goto LAB_0019f64e;" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (goto_statement "goto LAB_0019f64e;" goto statement_identifier ;)) (if_statement "if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;" if (parenthesized_expression "(*(ulong *)(param_1 + 0x18) != uVar9)" ( (binary_expression "*(ulong *)(param_1 + 0x18) != uVar9" (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != identifier) )) (goto_statement "goto LAB_0019f70b;" goto statement_identifier ;)) (labeled_statement "LAB_0019f6c9:\n    uVar4 = 1;" statement_identifier : (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;)) (if_statement "if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;" if (parenthesized_expression "(uVar9 == param_1 + 8U)" ( (binary_expression "uVar9 == param_1 + 8U" identifier == (binary_expression "param_1 + 8U" identifier + number_literal)) )) (goto_statement "goto LAB_0019f6d4;" goto statement_identifier ;)) (expression_statement "uVar6 = *(ulong *)(uVar9 + 0x28);" (assignment_expression "uVar6 = *(ulong *)(uVar9 + 0x28)" identifier = (pointer_expression "*(ulong *)(uVar9 + 0x28)" * (cast_expression "(ulong *)(uVar9 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + 0x28)" ( (binary_expression "uVar9 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" identifier = identifier) ;) (if_statement "if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }" if (parenthesized_expression "(uVar1 <= uVar6)" ( (binary_expression "uVar1 <= uVar6" identifier <= identifier) )) (compound_statement "{\n      uVar8 = uVar1;\n    }" { (expression_statement "uVar8 = uVar1;" (assignment_expression "uVar8 = uVar1" identifier = identifier) ;) })) (if_statement "if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }" if (parenthesized_expression "((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0))" ( (binary_expression "(uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)" (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) || (parenthesized_expression "(uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)" ( (comma_expression "uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0" (assignment_expression "uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8)" identifier = (call_expression "memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8)" identifier (argument_list "(__s1,*(void **)(uVar9 + 0x20),uVar8)" ( identifier , (pointer_expression "*(void **)(uVar9 + 0x20)" * (cast_expression "(void **)(uVar9 + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar9 + 0x20)" ( (binary_expression "uVar9 + 0x20" identifier + number_literal) )))) , identifier )))) , (binary_expression "uVar4 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "lVar7 = uVar1 - uVar6;" (assignment_expression "lVar7 = uVar1 - uVar6" identifier = (binary_expression "uVar1 - uVar6" identifier - identifier)) ;) (if_statement "if (0x7fffffff < lVar7) goto LAB_0019f6d4;" if (parenthesized_expression "(0x7fffffff < lVar7)" ( (binary_expression "0x7fffffff < lVar7" number_literal < identifier) )) (goto_statement "goto LAB_0019f6d4;" goto statement_identifier ;)) (if_statement "if (lVar7 < -0x80000000) goto LAB_0019f7b1;" if (parenthesized_expression "(lVar7 < -0x80000000)" ( (binary_expression "lVar7 < -0x80000000" identifier < number_literal) )) (goto_statement "goto LAB_0019f7b1;" goto statement_identifier ;)) (expression_statement "uVar4 = (uint)lVar7;" (assignment_expression "uVar4 = (uint)lVar7" identifier = (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "uVar4 = uVar4 >> 0x1f;" (assignment_expression "uVar4 = uVar4 >> 0x1f" identifier = (binary_expression "uVar4 >> 0x1f" identifier >> number_literal)) ;) }))) (labeled_statement "LAB_0019f6d4:\n  FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U);" statement_identifier : (expression_statement "FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U);" (call_expression "FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U)" identifier (argument_list "(uVar4,auVar11._0_8_,uVar9,param_1 + 8U)" ( identifier , (field_expression "auVar11._0_8_" identifier . field_identifier) , identifier , (binary_expression "param_1 + 8U" identifier + number_literal) ))) ;)) (expression_statement "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;" (assignment_expression "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "auVar11._8_8_ = 1;" (assignment_expression "auVar11._8_8_ = 1" (field_expression "auVar11._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar11;" return identifier ;) }))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (macro_type_specifier IDENT ( (ERROR (type_descriptor (sized_type_specifier long TYPE)) , (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *))) (type_descriptor TYPE) )) ; (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) IDENT) == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;))) })))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) ))) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) ))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = 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 = LIT) ;) (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)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (field_expression IDENT . field_identifier) , IDENT , (binary_expression IDENT + LIT) ))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (return_statement return IDENT ;) }))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (macro_type_specifier "FUN_0019f540(long param_1,long *param_2)" (identifier "FUN_0019f540") (( "(") (ERROR "long param_1,long *" (type_descriptor "long param_1" (sized_type_specifier "long param_1" (long "long") (type_identifier "param_1"))) (, ",") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*")))) (type_descriptor "param_2" (type_identifier "param_2")) () ")")) (; "") (compound_statement "{\n  ulong uVar1;\n  long lVar2;\n  bool bVar3;\n  uint uVar4;\n  int iVar5;\n  ulong uVar6;\n  long lVar7;\n  ulong uVar8;\n  ulong uVar9;\n  size_t __n;\n  void *__s2;\n  void *__s1;\n  undefined1 auVar10 [16];\n  undefined1 auVar11 [16];\n  \n  auVar11._0_8_ = FUN_00275550(0x50);\n  lVar7 = *param_2;\n  *(void **)(auVar11._0_8_ + 0x20) = (void *)(auVar11._0_8_ + 0x30);\n  if ((long *)lVar7 == param_2 + 2) {\n    lVar7 = param_2[3];\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n    *(long *)(auVar11._0_8_ + 0x38) = lVar7;\n  }\n  else {\n    *(long *)(auVar11._0_8_ + 0x20) = lVar7;\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n  }\n  uVar1 = param_2[1];\n  lVar7 = param_2[4];\n  lVar2 = param_2[5];\n  *param_2 = (long)(param_2 + 2);\n  param_2[1] = 0;\n  *(undefined1 *)(param_2 + 2) = 0;\n  uVar6 = *(ulong *)(param_1 + 0x10);\n  *(ulong *)(auVar11._0_8_ + 0x28) = uVar1;\n  *(long *)(auVar11._0_8_ + 0x40) = lVar7;\n  *(long *)(auVar11._0_8_ + 0x48) = lVar2;\n  if (uVar6 == 0) {\n    uVar9 = param_1 + 8;\n    if (uVar9 != *(ulong *)(param_1 + 0x18)) {\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }\n    uVar9 = param_1 + 8;\nLAB_0019f7b1:\n    uVar4 = 1;\n  }\n  else {\n    __s1 = *(void **)(auVar11._0_8_ + 0x20);\n    do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar9;\n    if (!bVar3) goto LAB_0019f64e;\n    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;\nLAB_0019f6c9:\n    uVar4 = 1;\n    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;\n    uVar6 = *(ulong *)(uVar9 + 0x28);\n    uVar8 = uVar6;\n    if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }\n    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }\n    uVar4 = uVar4 >> 0x1f;\n  }\nLAB_0019f6d4:\n  FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar11._8_8_ = 1;\n  return auVar11;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "ulong uVar9;" (type_identifier "ulong") (identifier "uVar9") (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "void *__s2;" (primitive_type "void") (pointer_declarator "*__s2" (* "*") (identifier "__s2")) (; ";")) (declaration "void *__s1;" (primitive_type "void") (pointer_declarator "*__s1" (* "*") (identifier "__s1")) (; ";")) (declaration "undefined1 auVar10 [16];" (type_identifier "undefined1") (array_declarator "auVar10 [16]" (identifier "auVar10") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 auVar11 [16];" (type_identifier "undefined1") (array_declarator "auVar11 [16]" (identifier "auVar11") ([ "[") (number_literal "16") (] "]")) (; ";")) (expression_statement "auVar11._0_8_ = FUN_00275550(0x50);" (assignment_expression "auVar11._0_8_ = FUN_00275550(0x50)" (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (= "=") (call_expression "FUN_00275550(0x50)" (identifier "FUN_00275550") (argument_list "(0x50)" (( "(") (number_literal "0x50") () ")")))) (; ";")) (expression_statement "lVar7 = *param_2;" (assignment_expression "lVar7 = *param_2" (identifier "lVar7") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(void **)(auVar11._0_8_ + 0x20) = (void *)(auVar11._0_8_ + 0x30);" (assignment_expression "*(void **)(auVar11._0_8_ + 0x20) = (void *)(auVar11._0_8_ + 0x30)" (pointer_expression "*(void **)(auVar11._0_8_ + 0x20)" (* "*") (cast_expression "(void **)(auVar11._0_8_ + 0x20)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(auVar11._0_8_ + 0x20)" (( "(") (binary_expression "auVar11._0_8_ + 0x20" (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x20")) () ")")))) (= "=") (cast_expression "(void *)(auVar11._0_8_ + 0x30)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar11._0_8_ + 0x30)" (( "(") (binary_expression "auVar11._0_8_ + 0x30" (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x30")) () ")")))) (; ";")) (if_statement "if ((long *)lVar7 == param_2 + 2) {\n    lVar7 = param_2[3];\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n    *(long *)(auVar11._0_8_ + 0x38) = lVar7;\n  }\n  else {\n    *(long *)(auVar11._0_8_ + 0x20) = lVar7;\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n  }" (if "if") (parenthesized_expression "((long *)lVar7 == param_2 + 2)" (( "(") (binary_expression "(long *)lVar7 == param_2 + 2" (cast_expression "(long *)lVar7" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "lVar7")) (== "==") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2"))) () ")")) (compound_statement "{\n    lVar7 = param_2[3];\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n    *(long *)(auVar11._0_8_ + 0x38) = lVar7;\n  }" ({ "{") (expression_statement "lVar7 = param_2[3];" (assignment_expression "lVar7 = param_2[3]" (identifier "lVar7") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*(long *)(auVar11._0_8_ + 0x30) = param_2[2];" (assignment_expression "*(long *)(auVar11._0_8_ + 0x30) = param_2[2]" (pointer_expression "*(long *)(auVar11._0_8_ + 0x30)" (* "*") (cast_expression "(long *)(auVar11._0_8_ + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar11._0_8_ + 0x30)" (( "(") (binary_expression "auVar11._0_8_ + 0x30" (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x30")) () ")")))) (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(long *)(auVar11._0_8_ + 0x38) = lVar7;" (assignment_expression "*(long *)(auVar11._0_8_ + 0x38) = lVar7" (pointer_expression "*(long *)(auVar11._0_8_ + 0x38)" (* "*") (cast_expression "(long *)(auVar11._0_8_ + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar11._0_8_ + 0x38)" (( "(") (binary_expression "auVar11._0_8_ + 0x38" (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "lVar7")) (; ";")) (} "}")) (else_clause "else {\n    *(long *)(auVar11._0_8_ + 0x20) = lVar7;\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n  }" (else "else") (compound_statement "{\n    *(long *)(auVar11._0_8_ + 0x20) = lVar7;\n    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];\n  }" ({ "{") (expression_statement "*(long *)(auVar11._0_8_ + 0x20) = lVar7;" (assignment_expression "*(long *)(auVar11._0_8_ + 0x20) = lVar7" (pointer_expression "*(long *)(auVar11._0_8_ + 0x20)" (* "*") (cast_expression "(long *)(auVar11._0_8_ + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar11._0_8_ + 0x20)" (( "(") (binary_expression "auVar11._0_8_ + 0x20" (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "lVar7")) (; ";")) (expression_statement "*(long *)(auVar11._0_8_ + 0x30) = param_2[2];" (assignment_expression "*(long *)(auVar11._0_8_ + 0x30) = param_2[2]" (pointer_expression "*(long *)(auVar11._0_8_ + 0x30)" (* "*") (cast_expression "(long *)(auVar11._0_8_ + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar11._0_8_ + 0x30)" (( "(") (binary_expression "auVar11._0_8_ + 0x30" (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x30")) () ")")))) (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar1 = param_2[1];" (assignment_expression "uVar1 = param_2[1]" (identifier "uVar1") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "lVar7 = param_2[4];" (assignment_expression "lVar7 = param_2[4]" (identifier "lVar7") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "lVar2 = param_2[5];" (assignment_expression "lVar2 = param_2[5]" (identifier "lVar2") (= "=") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "*param_2 = (long)(param_2 + 2);" (assignment_expression "*param_2 = (long)(param_2 + 2)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)(param_2 + 2)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(param_2 + 2) = 0;" (assignment_expression "*(undefined1 *)(param_2 + 2) = 0" (pointer_expression "*(undefined1 *)(param_2 + 2)" (* "*") (cast_expression "(undefined1 *)(param_2 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar6 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(param_1 + 0x10)" (identifier "uVar6") (= "=") (pointer_expression "*(ulong *)(param_1 + 0x10)" (* "*") (cast_expression "(ulong *)(param_1 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(ulong *)(auVar11._0_8_ + 0x28) = uVar1;" (assignment_expression "*(ulong *)(auVar11._0_8_ + 0x28) = uVar1" (pointer_expression "*(ulong *)(auVar11._0_8_ + 0x28)" (* "*") (cast_expression "(ulong *)(auVar11._0_8_ + 0x28)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar11._0_8_ + 0x28)" (( "(") (binary_expression "auVar11._0_8_ + 0x28" (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "*(long *)(auVar11._0_8_ + 0x40) = lVar7;" (assignment_expression "*(long *)(auVar11._0_8_ + 0x40) = lVar7" (pointer_expression "*(long *)(auVar11._0_8_ + 0x40)" (* "*") (cast_expression "(long *)(auVar11._0_8_ + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar11._0_8_ + 0x40)" (( "(") (binary_expression "auVar11._0_8_ + 0x40" (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "lVar7")) (; ";")) (expression_statement "*(long *)(auVar11._0_8_ + 0x48) = lVar2;" (assignment_expression "*(long *)(auVar11._0_8_ + 0x48) = lVar2" (pointer_expression "*(long *)(auVar11._0_8_ + 0x48)" (* "*") (cast_expression "(long *)(auVar11._0_8_ + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar11._0_8_ + 0x48)" (( "(") (binary_expression "auVar11._0_8_ + 0x48" (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "lVar2")) (; ";")) (if_statement "if (uVar6 == 0) {\n    uVar9 = param_1 + 8;\n    if (uVar9 != *(ulong *)(param_1 + 0x18)) {\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }\n    uVar9 = param_1 + 8;\nLAB_0019f7b1:\n    uVar4 = 1;\n  }\n  else {\n    __s1 = *(void **)(auVar11._0_8_ + 0x20);\n    do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar9;\n    if (!bVar3) goto LAB_0019f64e;\n    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;\nLAB_0019f6c9:\n    uVar4 = 1;\n    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;\n    uVar6 = *(ulong *)(uVar9 + 0x28);\n    uVar8 = uVar6;\n    if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }\n    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }\n    uVar4 = uVar4 >> 0x1f;\n  }" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar9 = param_1 + 8;\n    if (uVar9 != *(ulong *)(param_1 + 0x18)) {\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }\n    uVar9 = param_1 + 8;\nLAB_0019f7b1:\n    uVar4 = 1;\n  }" ({ "{") (expression_statement "uVar9 = param_1 + 8;" (assignment_expression "uVar9 = param_1 + 8" (identifier "uVar9") (= "=") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (uVar9 != *(ulong *)(param_1 + 0x18)) {\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }" (if "if") (parenthesized_expression "(uVar9 != *(ulong *)(param_1 + 0x18))" (( "(") (binary_expression "uVar9 != *(ulong *)(param_1 + 0x18)" (identifier "uVar9") (!= "!=") (pointer_expression "*(ulong *)(param_1 + 0x18)" (* "*") (cast_expression "(ulong *)(param_1 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n      __s1 = *(void **)(auVar11._0_8_ + 0x20);\nLAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);\n      uVar8 = *(ulong *)(uVar6 + 0x28);\n      __s2 = *(void **)(uVar6 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\nLAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }\n      if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }\n      goto LAB_0019f6c9;\n    }" ({ "{") (expression_statement "__s1 = *(void **)(auVar11._0_8_ + 0x20);" (assignment_expression "__s1 = *(void **)(auVar11._0_8_ + 0x20)" (identifier "__s1") (= "=") (pointer_expression "*(void **)(auVar11._0_8_ + 0x20)" (* "*") (cast_expression "(void **)(auVar11._0_8_ + 0x20)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(auVar11._0_8_ + 0x20)" (( "(") (binary_expression "auVar11._0_8_ + 0x20" (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (labeled_statement "LAB_0019f70b:\n      uVar6 = thunk_FUN_00278080(uVar9);" (statement_identifier "LAB_0019f70b") (: ":") (expression_statement "uVar6 = thunk_FUN_00278080(uVar9);" (assignment_expression "uVar6 = thunk_FUN_00278080(uVar9)" (identifier "uVar6") (= "=") (call_expression "thunk_FUN_00278080(uVar9)" (identifier "thunk_FUN_00278080") (argument_list "(uVar9)" (( "(") (identifier "uVar9") () ")")))) (; ";"))) (expression_statement "uVar8 = *(ulong *)(uVar6 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(uVar6 + 0x28)" (identifier "uVar8") (= "=") (pointer_expression "*(ulong *)(uVar6 + 0x28)" (* "*") (cast_expression "(ulong *)(uVar6 + 0x28)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x28)" (( "(") (binary_expression "uVar6 + 0x28" (identifier "uVar6") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "__s2 = *(void **)(uVar6 + 0x20);" (assignment_expression "__s2 = *(void **)(uVar6 + 0x20)" (identifier "__s2") (= "=") (pointer_expression "*(void **)(uVar6 + 0x20)" (* "*") (cast_expression "(void **)(uVar6 + 0x20)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar6 + 0x20)" (( "(") (binary_expression "uVar6 + 0x20" (identifier "uVar6") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "__n = uVar8;" (assignment_expression "__n = uVar8" (identifier "__n") (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }" (if "if") (parenthesized_expression "(uVar1 <= uVar8)" (( "(") (binary_expression "uVar1 <= uVar8" (identifier "uVar1") (<= "<=") (identifier "uVar8")) () ")")) (compound_statement "{\n        __n = uVar1;\n      }" ({ "{") (expression_statement "__n = uVar1;" (assignment_expression "__n = uVar1" (identifier "__n") (= "=") (identifier "uVar1")) (; ";")) (} "}"))) (labeled_statement "LAB_0019f64e:\n      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }" (statement_identifier "LAB_0019f64e") (: ":") (if_statement "if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }\n      else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }" (if "if") (parenthesized_expression "((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0))" (( "(") (binary_expression "(__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)" (parenthesized_expression "(__n == 0)" (( "(") (binary_expression "__n == 0" (identifier "__n") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)" (( "(") (comma_expression "iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0" (assignment_expression "iVar5 = memcmp(__s2,__s1,__n)" (identifier "iVar5") (= "=") (call_expression "memcmp(__s2,__s1,__n)" (identifier "memcmp") (argument_list "(__s2,__s1,__n)" (( "(") (identifier "__s2") (, ",") (identifier "__s1") (, ",") (identifier "__n") () ")")))) (, ",") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        lVar7 = uVar8 - uVar1;\n        if (0x7fffffff < lVar7) goto LAB_0019f68d;\n        if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }\n      }" ({ "{") (expression_statement "lVar7 = uVar8 - uVar1;" (assignment_expression "lVar7 = uVar8 - uVar1" (identifier "lVar7") (= "=") (binary_expression "uVar8 - uVar1" (identifier "uVar8") (- "-") (identifier "uVar1"))) (; ";")) (if_statement "if (0x7fffffff < lVar7) goto LAB_0019f68d;" (if "if") (parenthesized_expression "(0x7fffffff < lVar7)" (( "(") (binary_expression "0x7fffffff < lVar7" (number_literal "0x7fffffff") (< "<") (identifier "lVar7")) () ")")) (goto_statement "goto LAB_0019f68d;" (goto "goto") (statement_identifier "LAB_0019f68d") (; ";"))) (if_statement "if (-0x80000001 < lVar7) {\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }" (if "if") (parenthesized_expression "(-0x80000001 < lVar7)" (( "(") (binary_expression "-0x80000001 < lVar7" (number_literal "-0x80000001") (< "<") (identifier "lVar7")) () ")")) (compound_statement "{\n          iVar5 = (int)lVar7;\n          goto LAB_0019f689;\n        }" ({ "{") (expression_statement "iVar5 = (int)lVar7;" (assignment_expression "iVar5 = (int)lVar7" (identifier "iVar5") (= "=") (cast_expression "(int)lVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar7"))) (; ";")) (goto_statement "goto LAB_0019f689;" (goto "goto") (statement_identifier "LAB_0019f689") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }" (else "else") (compound_statement "{\nLAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;\n      }" ({ "{") (labeled_statement "LAB_0019f689:\n        if (-1 < iVar5) goto LAB_0019f68d;" (statement_identifier "LAB_0019f689") (: ":") (if_statement "if (-1 < iVar5) goto LAB_0019f68d;" (if "if") (parenthesized_expression "(-1 < iVar5)" (( "(") (binary_expression "-1 < iVar5" (number_literal "-1") (< "<") (identifier "iVar5")) () ")")) (goto_statement "goto LAB_0019f68d;" (goto "goto") (statement_identifier "LAB_0019f68d") (; ";")))) (} "}"))))) (if_statement "if (uVar9 == 0) {\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }" (if "if") (parenthesized_expression "(uVar9 == 0)" (( "(") (binary_expression "uVar9 == 0" (identifier "uVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar6 = 0;\nLAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }\n        FUN_00276d20(auVar11._0_8_);\n        auVar10._8_8_ = 0;\n        auVar10._0_8_ = uVar6;\n        return auVar10;\n      }" ({ "{") (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0019f68d:\n        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }" (statement_identifier "LAB_0019f68d") (: ":") (if_statement "if ((void *)(auVar11._0_8_ + 0x30) != __s1) {\n          FUN_00276d20(__s1);\n        }" (if "if") (parenthesized_expression "((void *)(auVar11._0_8_ + 0x30) != __s1)" (( "(") (binary_expression "(void *)(auVar11._0_8_ + 0x30) != __s1" (cast_expression "(void *)(auVar11._0_8_ + 0x30)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar11._0_8_ + 0x30)" (( "(") (binary_expression "auVar11._0_8_ + 0x30" (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x30")) () ")"))) (!= "!=") (identifier "__s1")) () ")")) (compound_statement "{\n          FUN_00276d20(__s1);\n        }" ({ "{") (expression_statement "FUN_00276d20(__s1);" (call_expression "FUN_00276d20(__s1)" (identifier "FUN_00276d20") (argument_list "(__s1)" (( "(") (identifier "__s1") () ")"))) (; ";")) (} "}")))) (expression_statement "FUN_00276d20(auVar11._0_8_);" (call_expression "FUN_00276d20(auVar11._0_8_)" (identifier "FUN_00276d20") (argument_list "(auVar11._0_8_)" (( "(") (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) () ")"))) (; ";")) (expression_statement "auVar10._8_8_ = 0;" (assignment_expression "auVar10._8_8_ = 0" (field_expression "auVar10._8_8_" (identifier "auVar10") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar10._0_8_ = uVar6;" (assignment_expression "auVar10._0_8_ = uVar6" (field_expression "auVar10._0_8_" (identifier "auVar10") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar6")) (; ";")) (return_statement "return auVar10;" (return "return") (identifier "auVar10") (; ";")) (} "}"))) (goto_statement "goto LAB_0019f6c9;" (goto "goto") (statement_identifier "LAB_0019f6c9") (; ";")) (} "}"))) (expression_statement "uVar9 = param_1 + 8;" (assignment_expression "uVar9 = param_1 + 8" (identifier "uVar9") (= "=") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8"))) (; ";")) (labeled_statement "LAB_0019f7b1:\n    uVar4 = 1;" (statement_identifier "LAB_0019f7b1") (: ":") (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";"))) (} "}")) (else_clause "else {\n    __s1 = *(void **)(auVar11._0_8_ + 0x20);\n    do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar9;\n    if (!bVar3) goto LAB_0019f64e;\n    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;\nLAB_0019f6c9:\n    uVar4 = 1;\n    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;\n    uVar6 = *(ulong *)(uVar9 + 0x28);\n    uVar8 = uVar6;\n    if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }\n    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }\n    uVar4 = uVar4 >> 0x1f;\n  }" (else "else") (compound_statement "{\n    __s1 = *(void **)(auVar11._0_8_ + 0x20);\n    do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar9;\n    if (!bVar3) goto LAB_0019f64e;\n    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;\nLAB_0019f6c9:\n    uVar4 = 1;\n    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;\n    uVar6 = *(ulong *)(uVar9 + 0x28);\n    uVar8 = uVar6;\n    if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }\n    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }\n    uVar4 = uVar4 >> 0x1f;\n  }" ({ "{") (expression_statement "__s1 = *(void **)(auVar11._0_8_ + 0x20);" (assignment_expression "__s1 = *(void **)(auVar11._0_8_ + 0x20)" (identifier "__s1") (= "=") (pointer_expression "*(void **)(auVar11._0_8_ + 0x20)" (* "*") (cast_expression "(void **)(auVar11._0_8_ + 0x20)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(auVar11._0_8_ + 0x20)" (( "(") (binary_expression "auVar11._0_8_ + 0x20" (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (do_statement "do {\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);" (do "do") (compound_statement "{\n      uVar9 = uVar6;\n      uVar8 = *(ulong *)(uVar9 + 0x28);\n      __s2 = *(void **)(uVar9 + 0x20);\n      __n = uVar8;\n      if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }\n      if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }\n    }" ({ "{") (expression_statement "uVar9 = uVar6;" (assignment_expression "uVar9 = uVar6" (identifier "uVar9") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar8 = *(ulong *)(uVar9 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(uVar9 + 0x28)" (identifier "uVar8") (= "=") (pointer_expression "*(ulong *)(uVar9 + 0x28)" (* "*") (cast_expression "(ulong *)(uVar9 + 0x28)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar9 + 0x28)" (( "(") (binary_expression "uVar9 + 0x28" (identifier "uVar9") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "__s2 = *(void **)(uVar9 + 0x20);" (assignment_expression "__s2 = *(void **)(uVar9 + 0x20)" (identifier "__s2") (= "=") (pointer_expression "*(void **)(uVar9 + 0x20)" (* "*") (cast_expression "(void **)(uVar9 + 0x20)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar9 + 0x20)" (( "(") (binary_expression "uVar9 + 0x20" (identifier "uVar9") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "__n = uVar8;" (assignment_expression "__n = uVar8" (identifier "__n") (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (uVar1 <= uVar8) {\n        __n = uVar1;\n      }" (if "if") (parenthesized_expression "(uVar1 <= uVar8)" (( "(") (binary_expression "uVar1 <= uVar8" (identifier "uVar1") (<= "<=") (identifier "uVar8")) () ")")) (compound_statement "{\n        __n = uVar1;\n      }" ({ "{") (expression_statement "__n = uVar1;" (assignment_expression "__n = uVar1" (identifier "__n") (= "=") (identifier "uVar1")) (; ";")) (} "}"))) (if_statement "if (__n == 0) {\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }" (if "if") (parenthesized_expression "(__n == 0)" (( "(") (binary_expression "__n == 0" (identifier "__n") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0019f61e:\n        uVar6 = uVar1 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }\nLAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);\n        bVar3 = false;\n      }" ({ "{") (labeled_statement "LAB_0019f61e:\n        uVar6 = uVar1 - uVar8;" (statement_identifier "LAB_0019f61e") (: ":") (expression_statement "uVar6 = uVar1 - uVar8;" (assignment_expression "uVar6 = uVar1 - uVar8" (identifier "uVar6") (= "=") (binary_expression "uVar1 - uVar8" (identifier "uVar1") (- "-") (identifier "uVar8"))) (; ";"))) (if_statement "if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }" (if "if") (parenthesized_expression "((long)uVar6 < 0x80000000)" (( "(") (binary_expression "(long)uVar6 < 0x80000000" (cast_expression "(long)uVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar6")) (< "<") (number_literal "0x80000000")) () ")")) (compound_statement "{\n          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;\n          goto LAB_0019f5d0;\n        }" ({ "{") (if_statement "if (-0x80000001 < (long)uVar6) goto LAB_0019f634;" (if "if") (parenthesized_expression "(-0x80000001 < (long)uVar6)" (( "(") (binary_expression "-0x80000001 < (long)uVar6" (number_literal "-0x80000001") (< "<") (cast_expression "(long)uVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar6"))) () ")")) (goto_statement "goto LAB_0019f634;" (goto "goto") (statement_identifier "LAB_0019f634") (; ";"))) (goto_statement "goto LAB_0019f5d0;" (goto "goto") (statement_identifier "LAB_0019f5d0") (; ";")) (} "}"))) (labeled_statement "LAB_0019f638:\n        uVar6 = *(ulong *)(uVar9 + 0x18);" (statement_identifier "LAB_0019f638") (: ":") (expression_statement "uVar6 = *(ulong *)(uVar9 + 0x18);" (assignment_expression "uVar6 = *(ulong *)(uVar9 + 0x18)" (identifier "uVar6") (= "=") (pointer_expression "*(ulong *)(uVar9 + 0x18)" (* "*") (cast_expression "(ulong *)(uVar9 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar9 + 0x18)" (( "(") (binary_expression "uVar9 + 0x18" (identifier "uVar9") (+ "+") (number_literal "0x18")) () ")"))))) (; ";"))) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }" (else "else") (compound_statement "{\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_0019f61e;\nLAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;\nLAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);\n        bVar3 = true;\n      }" ({ "{") (expression_statement "uVar4 = memcmp(__s1,__s2,__n);" (assignment_expression "uVar4 = memcmp(__s1,__s2,__n)" (identifier "uVar4") (= "=") (call_expression "memcmp(__s1,__s2,__n)" (identifier "memcmp") (argument_list "(__s1,__s2,__n)" (( "(") (identifier "__s1") (, ",") (identifier "__s2") (, ",") (identifier "__n") () ")")))) (; ";")) (expression_statement "uVar6 = (ulong)uVar4;" (assignment_expression "uVar6 = (ulong)uVar4" (identifier "uVar6") (= "=") (cast_expression "(ulong)uVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar4"))) (; ";")) (if_statement "if (uVar4 == 0) goto LAB_0019f61e;" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0019f61e;" (goto "goto") (statement_identifier "LAB_0019f61e") (; ";"))) (labeled_statement "LAB_0019f634:\n        if (-1 < (int)uVar6) goto LAB_0019f638;" (statement_identifier "LAB_0019f634") (: ":") (if_statement "if (-1 < (int)uVar6) goto LAB_0019f638;" (if "if") (parenthesized_expression "(-1 < (int)uVar6)" (( "(") (binary_expression "-1 < (int)uVar6" (number_literal "-1") (< "<") (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6"))) () ")")) (goto_statement "goto LAB_0019f638;" (goto "goto") (statement_identifier "LAB_0019f638") (; ";")))) (labeled_statement "LAB_0019f5d0:\n        uVar6 = *(ulong *)(uVar9 + 0x10);" (statement_identifier "LAB_0019f5d0") (: ":") (expression_statement "uVar6 = *(ulong *)(uVar9 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(uVar9 + 0x10)" (identifier "uVar6") (= "=") (pointer_expression "*(ulong *)(uVar9 + 0x10)" (* "*") (cast_expression "(ulong *)(uVar9 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar9 + 0x10)" (( "(") (binary_expression "uVar9 + 0x10" (identifier "uVar9") (+ "+") (number_literal "0x10")) () ")"))))) (; ";"))) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" (identifier "bVar3") (= "=") (true "true")) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "uVar6 = uVar9;" (assignment_expression "uVar6 = uVar9" (identifier "uVar6") (= "=") (identifier "uVar9")) (; ";")) (if_statement "if (!bVar3) goto LAB_0019f64e;" (if "if") (parenthesized_expression "(!bVar3)" (( "(") (unary_expression "!bVar3" (! "!") (identifier "bVar3")) () ")")) (goto_statement "goto LAB_0019f64e;" (goto "goto") (statement_identifier "LAB_0019f64e") (; ";"))) (if_statement "if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;" (if "if") (parenthesized_expression "(*(ulong *)(param_1 + 0x18) != uVar9)" (( "(") (binary_expression "*(ulong *)(param_1 + 0x18) != uVar9" (pointer_expression "*(ulong *)(param_1 + 0x18)" (* "*") (cast_expression "(ulong *)(param_1 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (identifier "uVar9")) () ")")) (goto_statement "goto LAB_0019f70b;" (goto "goto") (statement_identifier "LAB_0019f70b") (; ";"))) (labeled_statement "LAB_0019f6c9:\n    uVar4 = 1;" (statement_identifier "LAB_0019f6c9") (: ":") (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";"))) (if_statement "if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;" (if "if") (parenthesized_expression "(uVar9 == param_1 + 8U)" (( "(") (binary_expression "uVar9 == param_1 + 8U" (identifier "uVar9") (== "==") (binary_expression "param_1 + 8U" (identifier "param_1") (+ "+") (number_literal "8U"))) () ")")) (goto_statement "goto LAB_0019f6d4;" (goto "goto") (statement_identifier "LAB_0019f6d4") (; ";"))) (expression_statement "uVar6 = *(ulong *)(uVar9 + 0x28);" (assignment_expression "uVar6 = *(ulong *)(uVar9 + 0x28)" (identifier "uVar6") (= "=") (pointer_expression "*(ulong *)(uVar9 + 0x28)" (* "*") (cast_expression "(ulong *)(uVar9 + 0x28)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar9 + 0x28)" (( "(") (binary_expression "uVar9 + 0x28" (identifier "uVar9") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" (identifier "uVar8") (= "=") (identifier "uVar6")) (; ";")) (if_statement "if (uVar1 <= uVar6) {\n      uVar8 = uVar1;\n    }" (if "if") (parenthesized_expression "(uVar1 <= uVar6)" (( "(") (binary_expression "uVar1 <= uVar6" (identifier "uVar1") (<= "<=") (identifier "uVar6")) () ")")) (compound_statement "{\n      uVar8 = uVar1;\n    }" ({ "{") (expression_statement "uVar8 = uVar1;" (assignment_expression "uVar8 = uVar1" (identifier "uVar8") (= "=") (identifier "uVar1")) (; ";")) (} "}"))) (if_statement "if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }" (if "if") (parenthesized_expression "((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0))" (( "(") (binary_expression "(uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)" (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)" (( "(") (comma_expression "uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0" (assignment_expression "uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8)" (identifier "uVar4") (= "=") (call_expression "memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8)" (identifier "memcmp") (argument_list "(__s1,*(void **)(uVar9 + 0x20),uVar8)" (( "(") (identifier "__s1") (, ",") (pointer_expression "*(void **)(uVar9 + 0x20)" (* "*") (cast_expression "(void **)(uVar9 + 0x20)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar9 + 0x20)" (( "(") (binary_expression "uVar9 + 0x20" (identifier "uVar9") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (identifier "uVar8") () ")")))) (, ",") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      uVar4 = 0;\n      lVar7 = uVar1 - uVar6;\n      if (0x7fffffff < lVar7) goto LAB_0019f6d4;\n      if (lVar7 < -0x80000000) goto LAB_0019f7b1;\n      uVar4 = (uint)lVar7;\n    }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar7 = uVar1 - uVar6;" (assignment_expression "lVar7 = uVar1 - uVar6" (identifier "lVar7") (= "=") (binary_expression "uVar1 - uVar6" (identifier "uVar1") (- "-") (identifier "uVar6"))) (; ";")) (if_statement "if (0x7fffffff < lVar7) goto LAB_0019f6d4;" (if "if") (parenthesized_expression "(0x7fffffff < lVar7)" (( "(") (binary_expression "0x7fffffff < lVar7" (number_literal "0x7fffffff") (< "<") (identifier "lVar7")) () ")")) (goto_statement "goto LAB_0019f6d4;" (goto "goto") (statement_identifier "LAB_0019f6d4") (; ";"))) (if_statement "if (lVar7 < -0x80000000) goto LAB_0019f7b1;" (if "if") (parenthesized_expression "(lVar7 < -0x80000000)" (( "(") (binary_expression "lVar7 < -0x80000000" (identifier "lVar7") (< "<") (number_literal "-0x80000000")) () ")")) (goto_statement "goto LAB_0019f7b1;" (goto "goto") (statement_identifier "LAB_0019f7b1") (; ";"))) (expression_statement "uVar4 = (uint)lVar7;" (assignment_expression "uVar4 = (uint)lVar7" (identifier "uVar4") (= "=") (cast_expression "(uint)lVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar7"))) (; ";")) (} "}"))) (expression_statement "uVar4 = uVar4 >> 0x1f;" (assignment_expression "uVar4 = uVar4 >> 0x1f" (identifier "uVar4") (= "=") (binary_expression "uVar4 >> 0x1f" (identifier "uVar4") (>> ">>") (number_literal "0x1f"))) (; ";")) (} "}")))) (labeled_statement "LAB_0019f6d4:\n  FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U);" (statement_identifier "LAB_0019f6d4") (: ":") (expression_statement "FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U);" (call_expression "FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U)" (identifier "FUN_00278220") (argument_list "(uVar4,auVar11._0_8_,uVar9,param_1 + 8U)" (( "(") (identifier "uVar4") (, ",") (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (, ",") (identifier "uVar9") (, ",") (binary_expression "param_1 + 8U" (identifier "param_1") (+ "+") (number_literal "8U")) () ")"))) (; ";"))) (expression_statement "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;" (assignment_expression "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "*(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "auVar11._8_8_ = 1;" (assignment_expression "auVar11._8_8_ = 1" (field_expression "auVar11._8_8_" (identifier "auVar11") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "1")) (; ";")) (return_statement "return auVar11;" (return "return") (identifier "auVar11") (; ";")) (} "}"))

/* DWARF original name: _M_emplace_unique<std::pair<std::__cxx11::basic_string<char,
   std::char_traits<char>, std::allocator<char> >, gold::Kept_section::Comdat_section_info> >
   DWARF original prototype:
   pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_bool>
   _M_emplace_unique<std::pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>(_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>_>,_gold::Kept_section::Comdat_section_info>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>_>,_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>_>,_gold::Kept_section::Comdat_section_info>_>_>
   * this,
   pair<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::Kept_section::Comdat_section_info>
   * __args#0) */

pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>,_gold::Kept_section::Comdat_section_info>var_5>,var_1>
 var_2
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>,_gold::Kept_section::Comdat_section_info>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>,_gold::Kept_section::Comdat_section_info>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>,_gold::Kept_section::Comdat_section_info>var_5>var_5>
::
_M_emplace_unique<std::pair<std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>,_gold::Kept_section::Comdat_section_info>var_5>
          (_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>,_gold::Kept_section::Comdat_section_info>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>,_gold::Kept_section::Comdat_section_info>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>,_gold::Kept_section::Comdat_section_info>var_5>var_5>
           *this,pair<std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>,_gold::Kept_section::Comdat_section_info>
                 *__args_0)

{
  anon_union_16_2_edb7204a_for_basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>var_6
  *var_7;
  type_1 *var_23;
  size_t *psVar3;
  type_2 var_11;
  type_3 var_15;
  type_4 uVar6;
  type_5 var_22;
  int var_19;
  type_6 uVar9;
  type_7 *var_12;
  long var_20;
  type_3 var_17;
  type_7 *var_13;
  bool bVar14;
  void *__s2;
  type_8 *__s1;
  type_3 var_16;
  pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>,_gold::Kept_section::Comdat_section_info>var_5>,var_1>
  var_8;
  pair<std::_Rb_tree_iterator<std::pair<const_std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>,_gold::Kept_section::Comdat_section_info>var_5>,var_1>
  var_9;
  
  var_9.first._M_node = (type_3)var_10(0x50);
  var_11 = (__args_0->first)._M_dataplus._M_p;
  *(type_3 **)(var_9.first._M_node + 1) = &var_9.first._M_node[1]._M_left;
  var_7 = &(__args_0->first).field_2;
  if ((anon_union_16_2_edb7204a_for_basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_5>var_6
       *)var_11 == var_7) {
    var_15 = *(type_3 *)((long)&(__args_0->first).field_2 + 8);
    var_9.first._M_node[1]._M_left = (type_3)(__args_0->first).field_2._M_allocated_capacity;
    var_9.first._M_node[1]._M_right = var_15;
  }
  else {
    *(type_2 *)(var_9.first._M_node + 1) = var_11;
    var_9.first._M_node[1]._M_left = (type_3)(__args_0->first).field_2._M_allocated_capacity;
  }
  var_15 = (type_3)(__args_0->first)._M_string_length;
  var_22 = (__args_0->second).shndx;
  uVar6 = *(type_4 *)&(__args_0->second).field_0x4;
  var_16 = (type_3)(__args_0->second).size;
  (__args_0->first)._M_dataplus._M_p = (type_2)var_7;
  var_23 = &(this->_M_impl).super__Rb_tree_header;
  (__args_0->first)._M_string_length = 0;
  (__args_0->first).field_2._M_local_buf[0] = '\0';
  var_12 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  var_9.first._M_node[1]._M_parent = var_15;
  var_9.first._M_node[2]._M_color = var_22;
  *(type_4 *)&var_9.first._M_node[2].field_0x4 = uVar6;
  var_9.first._M_node[2]._M_parent = var_16;
  if (var_12 == (type_7 *)0x0) {
    var_13 = &(this->_M_impl).super__Rb_tree_header._M_header;
    if (var_13 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) {
      __s1 = *(type_8 **)(var_9.first._M_node + 1);
LAB_0019f70b:
      var_12 = (type_7 *)var_14(var_13);
      var_16 = var_12[1]._M_parent;
      __s2 = *(void **)(var_12 + 1);
      var_17 = var_16;
      if (var_15 <= var_16) {
        var_17 = var_15;
      }
LAB_0019f64e:
      if ((var_17 == (type_3)0x0) || (var_19 = var_18(__s2,__s1,(size_t)var_17), var_19 == 0)) {
        var_20 = (long)var_16 - (long)var_15;
        if (0x7fffffff < var_20) goto LAB_0019f68d;
        if (-0x80000001 < var_20) {
          var_19 = (int)var_20;
          goto LAB_0019f689;
        }
      }
      else {
LAB_0019f689:
        if (-1 < var_19) goto LAB_0019f68d;
      }
      if (var_13 == (type_7 *)0x0) {
        var_12 = (type_7 *)0x0;
LAB_0019f68d:
        if (&var_9.first._M_node[1]._M_left != (type_3 *)__s1) {
          var_21(__s1);
        }
        var_21(var_9.first._M_node);
        var_8._8_8_ = 0;
        var_8.first._M_node = var_12;
        return var_8;
      }
      goto LAB_0019f6c9;
    }
    var_13 = &(this->_M_impl).super__Rb_tree_header._M_header;
LAB_0019f7b1:
    bVar14 = true;
  }
  else {
    __s1 = *(type_8 **)(var_9.first._M_node + 1);
    do {
      var_13 = var_12;
      var_16 = var_13[1]._M_parent;
      __s2 = *(void **)(var_13 + 1);
      var_17 = var_16;
      if (var_15 <= var_16) {
        var_17 = var_15;
      }
      if (var_17 == (type_3)0x0) {
LAB_0019f61e:
        uVar9 = (long)var_15 - (long)var_16;
        if ((long)uVar9 < 0x80000000) {
          if (-0x80000001 < (long)uVar9) goto LAB_0019f634;
          goto LAB_0019f5d0;
        }
LAB_0019f638:
        var_12 = var_13->_M_right;
        bVar14 = false;
      }
      else {
        var_22 = var_18(__s1,__s2,(size_t)var_17);
        uVar9 = (type_6)var_22;
        if (var_22 == 0) goto LAB_0019f61e;
LAB_0019f634:
        if (-1 < (int)uVar9) goto LAB_0019f638;
LAB_0019f5d0:
        var_12 = var_13->_M_left;
        bVar14 = true;
      }
    } while (var_12 != (type_3)0x0);
    var_12 = var_13;
    if (!bVar14) goto LAB_0019f64e;
    if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != var_13) goto LAB_0019f70b;
LAB_0019f6c9:
    bVar14 = true;
    if ((type_1 *)var_13 == var_23) goto LAB_0019f6d4;
    var_16 = var_13[1]._M_parent;
    var_17 = var_16;
    if (var_15 <= var_16) {
      var_17 = var_15;
    }
    if ((var_17 == (type_3)0x0) ||
       (var_19 = var_18(__s1,*(void **)(var_13 + 1),(size_t)var_17), var_19 == 0)) {
      bVar14 = false;
      var_20 = (long)var_15 - (long)var_16;
      if (0x7fffffff < var_20) goto LAB_0019f6d4;
      if (var_20 < -0x80000000) goto LAB_0019f7b1;
      var_19 = (int)var_20;
    }
    bVar14 = var_24((type_5)var_19 >> 0x1f,0);
  }
LAB_0019f6d4:
  var_25(bVar14,var_9.first._M_node,var_13,&var_23->_M_header);
  psVar3 = &(this->_M_impl).super__Rb_tree_header._M_node_count;
  *psVar3 = *psVar3 + 1;
  var_9._8_8_ = 1;
  return var_9;
}


(translation_unit (expression_statement (subscript_expression argument: (identifier) index: (number_literal)) (MISSING ";")) (macro_type_specifier name: (identifier) (ERROR (type_descriptor type: (sized_type_specifier type: (type_identifier))) (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator))) type: (type_descriptor type: (type_identifier))) (MISSING ";") (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (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: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (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: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) right: (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: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) right: (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: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) right: (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: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_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))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (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))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (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)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal)))) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (return_statement (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (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: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (false)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (true))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (number_literal))) (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: (type_identifier)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (field_expression argument: (identifier) field: (field_identifier)) (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (return_statement (identifier))))

undefined1  [16] MASKED(long param_1,long *param_2)

{
  ulong uVar1;
  long lVar2;
  bool bVar3;
  uint uVar4;
  int iVar5;
  ulong uVar6;
  long lVar7;
  ulong uVar8;
  ulong uVar9;
  size_t __n;
  void *__s2;
  void *__s1;
  undefined1 auVar10 [16];
  undefined1 auVar11 [16];
  
  auVar11._0_8_ = FUN_00275550(0x50);
  lVar7 = *param_2;
  *(void **)(auVar11._0_8_ + 0x20) = (void *)(auVar11._0_8_ + 0x30);
  if ((long *)lVar7 == param_2 + 2) {
    lVar7 = param_2[3];
    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];
    *(long *)(auVar11._0_8_ + 0x38) = lVar7;
  }
  else {
    *(long *)(auVar11._0_8_ + 0x20) = lVar7;
    *(long *)(auVar11._0_8_ + 0x30) = param_2[2];
  }
  uVar1 = param_2[1];
  lVar7 = param_2[4];
  lVar2 = param_2[5];
  *param_2 = (long)(param_2 + 2);
  param_2[1] = 0;
  *(undefined1 *)(param_2 + 2) = 0;
  uVar6 = *(ulong *)(param_1 + 0x10);
  *(ulong *)(auVar11._0_8_ + 0x28) = uVar1;
  *(long *)(auVar11._0_8_ + 0x40) = lVar7;
  *(long *)(auVar11._0_8_ + 0x48) = lVar2;
  if (uVar6 == 0) {
    uVar9 = param_1 + 8;
    if (uVar9 != *(ulong *)(param_1 + 0x18)) {
      __s1 = *(void **)(auVar11._0_8_ + 0x20);
LAB_0019f70b:
      uVar6 = thunk_FUN_00278080(uVar9);
      uVar8 = *(ulong *)(uVar6 + 0x28);
      __s2 = *(void **)(uVar6 + 0x20);
      __n = uVar8;
      if (uVar1 <= uVar8) {
        __n = uVar1;
      }
LAB_0019f64e:
      if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {
        lVar7 = uVar8 - uVar1;
        if (0x7fffffff < lVar7) goto LAB_0019f68d;
        if (-0x80000001 < lVar7) {
          iVar5 = (int)lVar7;
          goto LAB_0019f689;
        }
      }
      else {
LAB_0019f689:
        if (-1 < iVar5) goto LAB_0019f68d;
      }
      if (uVar9 == 0) {
        uVar6 = 0;
LAB_0019f68d:
        if ((void *)(auVar11._0_8_ + 0x30) != __s1) {
          FUN_00276d20(__s1);
        }
        FUN_00276d20(auVar11._0_8_);
        auVar10._8_8_ = 0;
        auVar10._0_8_ = uVar6;
        return auVar10;
      }
      goto LAB_0019f6c9;
    }
    uVar9 = param_1 + 8;
LAB_0019f7b1:
    uVar4 = 1;
  }
  else {
    __s1 = *(void **)(auVar11._0_8_ + 0x20);
    do {
      uVar9 = uVar6;
      uVar8 = *(ulong *)(uVar9 + 0x28);
      __s2 = *(void **)(uVar9 + 0x20);
      __n = uVar8;
      if (uVar1 <= uVar8) {
        __n = uVar1;
      }
      if (__n == 0) {
LAB_0019f61e:
        uVar6 = uVar1 - uVar8;
        if ((long)uVar6 < 0x80000000) {
          if (-0x80000001 < (long)uVar6) goto LAB_0019f634;
          goto LAB_0019f5d0;
        }
LAB_0019f638:
        uVar6 = *(ulong *)(uVar9 + 0x18);
        bVar3 = false;
      }
      else {
        uVar4 = memcmp(__s1,__s2,__n);
        uVar6 = (ulong)uVar4;
        if (uVar4 == 0) goto LAB_0019f61e;
LAB_0019f634:
        if (-1 < (int)uVar6) goto LAB_0019f638;
LAB_0019f5d0:
        uVar6 = *(ulong *)(uVar9 + 0x10);
        bVar3 = true;
      }
    } while (uVar6 != 0);
    uVar6 = uVar9;
    if (!bVar3) goto LAB_0019f64e;
    if (*(ulong *)(param_1 + 0x18) != uVar9) goto LAB_0019f70b;
LAB_0019f6c9:
    uVar4 = 1;
    if (uVar9 == param_1 + 8U) goto LAB_0019f6d4;
    uVar6 = *(ulong *)(uVar9 + 0x28);
    uVar8 = uVar6;
    if (uVar1 <= uVar6) {
      uVar8 = uVar1;
    }
    if ((uVar8 == 0) || (uVar4 = memcmp(__s1,*(void **)(uVar9 + 0x20),uVar8), uVar4 == 0)) {
      uVar4 = 0;
      lVar7 = uVar1 - uVar6;
      if (0x7fffffff < lVar7) goto LAB_0019f6d4;
      if (lVar7 < -0x80000000) goto LAB_0019f7b1;
      uVar4 = (uint)lVar7;
    }
    uVar4 = uVar4 >> 0x1f;
  }
LAB_0019f6d4:
  FUN_00278220(uVar4,auVar11._0_8_,uVar9,param_1 + 8U);
  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;
  auVar11._8_8_ = 1;
  return auVar11;
}

