
/* DWARF original prototype: pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>
   _M_get_insert_unique_pos(_Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>
   * this, key_type * __k) */

pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> __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>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>
::_M_get_insert_unique_pos
          (_Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>
           *this,key_type *__k)

{
  undefined1 auVar1 [16];
  undefined1 auVar2 [16];
  bool bVar3;
  uint uVar4;
  int iVar5;
  ulong uVar6;
  _Rb_tree_node_base *p_Var7;
  _Rb_tree_node_base *p_Var8;
  pointer __s1;
  _Base_ptr __n;
  void *__s2;
  _Base_ptr p_Var9;
  long lVar10;
  _Base_ptr p_Var11;
  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar12;
  
  p_Var7 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  if (p_Var7 == (_Rb_tree_node_base *)0x0) {
    p_Var8 = &(this->_M_impl).super__Rb_tree_header._M_header;
LAB_001f3d8c:
    if (p_Var8 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) {
      auVar2._8_8_ = 0;
      auVar2._0_8_ = p_Var8;
      return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar2 << 0x40);
    }
    p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8);
    p_Var9 = p_Var7[1]._M_parent;
    __s2 = *(void **)(p_Var7 + 1);
    p_Var11 = (_Base_ptr)__k->_M_string_length;
    __s1 = (__k->_M_dataplus)._M_p;
    __n = p_Var9;
    if (p_Var11 <= p_Var9) {
      __n = p_Var11;
    }
  }
  else {
    p_Var11 = (_Base_ptr)__k->_M_string_length;
    __s1 = (__k->_M_dataplus)._M_p;
    do {
      p_Var8 = p_Var7;
      p_Var9 = p_Var8[1]._M_parent;
      __s2 = *(void **)(p_Var8 + 1);
      __n = p_Var9;
      if (p_Var11 <= p_Var9) {
        __n = p_Var11;
      }
      if (__n == (_Base_ptr)0x0) {
LAB_001f3cf2:
        uVar6 = (long)p_Var11 - (long)p_Var9;
        if ((long)uVar6 < 0x80000000) {
          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;
          goto LAB_001f3cb8;
        }
LAB_001f3d0c:
        p_Var7 = p_Var8->_M_right;
        bVar3 = false;
      }
      else {
        uVar4 = memcmp(__s1,__s2,(size_t)__n);
        uVar6 = (ulong)uVar4;
        if (uVar4 == 0) goto LAB_001f3cf2;
LAB_001f3d08:
        if (-1 < (int)uVar6) goto LAB_001f3d0c;
LAB_001f3cb8:
        p_Var7 = p_Var8->_M_left;
        bVar3 = true;
      }
    } while (p_Var7 != (_Base_ptr)0x0);
    p_Var7 = p_Var8;
    if (bVar3) goto LAB_001f3d8c;
  }
  if ((__n == (_Base_ptr)0x0) || (iVar5 = memcmp(__s2,__s1,(size_t)__n), iVar5 == 0)) {
    lVar10 = (long)p_Var9 - (long)p_Var11;
    if (0x7fffffff < lVar10) goto LAB_001f3d5a;
    if (lVar10 < -0x80000000) goto LAB_001f3d70;
    iVar5 = (int)lVar10;
  }
  if (iVar5 < 0) {
LAB_001f3d70:
    auVar1._8_8_ = 0;
    auVar1._0_8_ = p_Var8;
    return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar1 << 0x40);
  }
LAB_001f3d5a:
  pVar12.second = (_Rb_tree_node_base *)0x0;
  pVar12.first = p_Var7;
  return pVar12;
}



undefined1  [16] FUN_001f3c80(long param_1,undefined8 *param_2)

{
  undefined1 auVar1 [16];
  undefined1 auVar2 [16];
  bool bVar3;
  uint uVar4;
  int iVar5;
  ulong uVar6;
  ulong uVar7;
  void *__s1;
  size_t __n;
  void *__s2;
  ulong uVar8;
  long lVar9;
  ulong uVar10;
  undefined1 auVar11 [16];
  
  if (*(ulong *)(param_1 + 0x10) == 0) {
    uVar7 = param_1 + 8;
LAB_001f3d8c:
    if (uVar7 == *(ulong *)(param_1 + 0x18)) {
      auVar2._8_8_ = 0;
      auVar2._0_8_ = uVar7;
      return auVar2 << 0x40;
    }
    uVar6 = thunk_FUN_002dbfd0(uVar7);
    uVar8 = *(ulong *)(uVar6 + 0x28);
    __s2 = *(void **)(uVar6 + 0x20);
    uVar10 = param_2[1];
    __s1 = (void *)*param_2;
    __n = uVar8;
    if (uVar10 <= uVar8) {
      __n = uVar10;
    }
  }
  else {
    uVar10 = param_2[1];
    __s1 = (void *)*param_2;
    uVar6 = *(ulong *)(param_1 + 0x10);
    do {
      uVar7 = uVar6;
      uVar8 = *(ulong *)(uVar7 + 0x28);
      __s2 = *(void **)(uVar7 + 0x20);
      __n = uVar8;
      if (uVar10 <= uVar8) {
        __n = uVar10;
      }
      if (__n == 0) {
LAB_001f3cf2:
        uVar6 = uVar10 - uVar8;
        if ((long)uVar6 < 0x80000000) {
          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;
          goto LAB_001f3cb8;
        }
LAB_001f3d0c:
        uVar6 = *(ulong *)(uVar7 + 0x18);
        bVar3 = false;
      }
      else {
        uVar4 = memcmp(__s1,__s2,__n);
        uVar6 = (ulong)uVar4;
        if (uVar4 == 0) goto LAB_001f3cf2;
LAB_001f3d08:
        if (-1 < (int)uVar6) goto LAB_001f3d0c;
LAB_001f3cb8:
        uVar6 = *(ulong *)(uVar7 + 0x10);
        bVar3 = true;
      }
    } while (uVar6 != 0);
    uVar6 = uVar7;
    if (bVar3) goto LAB_001f3d8c;
  }
  if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {
    lVar9 = uVar8 - uVar10;
    if (0x7fffffff < lVar9) goto LAB_001f3d5a;
    if (lVar9 < -0x80000000) goto LAB_001f3d70;
    iVar5 = (int)lVar9;
  }
  if (iVar5 < 0) {
LAB_001f3d70:
    auVar1._8_8_ = 0;
    auVar1._0_8_ = uVar7;
    return auVar1 << 0x40;
  }
LAB_001f3d5a:
  auVar11._8_8_ = 0;
  auVar11._0_8_ = uVar6;
  return auVar11;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x18
MOV RBX,qword ptr [RDI + 0x10]
MOV qword ptr [RSP + 0x8],RDI
MOV qword ptr [RSP],RSI
TEST RBX,RBX
JZ 0x001f3d88
MOV RAX,qword ptr [RSP]
MOV R15,qword ptr [RAX + 0x8]
MOV RBP,qword ptr [RAX]
JMP 0x001f3cc9
MOV RAX,qword ptr [RBX + 0x10]
MOV ESI,0x1
TEST RAX,RAX
JZ 0x001f3d17
MOV RBX,RAX
MOV R14,qword ptr [RBX + 0x28]
MOV R13,qword ptr [RBX + 0x20]
CMP R15,R14
MOV R12,R14
CMOVBE R12,R15
TEST R12,R12
JZ 0x001f3cf2
MOV RDX,R12
MOV RSI,R13
MOV RDI,RBP
CALL 0x00147840
TEST EAX,EAX
JNZ 0x001f3d08
MOV RAX,R15
SUB RAX,R14
CMP RAX,0x7fffffff
JG 0x001f3d0c
CMP RAX,-0x80000000
JL 0x001f3cb8
TEST EAX,EAX
JS 0x001f3cb8
MOV RAX,qword ptr [RBX + 0x18]
XOR ESI,ESI
TEST RAX,RAX
JNZ 0x001f3cc6
MOV R9,RBX
TEST SIL,SIL
JNZ 0x001f3d8c
TEST R12,R12
JZ 0x001f3d3e
MOV RDX,R12
MOV RSI,RBP
MOV RDI,R13
MOV qword ptr [RSP],R9
CALL 0x00147840
MOV R9,qword ptr [RSP]
TEST EAX,EAX
JNZ 0x001f3d56
SUB R14,R15
CMP R14,0x7fffffff
JG 0x001f3d5a
CMP R14,-0x80000000
JL 0x001f3d70
MOV EAX,R14D
TEST EAX,EAX
JS 0x001f3d70
ADD RSP,0x18
MOV RAX,RBX
XOR EDX,EDX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
ADD RSP,0x18
XOR EAX,EAX
MOV RDX,R9
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA RBX,[RDI + 0x8]
MOV RAX,qword ptr [RSP + 0x8]
CMP RBX,qword ptr [RAX + 0x18]
JZ 0x001f3dd0
MOV RDI,RBX
CALL 0x002dc090
MOV RCX,qword ptr [RSP]
MOV R9,RBX
MOV R14,qword ptr [RAX + 0x28]
MOV R13,qword ptr [RAX + 0x20]
MOV RBX,RAX
MOV R15,qword ptr [RCX + 0x8]
MOV RBP,qword ptr [RCX]
MOV R12,R14
CMP R15,R14
CMOVBE R12,R15
JMP 0x001f3d1f
ADD RSP,0x18
MOV RDX,RBX
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
(translation_unit "undefined1  [16] FUN_001f3c80(long param_1,undefined8 *param_2)\n\n{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  bool bVar3;\n  uint uVar4;\n  int iVar5;\n  ulong uVar6;\n  ulong uVar7;\n  void *__s1;\n  size_t __n;\n  void *__s2;\n  ulong uVar8;\n  long lVar9;\n  ulong uVar10;\n  undefined1 auVar11 [16];\n  \n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = param_1 + 8;\nLAB_001f3d8c:\n    if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }\n    uVar6 = thunk_FUN_002dbfd0(uVar7);\n    uVar8 = *(ulong *)(uVar6 + 0x28);\n    __s2 = *(void **)(uVar6 + 0x20);\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    __n = uVar8;\n    if (uVar10 <= uVar8) {\n      __n = uVar10;\n    }\n  }\n  else {\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar7;\n    if (bVar3) goto LAB_001f3d8c;\n  }\n  if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n    lVar9 = uVar8 - uVar10;\n    if (0x7fffffff < lVar9) goto LAB_001f3d5a;\n    if (lVar9 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar9;\n  }\n  if (iVar5 < 0) {\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uVar7;\n    return auVar1 << 0x40;\n  }\nLAB_001f3d5a:\n  auVar11._8_8_ = 0;\n  auVar11._0_8_ = uVar6;\n  return auVar11;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (macro_type_specifier "FUN_001f3c80(long param_1,undefined8 *param_2)" identifier ( (ERROR "long param_1,undefined8 *" (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) , (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *))) (type_descriptor "param_2" type_identifier) )) ; (compound_statement "{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  bool bVar3;\n  uint uVar4;\n  int iVar5;\n  ulong uVar6;\n  ulong uVar7;\n  void *__s1;\n  size_t __n;\n  void *__s2;\n  ulong uVar8;\n  long lVar9;\n  ulong uVar10;\n  undefined1 auVar11 [16];\n  \n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = param_1 + 8;\nLAB_001f3d8c:\n    if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }\n    uVar6 = thunk_FUN_002dbfd0(uVar7);\n    uVar8 = *(ulong *)(uVar6 + 0x28);\n    __s2 = *(void **)(uVar6 + 0x20);\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    __n = uVar8;\n    if (uVar10 <= uVar8) {\n      __n = uVar10;\n    }\n  }\n  else {\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar7;\n    if (bVar3) goto LAB_001f3d8c;\n  }\n  if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n    lVar9 = uVar8 - uVar10;\n    if (0x7fffffff < lVar9) goto LAB_001f3d5a;\n    if (lVar9 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar9;\n  }\n  if (iVar5 < 0) {\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uVar7;\n    return auVar1 << 0x40;\n  }\nLAB_001f3d5a:\n  auVar11._8_8_ = 0;\n  auVar11._0_8_ = uVar6;\n  return auVar11;\n}" { (declaration "undefined1 auVar1 [16];" type_identifier (array_declarator "auVar1 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar2 [16];" type_identifier (array_declarator "auVar2 [16]" identifier [ number_literal ]) ;) (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 "ulong uVar7;" type_identifier identifier ;) (declaration "void *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "void *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "undefined1 auVar11 [16];" type_identifier (array_declarator "auVar11 [16]" identifier [ number_literal ]) ;) (if_statement "if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = param_1 + 8;\nLAB_001f3d8c:\n    if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }\n    uVar6 = thunk_FUN_002dbfd0(uVar7);\n    uVar8 = *(ulong *)(uVar6 + 0x28);\n    __s2 = *(void **)(uVar6 + 0x20);\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    __n = uVar8;\n    if (uVar10 <= uVar8) {\n      __n = uVar10;\n    }\n  }\n  else {\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar7;\n    if (bVar3) goto LAB_001f3d8c;\n  }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x10) == 0)" ( (binary_expression "*(ulong *)(param_1 + 0x10) == 0" (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) )))) == number_literal) )) (compound_statement "{\n    uVar7 = param_1 + 8;\nLAB_001f3d8c:\n    if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }\n    uVar6 = thunk_FUN_002dbfd0(uVar7);\n    uVar8 = *(ulong *)(uVar6 + 0x28);\n    __s2 = *(void **)(uVar6 + 0x20);\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    __n = uVar8;\n    if (uVar10 <= uVar8) {\n      __n = uVar10;\n    }\n  }" { (expression_statement "uVar7 = param_1 + 8;" (assignment_expression "uVar7 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (labeled_statement "LAB_001f3d8c:\n    if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }" statement_identifier : (if_statement "if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }" if (parenthesized_expression "(uVar7 == *(ulong *)(param_1 + 0x18))" ( (binary_expression "uVar7 == *(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      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }" { (expression_statement "auVar2._8_8_ = 0;" (assignment_expression "auVar2._8_8_ = 0" (field_expression "auVar2._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar2._0_8_ = uVar7;" (assignment_expression "auVar2._0_8_ = uVar7" (field_expression "auVar2._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar2 << 0x40;" return (binary_expression "auVar2 << 0x40" identifier << number_literal) ;) }))) (expression_statement "uVar6 = thunk_FUN_002dbfd0(uVar7);" (assignment_expression "uVar6 = thunk_FUN_002dbfd0(uVar7)" identifier = (call_expression "thunk_FUN_002dbfd0(uVar7)" identifier (argument_list "(uVar7)" ( 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 "uVar10 = param_2[1];" (assignment_expression "uVar10 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "__s1 = (void *)*param_2;" (assignment_expression "__s1 = (void *)*param_2" identifier = (cast_expression "(void *)*param_2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "__n = uVar8;" (assignment_expression "__n = uVar8" identifier = identifier) ;) (if_statement "if (uVar10 <= uVar8) {\n      __n = uVar10;\n    }" if (parenthesized_expression "(uVar10 <= uVar8)" ( (binary_expression "uVar10 <= uVar8" identifier <= identifier) )) (compound_statement "{\n      __n = uVar10;\n    }" { (expression_statement "__n = uVar10;" (assignment_expression "__n = uVar10" identifier = identifier) ;) })) }) (else_clause "else {\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar7;\n    if (bVar3) goto LAB_001f3d8c;\n  }" else (compound_statement "{\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar7;\n    if (bVar3) goto LAB_001f3d8c;\n  }" { (expression_statement "uVar10 = param_2[1];" (assignment_expression "uVar10 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "__s1 = (void *)*param_2;" (assignment_expression "__s1 = (void *)*param_2" identifier = (cast_expression "(void *)*param_2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (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) ))))) ;) (do_statement "do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);" do (compound_statement "{\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    }" { (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) (expression_statement "uVar8 = *(ulong *)(uVar7 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(uVar7 + 0x28)" identifier = (pointer_expression "*(ulong *)(uVar7 + 0x28)" * (cast_expression "(ulong *)(uVar7 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x28)" ( (binary_expression "uVar7 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "__s2 = *(void **)(uVar7 + 0x20);" (assignment_expression "__s2 = *(void **)(uVar7 + 0x20)" identifier = (pointer_expression "*(void **)(uVar7 + 0x20)" * (cast_expression "(void **)(uVar7 + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar7 + 0x20)" ( (binary_expression "uVar7 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "__n = uVar8;" (assignment_expression "__n = uVar8" identifier = identifier) ;) (if_statement "if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }" if (parenthesized_expression "(uVar10 <= uVar8)" ( (binary_expression "uVar10 <= uVar8" identifier <= identifier) )) (compound_statement "{\n        __n = uVar10;\n      }" { (expression_statement "__n = uVar10;" (assignment_expression "__n = uVar10" identifier = identifier) ;) })) (if_statement "if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }" if (parenthesized_expression "(__n == 0)" ( (binary_expression "__n == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }" { (labeled_statement "LAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;" statement_identifier : (expression_statement "uVar6 = uVar10 - uVar8;" (assignment_expression "uVar6 = uVar10 - uVar8" identifier = (binary_expression "uVar10 - uVar8" identifier - identifier)) ;)) (if_statement "if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\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_001f3d08;\n          goto LAB_001f3cb8;\n        }" { (if_statement "if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;" 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_001f3d08;" goto statement_identifier ;)) (goto_statement "goto LAB_001f3cb8;" goto statement_identifier ;) })) (labeled_statement "LAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);" statement_identifier : (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x18);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar7 + 0x18)" * (cast_expression "(ulong *)(uVar7 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x18)" ( (binary_expression "uVar7 + 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_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }" else (compound_statement "{\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 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_001f3cf2;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001f3cf2;" goto statement_identifier ;)) (labeled_statement "LAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;" statement_identifier : (if_statement "if (-1 < (int)uVar6) goto LAB_001f3d0c;" 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_001f3d0c;" goto statement_identifier ;))) (labeled_statement "LAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);" statement_identifier : (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar7 + 0x10)" * (cast_expression "(ulong *)(uVar7 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x10)" ( (binary_expression "uVar7 + 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 = uVar7;" (assignment_expression "uVar6 = uVar7" identifier = identifier) ;) (if_statement "if (bVar3) goto LAB_001f3d8c;" if (parenthesized_expression "(bVar3)" ( identifier )) (goto_statement "goto LAB_001f3d8c;" goto statement_identifier ;)) }))) (if_statement "if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n    lVar9 = uVar8 - uVar10;\n    if (0x7fffffff < lVar9) goto LAB_001f3d5a;\n    if (lVar9 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar9;\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    lVar9 = uVar8 - uVar10;\n    if (0x7fffffff < lVar9) goto LAB_001f3d5a;\n    if (lVar9 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar9;\n  }" { (expression_statement "lVar9 = uVar8 - uVar10;" (assignment_expression "lVar9 = uVar8 - uVar10" identifier = (binary_expression "uVar8 - uVar10" identifier - identifier)) ;) (if_statement "if (0x7fffffff < lVar9) goto LAB_001f3d5a;" if (parenthesized_expression "(0x7fffffff < lVar9)" ( (binary_expression "0x7fffffff < lVar9" number_literal < identifier) )) (goto_statement "goto LAB_001f3d5a;" goto statement_identifier ;)) (if_statement "if (lVar9 < -0x80000000) goto LAB_001f3d70;" if (parenthesized_expression "(lVar9 < -0x80000000)" ( (binary_expression "lVar9 < -0x80000000" identifier < number_literal) )) (goto_statement "goto LAB_001f3d70;" goto statement_identifier ;)) (expression_statement "iVar5 = (int)lVar9;" (assignment_expression "iVar5 = (int)lVar9" identifier = (cast_expression "(int)lVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (if_statement "if (iVar5 < 0) {\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uVar7;\n    return auVar1 << 0x40;\n  }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uVar7;\n    return auVar1 << 0x40;\n  }" { (labeled_statement "LAB_001f3d70:\n    auVar1._8_8_ = 0;" statement_identifier : (expression_statement "auVar1._8_8_ = 0;" (assignment_expression "auVar1._8_8_ = 0" (field_expression "auVar1._8_8_" identifier . field_identifier) = number_literal) ;)) (expression_statement "auVar1._0_8_ = uVar7;" (assignment_expression "auVar1._0_8_ = uVar7" (field_expression "auVar1._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar1 << 0x40;" return (binary_expression "auVar1 << 0x40" identifier << number_literal) ;) })) (labeled_statement "LAB_001f3d5a:\n  auVar11._8_8_ = 0;" statement_identifier : (expression_statement "auVar11._8_8_ = 0;" (assignment_expression "auVar11._8_8_ = 0" (field_expression "auVar11._8_8_" identifier . field_identifier) = number_literal) ;)) (expression_statement "auVar11._0_8_ = uVar6;" (assignment_expression "auVar11._0_8_ = uVar6" (field_expression "auVar11._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar11;" return identifier ;) }))
(translation_unit "/* DWARF original prototype: pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>\n   _M_get_insert_unique_pos(_Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>\n   * this, key_type * __k) */\n\npair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> __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>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>\n::_M_get_insert_unique_pos\n          (_Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>\n           *this,key_type *__k)\n\n{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  bool bVar3;\n  uint uVar4;\n  int iVar5;\n  ulong uVar6;\n  _Rb_tree_node_base *p_Var7;\n  _Rb_tree_node_base *p_Var8;\n  pointer __s1;\n  _Base_ptr __n;\n  void *__s2;\n  _Base_ptr p_Var9;\n  long lVar10;\n  _Base_ptr p_Var11;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar12;\n  \n  p_Var7 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  if (p_Var7 == (_Rb_tree_node_base *)0x0) {\n    p_Var8 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_001f3d8c:\n    if (p_Var8 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = p_Var8;\n      return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar2 << 0x40);\n    }\n    p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8);\n    p_Var9 = p_Var7[1]._M_parent;\n    __s2 = *(void **)(p_Var7 + 1);\n    p_Var11 = (_Base_ptr)__k->_M_string_length;\n    __s1 = (__k->_M_dataplus)._M_p;\n    __n = p_Var9;\n    if (p_Var11 <= p_Var9) {\n      __n = p_Var11;\n    }\n  }\n  else {\n    p_Var11 = (_Base_ptr)__k->_M_string_length;\n    __s1 = (__k->_M_dataplus)._M_p;\n    do {\n      p_Var8 = p_Var7;\n      p_Var9 = p_Var8[1]._M_parent;\n      __s2 = *(void **)(p_Var8 + 1);\n      __n = p_Var9;\n      if (p_Var11 <= p_Var9) {\n        __n = p_Var11;\n      }\n      if (__n == (_Base_ptr)0x0) {\nLAB_001f3cf2:\n        uVar6 = (long)p_Var11 - (long)p_Var9;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        p_Var7 = p_Var8->_M_right;\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,(size_t)__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        p_Var7 = p_Var8->_M_left;\n        bVar3 = true;\n      }\n    } while (p_Var7 != (_Base_ptr)0x0);\n    p_Var7 = p_Var8;\n    if (bVar3) goto LAB_001f3d8c;\n  }\n  if ((__n == (_Base_ptr)0x0) || (iVar5 = memcmp(__s2,__s1,(size_t)__n), iVar5 == 0)) {\n    lVar10 = (long)p_Var9 - (long)p_Var11;\n    if (0x7fffffff < lVar10) goto LAB_001f3d5a;\n    if (lVar10 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar10;\n  }\n  if (iVar5 < 0) {\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = p_Var8;\n    return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar1 << 0x40);\n  }\nLAB_001f3d5a:\n  pVar12.second = (_Rb_tree_node_base *)0x0;\n  pVar12.first = p_Var7;\n  return pVar12;\n}\n\n" comment (ERROR "pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_node_base*,_std" identifier * (ERROR "," ,) identifier) : : identifier * >) (function_definition "__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>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>\n::_M_get_insert_unique_pos\n          (_Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>\n           *this,key_type *__k)\n\n{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  bool bVar3;\n  uint uVar4;\n  int iVar5;\n  ulong uVar6;\n  _Rb_tree_node_base *p_Var7;\n  _Rb_tree_node_base *p_Var8;\n  pointer __s1;\n  _Base_ptr __n;\n  void *__s2;\n  _Base_ptr p_Var9;\n  long lVar10;\n  _Base_ptr p_Var11;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar12;\n  \n  p_Var7 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  if (p_Var7 == (_Rb_tree_node_base *)0x0) {\n    p_Var8 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_001f3d8c:\n    if (p_Var8 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = p_Var8;\n      return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar2 << 0x40);\n    }\n    p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8);\n    p_Var9 = p_Var7[1]._M_parent;\n    __s2 = *(void **)(p_Var7 + 1);\n    p_Var11 = (_Base_ptr)__k->_M_string_length;\n    __s1 = (__k->_M_dataplus)._M_p;\n    __n = p_Var9;\n    if (p_Var11 <= p_Var9) {\n      __n = p_Var11;\n    }\n  }\n  else {\n    p_Var11 = (_Base_ptr)__k->_M_string_length;\n    __s1 = (__k->_M_dataplus)._M_p;\n    do {\n      p_Var8 = p_Var7;\n      p_Var9 = p_Var8[1]._M_parent;\n      __s2 = *(void **)(p_Var8 + 1);\n      __n = p_Var9;\n      if (p_Var11 <= p_Var9) {\n        __n = p_Var11;\n      }\n      if (__n == (_Base_ptr)0x0) {\nLAB_001f3cf2:\n        uVar6 = (long)p_Var11 - (long)p_Var9;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        p_Var7 = p_Var8->_M_right;\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,(size_t)__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        p_Var7 = p_Var8->_M_left;\n        bVar3 = true;\n      }\n    } while (p_Var7 != (_Base_ptr)0x0);\n    p_Var7 = p_Var8;\n    if (bVar3) goto LAB_001f3d8c;\n  }\n  if ((__n == (_Base_ptr)0x0) || (iVar5 = memcmp(__s2,__s1,(size_t)__n), iVar5 == 0)) {\n    lVar10 = (long)p_Var9 - (long)p_Var11;\n    if (0x7fffffff < lVar10) goto LAB_001f3d5a;\n    if (lVar10 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar10;\n  }\n  if (iVar5 < 0) {\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = p_Var8;\n    return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar1 << 0x40);\n  }\nLAB_001f3d5a:\n  pVar12.second = (_Rb_tree_node_base *)0x0;\n  pVar12.first = p_Var7;\n  return pVar12;\n}" (ms_call_modifier "__thiscall" __thiscall) type_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>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>\n::" : : identifier < identifier : : identifier : : identifier < primitive_type , identifier : : identifier < primitive_type > , identifier : : identifier < primitive_type > identifier > , identifier : : identifier < identifier : : identifier : : identifier < primitive_type , identifier : : identifier < primitive_type > , identifier : : identifier < primitive_type > identifier > , identifier > , identifier : : identifier < identifier : : identifier < identifier : : identifier : : identifier < primitive_type , identifier : : identifier < primitive_type > , identifier : : identifier < primitive_type > identifier > , identifier > identifier > , identifier : : identifier < identifier : : identifier : : identifier < primitive_type , identifier : : identifier < primitive_type > , identifier : : identifier < primitive_type > identifier > identifier > , identifier : : identifier < identifier : : identifier < identifier : : identifier : : identifier < primitive_type , identifier : : identifier < primitive_type > , identifier : : identifier < primitive_type > identifier > , identifier > identifier > identifier > : :) (function_declarator "_M_get_insert_unique_pos\n          (_Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>\n           *this,key_type *__k)" identifier (parameter_list "(_Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>\n           *this,key_type *__k)" ( (parameter_declaration "_Rb_tree<std::__cxx11::basic_string" type_identifier (ERROR "<std::__cxx11::" < identifier : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_" type_identifier (ERROR "::allocator<char>" : : identifier < primitive_type >) identifier) (ERROR ">" >) , (parameter_declaration "_std::pair<const_std::__cxx11::basic_string" type_identifier (ERROR "::pair<const_std::__cxx11::" : : identifier < identifier : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_" type_identifier (ERROR "::allocator<char>" : : identifier < primitive_type >) identifier) (ERROR ">" >) , (parameter_declaration "_long_unsigned_int" type_identifier) (ERROR ">" >) , (parameter_declaration "_std::_Select1st<std::pair<const_std::__cxx11::basic_string" type_identifier (ERROR "::_Select1st<std::pair<const_std::__cxx11::" : : identifier < identifier : : identifier < identifier : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_" type_identifier (ERROR "::allocator<char>" : : identifier < primitive_type >) identifier) (ERROR ">" >) , (parameter_declaration "_long_unsigned_int>_" type_identifier (ERROR ">" >) identifier) (ERROR ">" >) , (parameter_declaration "_std::less<std::__cxx11::basic_string" type_identifier (ERROR "::less<std::__cxx11::" : : identifier < identifier : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_>_" type_identifier (ERROR "::allocator<char>_>" : : identifier < primitive_type > identifier >) identifier) (ERROR ">" >) , (parameter_declaration "_std::allocator<std::pair<const_std::__cxx11::basic_string" type_identifier (ERROR "::allocator<std::pair<const_std::__cxx11::" : : identifier < identifier : : identifier < identifier : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_" type_identifier (ERROR "::allocator<char>" : : identifier < primitive_type >) identifier) (ERROR ">" >) , (parameter_declaration "_long_unsigned_int>_>_>\n           *this" type_identifier (ERROR ">_>_>" > identifier > identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "key_type *__k" type_identifier (pointer_declarator "*__k" * identifier)) ))) (compound_statement "{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  bool bVar3;\n  uint uVar4;\n  int iVar5;\n  ulong uVar6;\n  _Rb_tree_node_base *p_Var7;\n  _Rb_tree_node_base *p_Var8;\n  pointer __s1;\n  _Base_ptr __n;\n  void *__s2;\n  _Base_ptr p_Var9;\n  long lVar10;\n  _Base_ptr p_Var11;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar12;\n  \n  p_Var7 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  if (p_Var7 == (_Rb_tree_node_base *)0x0) {\n    p_Var8 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_001f3d8c:\n    if (p_Var8 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = p_Var8;\n      return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar2 << 0x40);\n    }\n    p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8);\n    p_Var9 = p_Var7[1]._M_parent;\n    __s2 = *(void **)(p_Var7 + 1);\n    p_Var11 = (_Base_ptr)__k->_M_string_length;\n    __s1 = (__k->_M_dataplus)._M_p;\n    __n = p_Var9;\n    if (p_Var11 <= p_Var9) {\n      __n = p_Var11;\n    }\n  }\n  else {\n    p_Var11 = (_Base_ptr)__k->_M_string_length;\n    __s1 = (__k->_M_dataplus)._M_p;\n    do {\n      p_Var8 = p_Var7;\n      p_Var9 = p_Var8[1]._M_parent;\n      __s2 = *(void **)(p_Var8 + 1);\n      __n = p_Var9;\n      if (p_Var11 <= p_Var9) {\n        __n = p_Var11;\n      }\n      if (__n == (_Base_ptr)0x0) {\nLAB_001f3cf2:\n        uVar6 = (long)p_Var11 - (long)p_Var9;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        p_Var7 = p_Var8->_M_right;\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,(size_t)__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        p_Var7 = p_Var8->_M_left;\n        bVar3 = true;\n      }\n    } while (p_Var7 != (_Base_ptr)0x0);\n    p_Var7 = p_Var8;\n    if (bVar3) goto LAB_001f3d8c;\n  }\n  if ((__n == (_Base_ptr)0x0) || (iVar5 = memcmp(__s2,__s1,(size_t)__n), iVar5 == 0)) {\n    lVar10 = (long)p_Var9 - (long)p_Var11;\n    if (0x7fffffff < lVar10) goto LAB_001f3d5a;\n    if (lVar10 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar10;\n  }\n  if (iVar5 < 0) {\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = p_Var8;\n    return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar1 << 0x40);\n  }\nLAB_001f3d5a:\n  pVar12.second = (_Rb_tree_node_base *)0x0;\n  pVar12.first = p_Var7;\n  return pVar12;\n}" { (declaration "undefined1 auVar1 [16];" type_identifier (array_declarator "auVar1 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar2 [16];" type_identifier (array_declarator "auVar2 [16]" identifier [ number_literal ]) ;) (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 "_Rb_tree_node_base *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var8;" type_identifier (pointer_declarator "*p_Var8" * identifier) ;) (declaration "pointer __s1;" type_identifier identifier ;) (declaration "_Base_ptr __n;" type_identifier identifier ;) (declaration "void *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "_Base_ptr p_Var9;" type_identifier identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "_Base_ptr p_Var11;" type_identifier identifier ;) (ERROR "pair<std::_Rb_tree_node_base*,_std::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_node_base*,_std" identifier * (ERROR "," ,) identifier) : :) (expression_statement "_Rb_tree_node_base*> pVar12;" (binary_expression "_Rb_tree_node_base*> pVar12" identifier * (ERROR ">" >) identifier) ;) (expression_statement "p_Var7 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var7 = (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)) ;) (if_statement "if (p_Var7 == (_Rb_tree_node_base *)0x0) {\n    p_Var8 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_001f3d8c:\n    if (p_Var8 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = p_Var8;\n      return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar2 << 0x40);\n    }\n    p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8);\n    p_Var9 = p_Var7[1]._M_parent;\n    __s2 = *(void **)(p_Var7 + 1);\n    p_Var11 = (_Base_ptr)__k->_M_string_length;\n    __s1 = (__k->_M_dataplus)._M_p;\n    __n = p_Var9;\n    if (p_Var11 <= p_Var9) {\n      __n = p_Var11;\n    }\n  }\n  else {\n    p_Var11 = (_Base_ptr)__k->_M_string_length;\n    __s1 = (__k->_M_dataplus)._M_p;\n    do {\n      p_Var8 = p_Var7;\n      p_Var9 = p_Var8[1]._M_parent;\n      __s2 = *(void **)(p_Var8 + 1);\n      __n = p_Var9;\n      if (p_Var11 <= p_Var9) {\n        __n = p_Var11;\n      }\n      if (__n == (_Base_ptr)0x0) {\nLAB_001f3cf2:\n        uVar6 = (long)p_Var11 - (long)p_Var9;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        p_Var7 = p_Var8->_M_right;\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,(size_t)__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        p_Var7 = p_Var8->_M_left;\n        bVar3 = true;\n      }\n    } while (p_Var7 != (_Base_ptr)0x0);\n    p_Var7 = p_Var8;\n    if (bVar3) goto LAB_001f3d8c;\n  }" if (parenthesized_expression "(p_Var7 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var7 == (_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_Var8 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_001f3d8c:\n    if (p_Var8 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = p_Var8;\n      return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar2 << 0x40);\n    }\n    p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8);\n    p_Var9 = p_Var7[1]._M_parent;\n    __s2 = *(void **)(p_Var7 + 1);\n    p_Var11 = (_Base_ptr)__k->_M_string_length;\n    __s1 = (__k->_M_dataplus)._M_p;\n    __n = p_Var9;\n    if (p_Var11 <= p_Var9) {\n      __n = p_Var11;\n    }\n  }" { (expression_statement "p_Var8 = &(this->_M_impl).super__Rb_tree_header._M_header;" (assignment_expression "p_Var8 = &(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_001f3d8c:\n    if (p_Var8 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = p_Var8;\n      return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar2 << 0x40);\n    }" statement_identifier : (if_statement "if (p_Var8 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = p_Var8;\n      return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar2 << 0x40);\n    }" if (parenthesized_expression "(p_Var8 == (this->_M_impl).super__Rb_tree_header._M_header._M_left)" ( (binary_expression "p_Var8 == (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      auVar2._8_8_ = 0;\n      auVar2._0_8_ = p_Var8;\n      return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar2 << 0x40);\n    }" { (expression_statement "auVar2._8_8_ = 0;" (assignment_expression "auVar2._8_8_ = 0" (field_expression "auVar2._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar2._0_8_ = p_Var8;" (assignment_expression "auVar2._0_8_ = p_Var8" (field_expression "auVar2._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar2 << 0x40);" return (call_expression "(pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar2 << 0x40)" (parenthesized_expression "(pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)" ( (ERROR "pair<std::_Rb_tree_node_base*,_std::" (binary_expression "pair<std" identifier < identifier) : : (type_descriptor "_Rb_tree_node_base*" type_identifier (abstract_pointer_declarator "*" *)) , identifier : :) identifier (ERROR "*>" * >) )) (argument_list "(auVar2 << 0x40)" ( (binary_expression "auVar2 << 0x40" identifier << number_literal) ))) ;) }))) (expression_statement "p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8);" (assignment_expression "p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8)" identifier = (cast_expression "(_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8)" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "_Rb_tree_decrement(p_Var8)" identifier (argument_list "(p_Var8)" ( identifier ))))) ;) (expression_statement "p_Var9 = p_Var7[1]._M_parent;" (assignment_expression "p_Var9 = p_Var7[1]._M_parent" identifier = (field_expression "p_Var7[1]._M_parent" (subscript_expression "p_Var7[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "__s2 = *(void **)(p_Var7 + 1);" (assignment_expression "__s2 = *(void **)(p_Var7 + 1)" identifier = (pointer_expression "*(void **)(p_Var7 + 1)" * (cast_expression "(void **)(p_Var7 + 1)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var7 + 1)" ( (binary_expression "p_Var7 + 1" identifier + number_literal) ))))) ;) (expression_statement "p_Var11 = (_Base_ptr)__k->_M_string_length;" (assignment_expression "p_Var11 = (_Base_ptr)__k->_M_string_length" identifier = (cast_expression "(_Base_ptr)__k->_M_string_length" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "__k->_M_string_length" identifier -> field_identifier))) ;) (expression_statement "__s1 = (__k->_M_dataplus)._M_p;" (assignment_expression "__s1 = (__k->_M_dataplus)._M_p" identifier = (field_expression "(__k->_M_dataplus)._M_p" (parenthesized_expression "(__k->_M_dataplus)" ( (field_expression "__k->_M_dataplus" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "__n = p_Var9;" (assignment_expression "__n = p_Var9" identifier = identifier) ;) (if_statement "if (p_Var11 <= p_Var9) {\n      __n = p_Var11;\n    }" if (parenthesized_expression "(p_Var11 <= p_Var9)" ( (binary_expression "p_Var11 <= p_Var9" identifier <= identifier) )) (compound_statement "{\n      __n = p_Var11;\n    }" { (expression_statement "__n = p_Var11;" (assignment_expression "__n = p_Var11" identifier = identifier) ;) })) }) (else_clause "else {\n    p_Var11 = (_Base_ptr)__k->_M_string_length;\n    __s1 = (__k->_M_dataplus)._M_p;\n    do {\n      p_Var8 = p_Var7;\n      p_Var9 = p_Var8[1]._M_parent;\n      __s2 = *(void **)(p_Var8 + 1);\n      __n = p_Var9;\n      if (p_Var11 <= p_Var9) {\n        __n = p_Var11;\n      }\n      if (__n == (_Base_ptr)0x0) {\nLAB_001f3cf2:\n        uVar6 = (long)p_Var11 - (long)p_Var9;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        p_Var7 = p_Var8->_M_right;\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,(size_t)__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        p_Var7 = p_Var8->_M_left;\n        bVar3 = true;\n      }\n    } while (p_Var7 != (_Base_ptr)0x0);\n    p_Var7 = p_Var8;\n    if (bVar3) goto LAB_001f3d8c;\n  }" else (compound_statement "{\n    p_Var11 = (_Base_ptr)__k->_M_string_length;\n    __s1 = (__k->_M_dataplus)._M_p;\n    do {\n      p_Var8 = p_Var7;\n      p_Var9 = p_Var8[1]._M_parent;\n      __s2 = *(void **)(p_Var8 + 1);\n      __n = p_Var9;\n      if (p_Var11 <= p_Var9) {\n        __n = p_Var11;\n      }\n      if (__n == (_Base_ptr)0x0) {\nLAB_001f3cf2:\n        uVar6 = (long)p_Var11 - (long)p_Var9;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        p_Var7 = p_Var8->_M_right;\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,(size_t)__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        p_Var7 = p_Var8->_M_left;\n        bVar3 = true;\n      }\n    } while (p_Var7 != (_Base_ptr)0x0);\n    p_Var7 = p_Var8;\n    if (bVar3) goto LAB_001f3d8c;\n  }" { (expression_statement "p_Var11 = (_Base_ptr)__k->_M_string_length;" (assignment_expression "p_Var11 = (_Base_ptr)__k->_M_string_length" identifier = (cast_expression "(_Base_ptr)__k->_M_string_length" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "__k->_M_string_length" identifier -> field_identifier))) ;) (expression_statement "__s1 = (__k->_M_dataplus)._M_p;" (assignment_expression "__s1 = (__k->_M_dataplus)._M_p" identifier = (field_expression "(__k->_M_dataplus)._M_p" (parenthesized_expression "(__k->_M_dataplus)" ( (field_expression "__k->_M_dataplus" identifier -> field_identifier) )) . field_identifier)) ;) (do_statement "do {\n      p_Var8 = p_Var7;\n      p_Var9 = p_Var8[1]._M_parent;\n      __s2 = *(void **)(p_Var8 + 1);\n      __n = p_Var9;\n      if (p_Var11 <= p_Var9) {\n        __n = p_Var11;\n      }\n      if (__n == (_Base_ptr)0x0) {\nLAB_001f3cf2:\n        uVar6 = (long)p_Var11 - (long)p_Var9;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        p_Var7 = p_Var8->_M_right;\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,(size_t)__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        p_Var7 = p_Var8->_M_left;\n        bVar3 = true;\n      }\n    } while (p_Var7 != (_Base_ptr)0x0);" do (compound_statement "{\n      p_Var8 = p_Var7;\n      p_Var9 = p_Var8[1]._M_parent;\n      __s2 = *(void **)(p_Var8 + 1);\n      __n = p_Var9;\n      if (p_Var11 <= p_Var9) {\n        __n = p_Var11;\n      }\n      if (__n == (_Base_ptr)0x0) {\nLAB_001f3cf2:\n        uVar6 = (long)p_Var11 - (long)p_Var9;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        p_Var7 = p_Var8->_M_right;\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,(size_t)__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        p_Var7 = p_Var8->_M_left;\n        bVar3 = true;\n      }\n    }" { (expression_statement "p_Var8 = p_Var7;" (assignment_expression "p_Var8 = p_Var7" identifier = identifier) ;) (expression_statement "p_Var9 = p_Var8[1]._M_parent;" (assignment_expression "p_Var9 = p_Var8[1]._M_parent" identifier = (field_expression "p_Var8[1]._M_parent" (subscript_expression "p_Var8[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "__s2 = *(void **)(p_Var8 + 1);" (assignment_expression "__s2 = *(void **)(p_Var8 + 1)" identifier = (pointer_expression "*(void **)(p_Var8 + 1)" * (cast_expression "(void **)(p_Var8 + 1)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var8 + 1)" ( (binary_expression "p_Var8 + 1" identifier + number_literal) ))))) ;) (expression_statement "__n = p_Var9;" (assignment_expression "__n = p_Var9" identifier = identifier) ;) (if_statement "if (p_Var11 <= p_Var9) {\n        __n = p_Var11;\n      }" if (parenthesized_expression "(p_Var11 <= p_Var9)" ( (binary_expression "p_Var11 <= p_Var9" identifier <= identifier) )) (compound_statement "{\n        __n = p_Var11;\n      }" { (expression_statement "__n = p_Var11;" (assignment_expression "__n = p_Var11" identifier = identifier) ;) })) (if_statement "if (__n == (_Base_ptr)0x0) {\nLAB_001f3cf2:\n        uVar6 = (long)p_Var11 - (long)p_Var9;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        p_Var7 = p_Var8->_M_right;\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,(size_t)__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        p_Var7 = p_Var8->_M_left;\n        bVar3 = true;\n      }" if (parenthesized_expression "(__n == (_Base_ptr)0x0)" ( (binary_expression "__n == (_Base_ptr)0x0" identifier == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\nLAB_001f3cf2:\n        uVar6 = (long)p_Var11 - (long)p_Var9;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        p_Var7 = p_Var8->_M_right;\n        bVar3 = false;\n      }" { (labeled_statement "LAB_001f3cf2:\n        uVar6 = (long)p_Var11 - (long)p_Var9;" statement_identifier : (expression_statement "uVar6 = (long)p_Var11 - (long)p_Var9;" (assignment_expression "uVar6 = (long)p_Var11 - (long)p_Var9" identifier = (binary_expression "(long)p_Var11 - (long)p_Var9" (cast_expression "(long)p_Var11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)p_Var9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;)) (if_statement "if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\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_001f3d08;\n          goto LAB_001f3cb8;\n        }" { (if_statement "if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;" 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_001f3d08;" goto statement_identifier ;)) (goto_statement "goto LAB_001f3cb8;" goto statement_identifier ;) })) (labeled_statement "LAB_001f3d0c:\n        p_Var7 = p_Var8->_M_right;" statement_identifier : (expression_statement "p_Var7 = p_Var8->_M_right;" (assignment_expression "p_Var7 = p_Var8->_M_right" identifier = (field_expression "p_Var8->_M_right" identifier -> field_identifier)) ;)) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) }) (else_clause "else {\n        uVar4 = memcmp(__s1,__s2,(size_t)__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        p_Var7 = p_Var8->_M_left;\n        bVar3 = true;\n      }" else (compound_statement "{\n        uVar4 = memcmp(__s1,__s2,(size_t)__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        p_Var7 = p_Var8->_M_left;\n        bVar3 = true;\n      }" { (expression_statement "uVar4 = memcmp(__s1,__s2,(size_t)__n);" (assignment_expression "uVar4 = memcmp(__s1,__s2,(size_t)__n)" identifier = (call_expression "memcmp(__s1,__s2,(size_t)__n)" identifier (argument_list "(__s1,__s2,(size_t)__n)" ( identifier , identifier , (cast_expression "(size_t)__n" ( (type_descriptor "size_t" primitive_type) ) 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_001f3cf2;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001f3cf2;" goto statement_identifier ;)) (labeled_statement "LAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;" statement_identifier : (if_statement "if (-1 < (int)uVar6) goto LAB_001f3d0c;" 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_001f3d0c;" goto statement_identifier ;))) (labeled_statement "LAB_001f3cb8:\n        p_Var7 = p_Var8->_M_left;" statement_identifier : (expression_statement "p_Var7 = p_Var8->_M_left;" (assignment_expression "p_Var7 = p_Var8->_M_left" identifier = (field_expression "p_Var8->_M_left" identifier -> field_identifier)) ;)) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) }))) }) while (parenthesized_expression "(p_Var7 != (_Base_ptr)0x0)" ( (binary_expression "p_Var7 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "p_Var7 = p_Var8;" (assignment_expression "p_Var7 = p_Var8" identifier = identifier) ;) (if_statement "if (bVar3) goto LAB_001f3d8c;" if (parenthesized_expression "(bVar3)" ( identifier )) (goto_statement "goto LAB_001f3d8c;" goto statement_identifier ;)) }))) (if_statement "if ((__n == (_Base_ptr)0x0) || (iVar5 = memcmp(__s2,__s1,(size_t)__n), iVar5 == 0)) {\n    lVar10 = (long)p_Var9 - (long)p_Var11;\n    if (0x7fffffff < lVar10) goto LAB_001f3d5a;\n    if (lVar10 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar10;\n  }" if (parenthesized_expression "((__n == (_Base_ptr)0x0) || (iVar5 = memcmp(__s2,__s1,(size_t)__n), iVar5 == 0))" ( (binary_expression "(__n == (_Base_ptr)0x0) || (iVar5 = memcmp(__s2,__s1,(size_t)__n), iVar5 == 0)" (parenthesized_expression "(__n == (_Base_ptr)0x0)" ( (binary_expression "__n == (_Base_ptr)0x0" identifier == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) || (parenthesized_expression "(iVar5 = memcmp(__s2,__s1,(size_t)__n), iVar5 == 0)" ( (comma_expression "iVar5 = memcmp(__s2,__s1,(size_t)__n), iVar5 == 0" (assignment_expression "iVar5 = memcmp(__s2,__s1,(size_t)__n)" identifier = (call_expression "memcmp(__s2,__s1,(size_t)__n)" identifier (argument_list "(__s2,__s1,(size_t)__n)" ( identifier , identifier , (cast_expression "(size_t)__n" ( (type_descriptor "size_t" primitive_type) ) identifier) )))) , (binary_expression "iVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    lVar10 = (long)p_Var9 - (long)p_Var11;\n    if (0x7fffffff < lVar10) goto LAB_001f3d5a;\n    if (lVar10 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar10;\n  }" { (expression_statement "lVar10 = (long)p_Var9 - (long)p_Var11;" (assignment_expression "lVar10 = (long)p_Var9 - (long)p_Var11" identifier = (binary_expression "(long)p_Var9 - (long)p_Var11" (cast_expression "(long)p_Var9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)p_Var11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (0x7fffffff < lVar10) goto LAB_001f3d5a;" if (parenthesized_expression "(0x7fffffff < lVar10)" ( (binary_expression "0x7fffffff < lVar10" number_literal < identifier) )) (goto_statement "goto LAB_001f3d5a;" goto statement_identifier ;)) (if_statement "if (lVar10 < -0x80000000) goto LAB_001f3d70;" if (parenthesized_expression "(lVar10 < -0x80000000)" ( (binary_expression "lVar10 < -0x80000000" identifier < number_literal) )) (goto_statement "goto LAB_001f3d70;" goto statement_identifier ;)) (expression_statement "iVar5 = (int)lVar10;" (assignment_expression "iVar5 = (int)lVar10" identifier = (cast_expression "(int)lVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (if_statement "if (iVar5 < 0) {\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = p_Var8;\n    return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar1 << 0x40);\n  }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = p_Var8;\n    return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar1 << 0x40);\n  }" { (labeled_statement "LAB_001f3d70:\n    auVar1._8_8_ = 0;" statement_identifier : (expression_statement "auVar1._8_8_ = 0;" (assignment_expression "auVar1._8_8_ = 0" (field_expression "auVar1._8_8_" identifier . field_identifier) = number_literal) ;)) (expression_statement "auVar1._0_8_ = p_Var8;" (assignment_expression "auVar1._0_8_ = p_Var8" (field_expression "auVar1._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar1 << 0x40);" return (call_expression "(pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar1 << 0x40)" (parenthesized_expression "(pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)" ( (ERROR "pair<std::_Rb_tree_node_base*,_std::" (binary_expression "pair<std" identifier < identifier) : : (type_descriptor "_Rb_tree_node_base*" type_identifier (abstract_pointer_declarator "*" *)) , identifier : :) identifier (ERROR "*>" * >) )) (argument_list "(auVar1 << 0x40)" ( (binary_expression "auVar1 << 0x40" identifier << number_literal) ))) ;) })) (labeled_statement "LAB_001f3d5a:\n  pVar12.second = (_Rb_tree_node_base *)0x0;" statement_identifier : (expression_statement "pVar12.second = (_Rb_tree_node_base *)0x0;" (assignment_expression "pVar12.second = (_Rb_tree_node_base *)0x0" (field_expression "pVar12.second" identifier . field_identifier) = (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pVar12.first = p_Var7;" (assignment_expression "pVar12.first = p_Var7" (field_expression "pVar12.first" identifier . field_identifier) = identifier) ;) (return_statement "return pVar12;" return identifier ;) })))
(translation_unit "undefined1  [16] FUN_001f3c80(long param_1,undefined8 *param_2)\n\n{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  bool bVar3;\n  uint uVar4;\n  int iVar5;\n  ulong uVar6;\n  ulong uVar7;\n  void *__s1;\n  size_t __n;\n  void *__s2;\n  ulong uVar8;\n  long lVar9;\n  ulong uVar10;\n  undefined1 auVar11 [16];\n  \n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = param_1 + 8;\nLAB_001f3d8c:\n    if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }\n    uVar6 = thunk_FUN_002dbfd0(uVar7);\n    uVar8 = *(ulong *)(uVar6 + 0x28);\n    __s2 = *(void **)(uVar6 + 0x20);\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    __n = uVar8;\n    if (uVar10 <= uVar8) {\n      __n = uVar10;\n    }\n  }\n  else {\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar7;\n    if (bVar3) goto LAB_001f3d8c;\n  }\n  if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n    lVar9 = uVar8 - uVar10;\n    if (0x7fffffff < lVar9) goto LAB_001f3d5a;\n    if (lVar9 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar9;\n  }\n  if (iVar5 < 0) {\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uVar7;\n    return auVar1 << 0x40;\n  }\nLAB_001f3d5a:\n  auVar11._8_8_ = 0;\n  auVar11._0_8_ = uVar6;\n  return auVar11;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (macro_type_specifier "FUN_001f3c80(long param_1,undefined8 *param_2)" identifier ( (ERROR "long param_1,undefined8 *" (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) , (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *))) (type_descriptor "param_2" type_identifier) )) ; (compound_statement "{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  bool bVar3;\n  uint uVar4;\n  int iVar5;\n  ulong uVar6;\n  ulong uVar7;\n  void *__s1;\n  size_t __n;\n  void *__s2;\n  ulong uVar8;\n  long lVar9;\n  ulong uVar10;\n  undefined1 auVar11 [16];\n  \n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = param_1 + 8;\nLAB_001f3d8c:\n    if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }\n    uVar6 = thunk_FUN_002dbfd0(uVar7);\n    uVar8 = *(ulong *)(uVar6 + 0x28);\n    __s2 = *(void **)(uVar6 + 0x20);\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    __n = uVar8;\n    if (uVar10 <= uVar8) {\n      __n = uVar10;\n    }\n  }\n  else {\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar7;\n    if (bVar3) goto LAB_001f3d8c;\n  }\n  if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n    lVar9 = uVar8 - uVar10;\n    if (0x7fffffff < lVar9) goto LAB_001f3d5a;\n    if (lVar9 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar9;\n  }\n  if (iVar5 < 0) {\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uVar7;\n    return auVar1 << 0x40;\n  }\nLAB_001f3d5a:\n  auVar11._8_8_ = 0;\n  auVar11._0_8_ = uVar6;\n  return auVar11;\n}" { (declaration "undefined1 auVar1 [16];" type_identifier (array_declarator "auVar1 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar2 [16];" type_identifier (array_declarator "auVar2 [16]" identifier [ number_literal ]) ;) (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 "ulong uVar7;" type_identifier identifier ;) (declaration "void *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "void *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "undefined1 auVar11 [16];" type_identifier (array_declarator "auVar11 [16]" identifier [ number_literal ]) ;) (if_statement "if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = param_1 + 8;\nLAB_001f3d8c:\n    if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }\n    uVar6 = thunk_FUN_002dbfd0(uVar7);\n    uVar8 = *(ulong *)(uVar6 + 0x28);\n    __s2 = *(void **)(uVar6 + 0x20);\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    __n = uVar8;\n    if (uVar10 <= uVar8) {\n      __n = uVar10;\n    }\n  }\n  else {\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar7;\n    if (bVar3) goto LAB_001f3d8c;\n  }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x10) == 0)" ( (binary_expression "*(ulong *)(param_1 + 0x10) == 0" (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) )))) == number_literal) )) (compound_statement "{\n    uVar7 = param_1 + 8;\nLAB_001f3d8c:\n    if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }\n    uVar6 = thunk_FUN_002dbfd0(uVar7);\n    uVar8 = *(ulong *)(uVar6 + 0x28);\n    __s2 = *(void **)(uVar6 + 0x20);\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    __n = uVar8;\n    if (uVar10 <= uVar8) {\n      __n = uVar10;\n    }\n  }" { (expression_statement "uVar7 = param_1 + 8;" (assignment_expression "uVar7 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (labeled_statement "LAB_001f3d8c:\n    if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }" statement_identifier : (if_statement "if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }" if (parenthesized_expression "(uVar7 == *(ulong *)(param_1 + 0x18))" ( (binary_expression "uVar7 == *(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      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }" { (expression_statement "auVar2._8_8_ = 0;" (assignment_expression "auVar2._8_8_ = 0" (field_expression "auVar2._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar2._0_8_ = uVar7;" (assignment_expression "auVar2._0_8_ = uVar7" (field_expression "auVar2._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar2 << 0x40;" return (binary_expression "auVar2 << 0x40" identifier << number_literal) ;) }))) (expression_statement "uVar6 = thunk_FUN_002dbfd0(uVar7);" (assignment_expression "uVar6 = thunk_FUN_002dbfd0(uVar7)" identifier = (call_expression "thunk_FUN_002dbfd0(uVar7)" identifier (argument_list "(uVar7)" ( 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 "uVar10 = param_2[1];" (assignment_expression "uVar10 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "__s1 = (void *)*param_2;" (assignment_expression "__s1 = (void *)*param_2" identifier = (cast_expression "(void *)*param_2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "__n = uVar8;" (assignment_expression "__n = uVar8" identifier = identifier) ;) (if_statement "if (uVar10 <= uVar8) {\n      __n = uVar10;\n    }" if (parenthesized_expression "(uVar10 <= uVar8)" ( (binary_expression "uVar10 <= uVar8" identifier <= identifier) )) (compound_statement "{\n      __n = uVar10;\n    }" { (expression_statement "__n = uVar10;" (assignment_expression "__n = uVar10" identifier = identifier) ;) })) }) (else_clause "else {\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar7;\n    if (bVar3) goto LAB_001f3d8c;\n  }" else (compound_statement "{\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar7;\n    if (bVar3) goto LAB_001f3d8c;\n  }" { (expression_statement "uVar10 = param_2[1];" (assignment_expression "uVar10 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "__s1 = (void *)*param_2;" (assignment_expression "__s1 = (void *)*param_2" identifier = (cast_expression "(void *)*param_2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (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) ))))) ;) (do_statement "do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);" do (compound_statement "{\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    }" { (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) (expression_statement "uVar8 = *(ulong *)(uVar7 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(uVar7 + 0x28)" identifier = (pointer_expression "*(ulong *)(uVar7 + 0x28)" * (cast_expression "(ulong *)(uVar7 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x28)" ( (binary_expression "uVar7 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "__s2 = *(void **)(uVar7 + 0x20);" (assignment_expression "__s2 = *(void **)(uVar7 + 0x20)" identifier = (pointer_expression "*(void **)(uVar7 + 0x20)" * (cast_expression "(void **)(uVar7 + 0x20)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar7 + 0x20)" ( (binary_expression "uVar7 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "__n = uVar8;" (assignment_expression "__n = uVar8" identifier = identifier) ;) (if_statement "if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }" if (parenthesized_expression "(uVar10 <= uVar8)" ( (binary_expression "uVar10 <= uVar8" identifier <= identifier) )) (compound_statement "{\n        __n = uVar10;\n      }" { (expression_statement "__n = uVar10;" (assignment_expression "__n = uVar10" identifier = identifier) ;) })) (if_statement "if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }" if (parenthesized_expression "(__n == 0)" ( (binary_expression "__n == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }" { (labeled_statement "LAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;" statement_identifier : (expression_statement "uVar6 = uVar10 - uVar8;" (assignment_expression "uVar6 = uVar10 - uVar8" identifier = (binary_expression "uVar10 - uVar8" identifier - identifier)) ;)) (if_statement "if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\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_001f3d08;\n          goto LAB_001f3cb8;\n        }" { (if_statement "if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;" 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_001f3d08;" goto statement_identifier ;)) (goto_statement "goto LAB_001f3cb8;" goto statement_identifier ;) })) (labeled_statement "LAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);" statement_identifier : (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x18);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar7 + 0x18)" * (cast_expression "(ulong *)(uVar7 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x18)" ( (binary_expression "uVar7 + 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_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }" else (compound_statement "{\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 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_001f3cf2;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001f3cf2;" goto statement_identifier ;)) (labeled_statement "LAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;" statement_identifier : (if_statement "if (-1 < (int)uVar6) goto LAB_001f3d0c;" 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_001f3d0c;" goto statement_identifier ;))) (labeled_statement "LAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);" statement_identifier : (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar7 + 0x10)" * (cast_expression "(ulong *)(uVar7 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x10)" ( (binary_expression "uVar7 + 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 = uVar7;" (assignment_expression "uVar6 = uVar7" identifier = identifier) ;) (if_statement "if (bVar3) goto LAB_001f3d8c;" if (parenthesized_expression "(bVar3)" ( identifier )) (goto_statement "goto LAB_001f3d8c;" goto statement_identifier ;)) }))) (if_statement "if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n    lVar9 = uVar8 - uVar10;\n    if (0x7fffffff < lVar9) goto LAB_001f3d5a;\n    if (lVar9 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar9;\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    lVar9 = uVar8 - uVar10;\n    if (0x7fffffff < lVar9) goto LAB_001f3d5a;\n    if (lVar9 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar9;\n  }" { (expression_statement "lVar9 = uVar8 - uVar10;" (assignment_expression "lVar9 = uVar8 - uVar10" identifier = (binary_expression "uVar8 - uVar10" identifier - identifier)) ;) (if_statement "if (0x7fffffff < lVar9) goto LAB_001f3d5a;" if (parenthesized_expression "(0x7fffffff < lVar9)" ( (binary_expression "0x7fffffff < lVar9" number_literal < identifier) )) (goto_statement "goto LAB_001f3d5a;" goto statement_identifier ;)) (if_statement "if (lVar9 < -0x80000000) goto LAB_001f3d70;" if (parenthesized_expression "(lVar9 < -0x80000000)" ( (binary_expression "lVar9 < -0x80000000" identifier < number_literal) )) (goto_statement "goto LAB_001f3d70;" goto statement_identifier ;)) (expression_statement "iVar5 = (int)lVar9;" (assignment_expression "iVar5 = (int)lVar9" identifier = (cast_expression "(int)lVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (if_statement "if (iVar5 < 0) {\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uVar7;\n    return auVar1 << 0x40;\n  }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uVar7;\n    return auVar1 << 0x40;\n  }" { (labeled_statement "LAB_001f3d70:\n    auVar1._8_8_ = 0;" statement_identifier : (expression_statement "auVar1._8_8_ = 0;" (assignment_expression "auVar1._8_8_ = 0" (field_expression "auVar1._8_8_" identifier . field_identifier) = number_literal) ;)) (expression_statement "auVar1._0_8_ = uVar7;" (assignment_expression "auVar1._0_8_ = uVar7" (field_expression "auVar1._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar1 << 0x40;" return (binary_expression "auVar1 << 0x40" identifier << number_literal) ;) })) (labeled_statement "LAB_001f3d5a:\n  auVar11._8_8_ = 0;" statement_identifier : (expression_statement "auVar11._8_8_ = 0;" (assignment_expression "auVar11._8_8_ = 0" (field_expression "auVar11._8_8_" identifier . field_identifier) = number_literal) ;)) (expression_statement "auVar11._0_8_ = uVar6;" (assignment_expression "auVar11._0_8_ = uVar6" (field_expression "auVar11._0_8_" identifier . field_identifier) = identifier) ;) (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 TYPE (abstract_pointer_declarator *))) (type_descriptor TYPE) )) ; (compound_statement { (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (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 (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return (binary_expression IDENT << LIT) ;) }))) (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (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 ( IDENT )) (goto_statement goto 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 IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;)) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return (binary_expression IDENT << LIT) ;) })) (labeled_statement statement_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 ;) }))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (macro_type_specifier "FUN_001f3c80(long param_1,undefined8 *param_2)" (identifier "FUN_001f3c80") (( "(") (ERROR "long param_1,undefined8 *" (type_descriptor "long param_1" (sized_type_specifier "long param_1" (long "long") (type_identifier "param_1"))) (, ",") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*")))) (type_descriptor "param_2" (type_identifier "param_2")) () ")")) (; "") (compound_statement "{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  bool bVar3;\n  uint uVar4;\n  int iVar5;\n  ulong uVar6;\n  ulong uVar7;\n  void *__s1;\n  size_t __n;\n  void *__s2;\n  ulong uVar8;\n  long lVar9;\n  ulong uVar10;\n  undefined1 auVar11 [16];\n  \n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = param_1 + 8;\nLAB_001f3d8c:\n    if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }\n    uVar6 = thunk_FUN_002dbfd0(uVar7);\n    uVar8 = *(ulong *)(uVar6 + 0x28);\n    __s2 = *(void **)(uVar6 + 0x20);\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    __n = uVar8;\n    if (uVar10 <= uVar8) {\n      __n = uVar10;\n    }\n  }\n  else {\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar7;\n    if (bVar3) goto LAB_001f3d8c;\n  }\n  if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n    lVar9 = uVar8 - uVar10;\n    if (0x7fffffff < lVar9) goto LAB_001f3d5a;\n    if (lVar9 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar9;\n  }\n  if (iVar5 < 0) {\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uVar7;\n    return auVar1 << 0x40;\n  }\nLAB_001f3d5a:\n  auVar11._8_8_ = 0;\n  auVar11._0_8_ = uVar6;\n  return auVar11;\n}" ({ "{") (declaration "undefined1 auVar1 [16];" (type_identifier "undefined1") (array_declarator "auVar1 [16]" (identifier "auVar1") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 auVar2 [16];" (type_identifier "undefined1") (array_declarator "auVar2 [16]" (identifier "auVar2") ([ "[") (number_literal "16") (] "]")) (; ";")) (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 "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "void *__s1;" (primitive_type "void") (pointer_declarator "*__s1" (* "*") (identifier "__s1")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "void *__s2;" (primitive_type "void") (pointer_declarator "*__s2" (* "*") (identifier "__s2")) (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "undefined1 auVar11 [16];" (type_identifier "undefined1") (array_declarator "auVar11 [16]" (identifier "auVar11") ([ "[") (number_literal "16") (] "]")) (; ";")) (if_statement "if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = param_1 + 8;\nLAB_001f3d8c:\n    if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }\n    uVar6 = thunk_FUN_002dbfd0(uVar7);\n    uVar8 = *(ulong *)(uVar6 + 0x28);\n    __s2 = *(void **)(uVar6 + 0x20);\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    __n = uVar8;\n    if (uVar10 <= uVar8) {\n      __n = uVar10;\n    }\n  }\n  else {\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar7;\n    if (bVar3) goto LAB_001f3d8c;\n  }" (if "if") (parenthesized_expression "(*(ulong *)(param_1 + 0x10) == 0)" (( "(") (binary_expression "*(ulong *)(param_1 + 0x10) == 0" (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")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar7 = param_1 + 8;\nLAB_001f3d8c:\n    if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }\n    uVar6 = thunk_FUN_002dbfd0(uVar7);\n    uVar8 = *(ulong *)(uVar6 + 0x28);\n    __s2 = *(void **)(uVar6 + 0x20);\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    __n = uVar8;\n    if (uVar10 <= uVar8) {\n      __n = uVar10;\n    }\n  }" ({ "{") (expression_statement "uVar7 = param_1 + 8;" (assignment_expression "uVar7 = param_1 + 8" (identifier "uVar7") (= "=") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8"))) (; ";")) (labeled_statement "LAB_001f3d8c:\n    if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }" (statement_identifier "LAB_001f3d8c") (: ":") (if_statement "if (uVar7 == *(ulong *)(param_1 + 0x18)) {\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }" (if "if") (parenthesized_expression "(uVar7 == *(ulong *)(param_1 + 0x18))" (( "(") (binary_expression "uVar7 == *(ulong *)(param_1 + 0x18)" (identifier "uVar7") (== "==") (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      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar7;\n      return auVar2 << 0x40;\n    }" ({ "{") (expression_statement "auVar2._8_8_ = 0;" (assignment_expression "auVar2._8_8_ = 0" (field_expression "auVar2._8_8_" (identifier "auVar2") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar2._0_8_ = uVar7;" (assignment_expression "auVar2._0_8_ = uVar7" (field_expression "auVar2._0_8_" (identifier "auVar2") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar7")) (; ";")) (return_statement "return auVar2 << 0x40;" (return "return") (binary_expression "auVar2 << 0x40" (identifier "auVar2") (<< "<<") (number_literal "0x40")) (; ";")) (} "}")))) (expression_statement "uVar6 = thunk_FUN_002dbfd0(uVar7);" (assignment_expression "uVar6 = thunk_FUN_002dbfd0(uVar7)" (identifier "uVar6") (= "=") (call_expression "thunk_FUN_002dbfd0(uVar7)" (identifier "thunk_FUN_002dbfd0") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")")))) (; ";")) (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 "uVar10 = param_2[1];" (assignment_expression "uVar10 = param_2[1]" (identifier "uVar10") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "__s1 = (void *)*param_2;" (assignment_expression "__s1 = (void *)*param_2" (identifier "__s1") (= "=") (cast_expression "(void *)*param_2" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "__n = uVar8;" (assignment_expression "__n = uVar8" (identifier "__n") (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (uVar10 <= uVar8) {\n      __n = uVar10;\n    }" (if "if") (parenthesized_expression "(uVar10 <= uVar8)" (( "(") (binary_expression "uVar10 <= uVar8" (identifier "uVar10") (<= "<=") (identifier "uVar8")) () ")")) (compound_statement "{\n      __n = uVar10;\n    }" ({ "{") (expression_statement "__n = uVar10;" (assignment_expression "__n = uVar10" (identifier "__n") (= "=") (identifier "uVar10")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar7;\n    if (bVar3) goto LAB_001f3d8c;\n  }" (else "else") (compound_statement "{\n    uVar10 = param_2[1];\n    __s1 = (void *)*param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);\n    uVar6 = uVar7;\n    if (bVar3) goto LAB_001f3d8c;\n  }" ({ "{") (expression_statement "uVar10 = param_2[1];" (assignment_expression "uVar10 = param_2[1]" (identifier "uVar10") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "__s1 = (void *)*param_2;" (assignment_expression "__s1 = (void *)*param_2" (identifier "__s1") (= "=") (cast_expression "(void *)*param_2" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (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")) () ")"))))) (; ";")) (do_statement "do {\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    } while (uVar6 != 0);" (do "do") (compound_statement "{\n      uVar7 = uVar6;\n      uVar8 = *(ulong *)(uVar7 + 0x28);\n      __s2 = *(void **)(uVar7 + 0x20);\n      __n = uVar8;\n      if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }\n      if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }\n    }" ({ "{") (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" (identifier "uVar7") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar8 = *(ulong *)(uVar7 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(uVar7 + 0x28)" (identifier "uVar8") (= "=") (pointer_expression "*(ulong *)(uVar7 + 0x28)" (* "*") (cast_expression "(ulong *)(uVar7 + 0x28)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + 0x28)" (( "(") (binary_expression "uVar7 + 0x28" (identifier "uVar7") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "__s2 = *(void **)(uVar7 + 0x20);" (assignment_expression "__s2 = *(void **)(uVar7 + 0x20)" (identifier "__s2") (= "=") (pointer_expression "*(void **)(uVar7 + 0x20)" (* "*") (cast_expression "(void **)(uVar7 + 0x20)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar7 + 0x20)" (( "(") (binary_expression "uVar7 + 0x20" (identifier "uVar7") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "__n = uVar8;" (assignment_expression "__n = uVar8" (identifier "__n") (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (uVar10 <= uVar8) {\n        __n = uVar10;\n      }" (if "if") (parenthesized_expression "(uVar10 <= uVar8)" (( "(") (binary_expression "uVar10 <= uVar8" (identifier "uVar10") (<= "<=") (identifier "uVar8")) () ")")) (compound_statement "{\n        __n = uVar10;\n      }" ({ "{") (expression_statement "__n = uVar10;" (assignment_expression "__n = uVar10" (identifier "__n") (= "=") (identifier "uVar10")) (; ";")) (} "}"))) (if_statement "if (__n == 0) {\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }\n      else {\n        uVar4 = memcmp(__s1,__s2,__n);\n        uVar6 = (ulong)uVar4;\n        if (uVar4 == 0) goto LAB_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n        bVar3 = true;\n      }" (if "if") (parenthesized_expression "(__n == 0)" (( "(") (binary_expression "__n == 0" (identifier "__n") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;\n        if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\n        }\nLAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n        bVar3 = false;\n      }" ({ "{") (labeled_statement "LAB_001f3cf2:\n        uVar6 = uVar10 - uVar8;" (statement_identifier "LAB_001f3cf2") (: ":") (expression_statement "uVar6 = uVar10 - uVar8;" (assignment_expression "uVar6 = uVar10 - uVar8" (identifier "uVar6") (= "=") (binary_expression "uVar10 - uVar8" (identifier "uVar10") (- "-") (identifier "uVar8"))) (; ";"))) (if_statement "if ((long)uVar6 < 0x80000000) {\n          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;\n          goto LAB_001f3cb8;\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_001f3d08;\n          goto LAB_001f3cb8;\n        }" ({ "{") (if_statement "if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;" (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_001f3d08;" (goto "goto") (statement_identifier "LAB_001f3d08") (; ";"))) (goto_statement "goto LAB_001f3cb8;" (goto "goto") (statement_identifier "LAB_001f3cb8") (; ";")) (} "}"))) (labeled_statement "LAB_001f3d0c:\n        uVar6 = *(ulong *)(uVar7 + 0x18);" (statement_identifier "LAB_001f3d0c") (: ":") (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x18);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x18)" (identifier "uVar6") (= "=") (pointer_expression "*(ulong *)(uVar7 + 0x18)" (* "*") (cast_expression "(ulong *)(uVar7 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + 0x18)" (( "(") (binary_expression "uVar7 + 0x18" (identifier "uVar7") (+ "+") (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_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 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_001f3cf2;\nLAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;\nLAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 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_001f3cf2;" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001f3cf2;" (goto "goto") (statement_identifier "LAB_001f3cf2") (; ";"))) (labeled_statement "LAB_001f3d08:\n        if (-1 < (int)uVar6) goto LAB_001f3d0c;" (statement_identifier "LAB_001f3d08") (: ":") (if_statement "if (-1 < (int)uVar6) goto LAB_001f3d0c;" (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_001f3d0c;" (goto "goto") (statement_identifier "LAB_001f3d0c") (; ";")))) (labeled_statement "LAB_001f3cb8:\n        uVar6 = *(ulong *)(uVar7 + 0x10);" (statement_identifier "LAB_001f3cb8") (: ":") (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x10)" (identifier "uVar6") (= "=") (pointer_expression "*(ulong *)(uVar7 + 0x10)" (* "*") (cast_expression "(ulong *)(uVar7 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + 0x10)" (( "(") (binary_expression "uVar7 + 0x10" (identifier "uVar7") (+ "+") (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 = uVar7;" (assignment_expression "uVar6 = uVar7" (identifier "uVar6") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (bVar3) goto LAB_001f3d8c;" (if "if") (parenthesized_expression "(bVar3)" (( "(") (identifier "bVar3") () ")")) (goto_statement "goto LAB_001f3d8c;" (goto "goto") (statement_identifier "LAB_001f3d8c") (; ";"))) (} "}")))) (if_statement "if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {\n    lVar9 = uVar8 - uVar10;\n    if (0x7fffffff < lVar9) goto LAB_001f3d5a;\n    if (lVar9 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar9;\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    lVar9 = uVar8 - uVar10;\n    if (0x7fffffff < lVar9) goto LAB_001f3d5a;\n    if (lVar9 < -0x80000000) goto LAB_001f3d70;\n    iVar5 = (int)lVar9;\n  }" ({ "{") (expression_statement "lVar9 = uVar8 - uVar10;" (assignment_expression "lVar9 = uVar8 - uVar10" (identifier "lVar9") (= "=") (binary_expression "uVar8 - uVar10" (identifier "uVar8") (- "-") (identifier "uVar10"))) (; ";")) (if_statement "if (0x7fffffff < lVar9) goto LAB_001f3d5a;" (if "if") (parenthesized_expression "(0x7fffffff < lVar9)" (( "(") (binary_expression "0x7fffffff < lVar9" (number_literal "0x7fffffff") (< "<") (identifier "lVar9")) () ")")) (goto_statement "goto LAB_001f3d5a;" (goto "goto") (statement_identifier "LAB_001f3d5a") (; ";"))) (if_statement "if (lVar9 < -0x80000000) goto LAB_001f3d70;" (if "if") (parenthesized_expression "(lVar9 < -0x80000000)" (( "(") (binary_expression "lVar9 < -0x80000000" (identifier "lVar9") (< "<") (number_literal "-0x80000000")) () ")")) (goto_statement "goto LAB_001f3d70;" (goto "goto") (statement_identifier "LAB_001f3d70") (; ";"))) (expression_statement "iVar5 = (int)lVar9;" (assignment_expression "iVar5 = (int)lVar9" (identifier "iVar5") (= "=") (cast_expression "(int)lVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar9"))) (; ";")) (} "}"))) (if_statement "if (iVar5 < 0) {\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uVar7;\n    return auVar1 << 0x40;\n  }" (if "if") (parenthesized_expression "(iVar5 < 0)" (( "(") (binary_expression "iVar5 < 0" (identifier "iVar5") (< "<") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001f3d70:\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uVar7;\n    return auVar1 << 0x40;\n  }" ({ "{") (labeled_statement "LAB_001f3d70:\n    auVar1._8_8_ = 0;" (statement_identifier "LAB_001f3d70") (: ":") (expression_statement "auVar1._8_8_ = 0;" (assignment_expression "auVar1._8_8_ = 0" (field_expression "auVar1._8_8_" (identifier "auVar1") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "auVar1._0_8_ = uVar7;" (assignment_expression "auVar1._0_8_ = uVar7" (field_expression "auVar1._0_8_" (identifier "auVar1") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar7")) (; ";")) (return_statement "return auVar1 << 0x40;" (return "return") (binary_expression "auVar1 << 0x40" (identifier "auVar1") (<< "<<") (number_literal "0x40")) (; ";")) (} "}"))) (labeled_statement "LAB_001f3d5a:\n  auVar11._8_8_ = 0;" (statement_identifier "LAB_001f3d5a") (: ":") (expression_statement "auVar11._8_8_ = 0;" (assignment_expression "auVar11._8_8_ = 0" (field_expression "auVar11._8_8_" (identifier "auVar11") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "auVar11._0_8_ = uVar6;" (assignment_expression "auVar11._0_8_ = uVar6" (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar6")) (; ";")) (return_statement "return auVar11;" (return "return") (identifier "auVar11") (; ";")) (} "}"))

/* DWARF original prototype: pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>
   _M_get_insert_unique_pos(_Rb_tree<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>,_std::_Select1st<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>,_std::less<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_long_unsigned_int>_>_>
   * this, key_type * __k) */

pair<type_1::type_9*,type_3::type_9*> __thiscall
type_1::
type_2<type_1::__cxx11::basic_string<char,type_3::char_traits<char>,type_3::allocator<char>_>,type_3::pair<const_std::__cxx11::basic_string<char,type_3::char_traits<char>,type_3::allocator<char>_>,type_4>,type_3::_Select1st<type_1::pair<const_std::__cxx11::basic_string<char,type_3::char_traits<char>,type_3::allocator<char>_>,type_4>_>,type_3::less<type_1::__cxx11::basic_string<char,type_3::char_traits<char>,type_3::allocator<char>_>_>,type_3::allocator<type_1::pair<const_std::__cxx11::basic_string<char,type_3::char_traits<char>,type_3::allocator<char>_>,type_4>_>_>
::function_1
          (type_2<type_1::__cxx11::basic_string<char,type_3::char_traits<char>,type_3::allocator<char>_>,type_3::pair<const_std::__cxx11::basic_string<char,type_3::char_traits<char>,type_3::allocator<char>_>,type_4>,type_3::_Select1st<type_1::pair<const_std::__cxx11::basic_string<char,type_3::char_traits<char>,type_3::allocator<char>_>,type_4>_>,type_3::less<type_1::__cxx11::basic_string<char,type_3::char_traits<char>,type_3::allocator<char>_>_>,type_3::allocator<type_1::pair<const_std::__cxx11::basic_string<char,type_3::char_traits<char>,type_3::allocator<char>_>,type_4>_>_>
           *this,type_5 *__k)

{
  type_6 var_13 [16];
  type_6 var_4 [16];
  bool bVar3;
  type_7 var_10;
  int var_11;
  type_8 uVar6;
  type_9 *var_2;
  type_9 *var_3;
  type_10 __s1;
  type_11 var_8;
  void *__s2;
  type_11 var_7;
  long var_12;
  type_11 var_6;
  pair<type_1::type_9*,type_3::type_9*> var_1;
  
  var_2 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  if (var_2 == (type_9 *)0x0) {
    var_3 = &(this->_M_impl).super__Rb_tree_header._M_header;
LAB_001f3d8c:
    if (var_3 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) {
      var_4._8_8_ = 0;
      var_4._0_8_ = var_3;
      return (pair<type_1::type_9*,type_3::type_9*>)(var_4 << 0x40);
    }
    var_2 = (type_9 *)var_5(var_3);
    var_7 = var_2[1]._M_parent;
    __s2 = *(void **)(var_2 + 1);
    var_6 = (type_11)__k->_M_string_length;
    __s1 = (__k->_M_dataplus)._M_p;
    var_8 = var_7;
    if (var_6 <= var_7) {
      var_8 = var_6;
    }
  }
  else {
    var_6 = (type_11)__k->_M_string_length;
    __s1 = (__k->_M_dataplus)._M_p;
    do {
      var_3 = var_2;
      var_7 = var_3[1]._M_parent;
      __s2 = *(void **)(var_3 + 1);
      var_8 = var_7;
      if (var_6 <= var_7) {
        var_8 = var_6;
      }
      if (var_8 == (type_11)0x0) {
LAB_001f3cf2:
        uVar6 = (long)var_6 - (long)var_7;
        if ((long)uVar6 < 0x80000000) {
          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;
          goto LAB_001f3cb8;
        }
LAB_001f3d0c:
        var_2 = var_3->_M_right;
        bVar3 = false;
      }
      else {
        var_10 = var_9(__s1,__s2,(size_t)var_8);
        uVar6 = (type_8)var_10;
        if (var_10 == 0) goto LAB_001f3cf2;
LAB_001f3d08:
        if (-1 < (int)uVar6) goto LAB_001f3d0c;
LAB_001f3cb8:
        var_2 = var_3->_M_left;
        bVar3 = true;
      }
    } while (var_2 != (type_11)0x0);
    var_2 = var_3;
    if (bVar3) goto LAB_001f3d8c;
  }
  if ((var_8 == (type_11)0x0) || (var_11 = var_9(__s2,__s1,(size_t)var_8), var_11 == 0)) {
    var_12 = (long)var_7 - (long)var_6;
    if (0x7fffffff < var_12) goto LAB_001f3d5a;
    if (var_12 < -0x80000000) goto LAB_001f3d70;
    var_11 = (int)var_12;
  }
  if (var_11 < 0) {
LAB_001f3d70:
    var_13._8_8_ = 0;
    var_13._0_8_ = var_3;
    return (pair<type_1::type_9*,type_3::type_9*>)(var_13 << 0x40);
  }
LAB_001f3d5a:
  var_1.second = (type_9 *)0x0;
  var_1.first = var_2;
  return var_1;
}


(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: (type_identifier) declarator: (abstract_pointer_declarator))) type: (type_descriptor type: (type_identifier))) (MISSING ";") (compound_statement (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (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: (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 (binary_expression left: (identifier) right: (number_literal)))))) (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (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 (identifier)) consequence: (goto_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: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_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 (binary_expression left: (identifier) right: (number_literal))))) (labeled_statement label: (statement_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))))

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

{
  undefined1 auVar1 [16];
  undefined1 auVar2 [16];
  bool bVar3;
  uint uVar4;
  int iVar5;
  ulong uVar6;
  ulong uVar7;
  void *__s1;
  size_t __n;
  void *__s2;
  ulong uVar8;
  long lVar9;
  ulong uVar10;
  undefined1 auVar11 [16];
  
  if (*(ulong *)(param_1 + 0x10) == 0) {
    uVar7 = param_1 + 8;
LAB_001f3d8c:
    if (uVar7 == *(ulong *)(param_1 + 0x18)) {
      auVar2._8_8_ = 0;
      auVar2._0_8_ = uVar7;
      return auVar2 << 0x40;
    }
    uVar6 = thunk_FUN_002dbfd0(uVar7);
    uVar8 = *(ulong *)(uVar6 + 0x28);
    __s2 = *(void **)(uVar6 + 0x20);
    uVar10 = param_2[1];
    __s1 = (void *)*param_2;
    __n = uVar8;
    if (uVar10 <= uVar8) {
      __n = uVar10;
    }
  }
  else {
    uVar10 = param_2[1];
    __s1 = (void *)*param_2;
    uVar6 = *(ulong *)(param_1 + 0x10);
    do {
      uVar7 = uVar6;
      uVar8 = *(ulong *)(uVar7 + 0x28);
      __s2 = *(void **)(uVar7 + 0x20);
      __n = uVar8;
      if (uVar10 <= uVar8) {
        __n = uVar10;
      }
      if (__n == 0) {
LAB_001f3cf2:
        uVar6 = uVar10 - uVar8;
        if ((long)uVar6 < 0x80000000) {
          if (-0x80000001 < (long)uVar6) goto LAB_001f3d08;
          goto LAB_001f3cb8;
        }
LAB_001f3d0c:
        uVar6 = *(ulong *)(uVar7 + 0x18);
        bVar3 = false;
      }
      else {
        uVar4 = memcmp(__s1,__s2,__n);
        uVar6 = (ulong)uVar4;
        if (uVar4 == 0) goto LAB_001f3cf2;
LAB_001f3d08:
        if (-1 < (int)uVar6) goto LAB_001f3d0c;
LAB_001f3cb8:
        uVar6 = *(ulong *)(uVar7 + 0x10);
        bVar3 = true;
      }
    } while (uVar6 != 0);
    uVar6 = uVar7;
    if (bVar3) goto LAB_001f3d8c;
  }
  if ((__n == 0) || (iVar5 = memcmp(__s2,__s1,__n), iVar5 == 0)) {
    lVar9 = uVar8 - uVar10;
    if (0x7fffffff < lVar9) goto LAB_001f3d5a;
    if (lVar9 < -0x80000000) goto LAB_001f3d70;
    iVar5 = (int)lVar9;
  }
  if (iVar5 < 0) {
LAB_001f3d70:
    auVar1._8_8_ = 0;
    auVar1._0_8_ = uVar7;
    return auVar1 << 0x40;
  }
LAB_001f3d5a:
  auVar11._8_8_ = 0;
  auVar11._0_8_ = uVar6;
  return auVar11;
}

