
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: string format_file_lineno(Sized_dwarf_line_info<64,_false> * this,
   Offset_to_lineno_entry * loc) */

string * __thiscall
gold::Sized_dwarf_line_info<64,_false>::format_file_lineno
          (string *__return_storage_ptr__,Sized_dwarf_line_info<64,_false> *this,
          Offset_to_lineno_entry *loc)

{
  pointer pvVar1;
  int iVar2;
  pointer pbVar3;
  pointer pvVar4;
  pointer pvVar5;
  uint uVar6;
  uint uVar7;
  pointer ppVar8;
  uint *puVar9;
  uint *puVar10;
  char *pcVar11;
  int unaff_EDI;
  bool bVar12;
  string *ret;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar13;
  char buffer [64];
  
  __x86_get_pc_thunk_di();
  paVar13 = &ret->field_2;
  (ret->field_2)._M_local_buf[0] = '\0';
  pvVar1 = (this->files_).
           super__Vector_base<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>,_std::allocator<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>_>
           ._M_impl._M_finish;
  (ret->_M_dataplus)._M_p = (pointer)paVar13;
  ret->_M_string_length = 0;
  iVar2 = loc->header_num;
  pvVar4 = (this->files_).
           super__Vector_base<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>,_std::allocator<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>_>
           ._M_impl._M_start;
  if (((int)pvVar1 - (int)pvVar4 >> 2) * -0x55555555 <= iVar2) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e1,(char *)(unaff_EDI + 0x1cc133));
  }
  uVar7 = *(uint *)&loc->field_0xc & 0x7fffffff;
  pvVar4 = pvVar4 + iVar2;
  ppVar8 = (pvVar4->
           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
           )._M_impl._M_start;
  if ((uint)(((int)(pvVar4->
                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
                   )._M_impl._M_finish - (int)ppVar8 >> 2) * -0x49249249) <= uVar7) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e3,(char *)(unaff_EDI + 0x1cc133));
  }
  ppVar8 = ppVar8 + uVar7;
  pvVar5 = (this->directories_).
           super__Vector_base<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>,_std::allocator<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>
           ._M_impl._M_start;
  if (((int)(this->directories_).
            super__Vector_base<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>,_std::allocator<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>
            ._M_impl._M_finish - (int)pvVar5 >> 2) * -0x55555555 <= iVar2) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e8,(char *)(unaff_EDI + 0x1cc133));
  }
  pvVar5 = pvVar5 + iVar2;
  pbVar3 = (pvVar5->
           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
           )._M_impl._M_start;
  if (ppVar8->first <
      ((int)(pvVar5->
            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
            )._M_impl._M_finish - (int)pbVar3 >> 3) * -0x55555555) {
    pbVar3 = pbVar3 + ppVar8->first;
    uVar7 = pbVar3->_M_string_length;
    if (uVar7 != 0) {
                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */
      std::string::_M_append((string *)ret,(pbVar3->_M_dataplus)._M_p,uVar7);
      if (ret->_M_string_length == 0x7fffffff) {
                    /* WARNING: Subroutine does not return */
        std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));
      }
      std::string::_M_append
                ((string *)ret,
                 (char *)(std::
                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>
                          ::_M_extract_int<long_long> + unaff_EDI + 7),1);
    }
    std::string::_M_append
              ((string *)ret,(ppVar8->second)._M_dataplus._M_p,
               *(size_type *)((int)&ppVar8->second + 4));
    if (ret->_M_string_length == 0) {
      std::string::_M_replace((string *)ret,0,0,(char *)(unaff_EDI + 0x1cbfee),9);
    }
    snprintf(buffer,0x40,(char *)(unaff_EDI + 0x1e2b14),loc->line_num,paVar13);
    if (ret->_M_string_length != 0x7fffffff) {
      std::string::_M_append((string *)ret,(char *)(unaff_EDI + 0x1d297b),1);
      puVar10 = (uint *)buffer;
      do {
        puVar9 = puVar10;
        uVar6 = *puVar9 + 0xfefefeff & ~*puVar9;
        uVar7 = uVar6 & 0x80808080;
        puVar10 = puVar9 + 1;
      } while (uVar7 == 0);
      bVar12 = (uVar6 & 0x8080) == 0;
      if (bVar12) {
        uVar7 = uVar7 >> 0x10;
      }
      if (bVar12) {
        puVar10 = (uint *)((int)puVar9 + 6);
      }
      pcVar11 = (char *)((int)puVar10 + ((-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)) - (int)buffer)
                        );
      if (pcVar11 <= (char *)(0x7fffffff - ret->_M_string_length)) {
        std::string::_M_append((string *)ret,buffer,(uint)pcVar11);
        return ret;
      }
                    /* WARNING: Subroutine does not return */
      std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));
    }
                    /* WARNING: Subroutine does not return */
    std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8ea,(char *)(unaff_EDI + 0x1cc133));
}



int * FUN_00054560(int *param_1,int param_2,int param_3)

{
  int *piVar1;
  undefined4 *puVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  int *piVar7;
  uint uVar8;
  uint uVar9;
  uint *puVar10;
  uint *puVar11;
  char *pcVar12;
  int unaff_EDI;
  bool bVar13;
  uint local_5c [19];
  
  FUN_0004fb7e();
  piVar1 = param_1 + 2;
  *(undefined1 *)(param_1 + 2) = 0;
  iVar3 = *(int *)(param_2 + 0x6c);
  *param_1 = (int)piVar1;
  param_1[1] = 0;
  iVar4 = *(int *)(param_3 + 8);
  iVar5 = *(int *)(param_2 + 0x68);
  if ((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4) {
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);
  }
  uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff;
  piVar6 = (int *)(iVar5 + iVar4 * 0xc);
  iVar3 = *piVar6;
  if ((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9) {
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);
  }
  piVar6 = (int *)(uVar9 * 0x1c + iVar3);
  if ((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4) {
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);
  }
  piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc);
  iVar3 = *piVar7;
  iVar4 = *piVar6;
  if (iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555) {
    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);
    iVar3 = puVar2[1];
    if (iVar3 != 0) {
                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */
      FUN_00189fb0(param_1,*puVar2,iVar3);
      if (param_1[1] == 0x7fffffff) {
                    /* WARNING: Subroutine does not return */
        FUN_001c6190(unaff_EDI + 0x1cbfd9);
      }
      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);
    }
    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);
    if (param_1[1] == 0) {
      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);
    }
    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));
    if (param_1[1] != 0x7fffffff) {
      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);
      puVar11 = local_5c;
      do {
        puVar10 = puVar11;
        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;
        uVar9 = uVar8 & 0x80808080;
        puVar11 = puVar10 + 1;
      } while (uVar9 == 0);
      bVar13 = (uVar8 & 0x8080) == 0;
      if (bVar13) {
        uVar9 = uVar9 >> 0x10;
      }
      if (bVar13) {
        puVar11 = (uint *)((int)puVar10 + 6);
      }
      pcVar12 = (char *)((int)puVar11 +
                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));
      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {
        FUN_00189fb0(param_1,local_5c,pcVar12);
        return param_1;
      }
                    /* WARNING: Subroutine does not return */
      FUN_001c6190(unaff_EDI + 0x1cbfd9);
    }
                    /* WARNING: Subroutine does not return */
    FUN_001c6190(unaff_EDI + 0x1cbfd9);
  }
                    /* WARNING: Subroutine does not return */
  FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1);
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x0004fb7e
ADD EDI,0x2ada97
PUSH ESI
PUSH EBX
SUB ESP,0x5c
MOV ESI,dword ptr [EBP + 0x8]
MOV ECX,dword ptr [EBP + 0xc]
LEA EAX,[ESI + 0x8]
MOV byte ptr [ESI + 0x8],0x0
MOV EDX,dword ptr [ECX + 0x6c]
MOV dword ptr [EBP + -0x68],EAX
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EBP + 0x10]
MOV dword ptr [ESI + 0x4],0x0
MOV EBX,dword ptr [EAX + 0x8]
MOV EAX,dword ptr [ECX + 0x68]
SUB EDX,EAX
SAR EDX,0x2
IMUL EDX,EDX,-0x55555555
CMP EBX,EDX
JGE 0x000547bf
MOV EDX,dword ptr [EBP + 0x10]
MOV EDX,dword ptr [EDX + 0xc]
AND EDX,0x7fffffff
MOV dword ptr [EBP + -0x5c],EDX
LEA EDX,[EBX + EBX*0x2]
SHL EDX,0x2
ADD EAX,EDX
MOV dword ptr [EBP + -0x64],EDX
MOV EDX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x4]
SUB EAX,EDX
MOV dword ptr [EBP + -0x60],EDX
SAR EAX,0x2
IMUL EAX,EAX,-0x49249249
CMP dword ptr [EBP + -0x5c],EAX
JNC 0x000547a4
IMUL EDX,dword ptr [EBP + -0x5c],0x1c
ADD EDX,dword ptr [EBP + -0x60]
MOV dword ptr [EBP + -0x5c],EDX
MOV EAX,dword ptr [ECX + 0x5c]
MOV EDX,dword ptr [ECX + 0x60]
SUB EDX,EAX
SAR EDX,0x2
IMUL EDX,EDX,-0x55555555
CMP EBX,EDX
JGE 0x00054789
ADD EAX,dword ptr [EBP + -0x64]
MOV EBX,dword ptr [EBP + -0x5c]
MOV ECX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x4]
MOV EDX,dword ptr [EBX]
SUB EAX,ECX
SAR EAX,0x3
IMUL EAX,EAX,-0x55555555
CMP EDX,EAX
JGE 0x0005476e
LEA EAX,[EDX + EDX*0x2]
LEA EAX,[ECX + EAX*0x8]
MOV EDX,dword ptr [EAX + 0x4]
TEST EDX,EDX
JZ 0x00054665
SUB ESP,0x4
MOV EBX,EDI
PUSH EDX
PUSH dword ptr [EAX]
PUSH ESI
CALL 0x00189fb0
ADD ESP,0x10
CMP dword ptr [ESI + 0x4],0x7fffffff
JZ 0x000547da
SUB ESP,0x4
LEA EAX,[EDI + 0xfff32350]
PUSH 0x1
PUSH EAX
PUSH ESI
CALL 0x00189fb0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x5c]
SUB ESP,0x4
MOV EBX,EDI
PUSH dword ptr [EAX + 0x8]
PUSH dword ptr [EAX + 0x4]
PUSH ESI
CALL 0x00189fb0
MOV EAX,dword ptr [ESI + 0x4]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00054730
MOV EAX,dword ptr [EBP + 0x10]
MOV EBX,EDI
PUSH dword ptr [EAX + 0x10]
LEA EAX,[EDI + 0xfff3507d]
PUSH EAX
LEA EAX,[EBP + -0x58]
PUSH 0x40
PUSH EAX
MOV dword ptr [EBP + -0x5c],EAX
CALL 0x00026a40
ADD ESP,0x10
CMP dword ptr [ESI + 0x4],0x7fffffff
JZ 0x0005475f
SUB ESP,0x4
LEA EAX,[EDI + 0xfff24ee4]
PUSH 0x1
PUSH EAX
PUSH ESI
CALL 0x00189fb0
MOV EAX,dword ptr [EBP + -0x5c]
ADD ESP,0x10
MOV EDX,EAX
MOV EBX,EAX
MOV ECX,dword ptr [EDX]
ADD EDX,0x4
LEA EAX,[ECX + 0xfefefeff]
NOT ECX
AND EAX,ECX
AND EAX,0x80808080
JZ 0x000546d0
MOV ECX,EAX
MOV dword ptr [EBP + -0x5c],EBX
SHR ECX,0x10
TEST EAX,0x8080
CMOVZ EAX,ECX
LEA ECX,[EDX + 0x2]
CMOVZ EDX,ECX
MOV EBX,EAX
ADD BL,AL
MOV EAX,0x7fffffff
SBB EDX,0x3
SUB EAX,dword ptr [ESI + 0x4]
SUB EDX,dword ptr [EBP + -0x5c]
CMP EDX,EAX
JA 0x0005474e
SUB ESP,0x4
MOV EBX,EDI
PUSH EDX
PUSH dword ptr [EBP + -0x5c]
PUSH ESI
CALL 0x00189fb0
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
SUB ESP,0xc
LEA EAX,[EDI + 0xfff1e557]
PUSH 0x9
PUSH EAX
PUSH 0x0
PUSH 0x0
PUSH ESI
CALL 0x001893e0
ADD ESP,0x20
JMP 0x00054687
SUB ESP,0xc
LEA EAX,[EDI + 0xfff1e542]
MOV EBX,EDI
PUSH EAX
CALL 0x001c6190
SUB ESP,0xc
LEA EAX,[EDI + 0xfff1e542]
PUSH EAX
CALL 0x001c6190
LEA EAX,[EDI + 0xfff1e69c]
PUSH EDX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xfff1e485]
PUSH 0x8ea
PUSH EAX
CALL 0x0005f0b0
LEA EAX,[EDI + 0xfff1e69c]
PUSH ECX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xfff1e485]
PUSH 0x8e8
PUSH EAX
CALL 0x0005f0b0
LEA EAX,[EDI + 0xfff1e69c]
PUSH EBX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xfff1e485]
PUSH 0x8e3
PUSH EAX
CALL 0x0005f0b0
PUSH EAX
LEA EAX,[EDI + 0xfff1e69c]
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xfff1e485]
PUSH 0x8e1
PUSH EAX
CALL 0x0005f0b0
SUB ESP,0xc
LEA EAX,[EDI + 0xfff1e542]
PUSH EAX
CALL 0x001c6190
(translation_unit "int * FUN_00054560(int *param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  int unaff_EDI;\n  bool bVar13;\n  uint local_5c [19];\n  \n  FUN_0004fb7e();\n  piVar1 = param_1 + 2;\n  *(undefined1 *)(param_1 + 2) = 0;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  *param_1 = (int)piVar1;\n  param_1[1] = 0;\n  iVar4 = *(int *)(param_3 + 8);\n  iVar5 = *(int *)(param_2 + 0x68);\n  if ((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);\n  }\n  uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff;\n  piVar6 = (int *)(iVar5 + iVar4 * 0xc);\n  iVar3 = *piVar6;\n  if ((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);\n  }\n  piVar6 = (int *)(uVar9 * 0x1c + iVar3);\n  if ((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);\n  }\n  piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc);\n  iVar3 = *piVar7;\n  iVar4 = *piVar6;\n  if (iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555) {\n    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);\n    iVar3 = puVar2[1];\n    if (iVar3 != 0) {\n                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */\n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }\n    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);\n    if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }\n    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));\n    if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001c6190(unaff_EDI + 0x1cbfd9);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1);\n}\n\n" (function_definition "int * FUN_00054560(int *param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  int unaff_EDI;\n  bool bVar13;\n  uint local_5c [19];\n  \n  FUN_0004fb7e();\n  piVar1 = param_1 + 2;\n  *(undefined1 *)(param_1 + 2) = 0;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  *param_1 = (int)piVar1;\n  param_1[1] = 0;\n  iVar4 = *(int *)(param_3 + 8);\n  iVar5 = *(int *)(param_2 + 0x68);\n  if ((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);\n  }\n  uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff;\n  piVar6 = (int *)(iVar5 + iVar4 * 0xc);\n  iVar3 = *piVar6;\n  if ((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);\n  }\n  piVar6 = (int *)(uVar9 * 0x1c + iVar3);\n  if ((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);\n  }\n  piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc);\n  iVar3 = *piVar7;\n  iVar4 = *piVar6;\n  if (iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555) {\n    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);\n    iVar3 = puVar2[1];\n    if (iVar3 != 0) {\n                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */\n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }\n    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);\n    if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }\n    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));\n    if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001c6190(unaff_EDI + 0x1cbfd9);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1);\n}" primitive_type (pointer_declarator "* FUN_00054560(int *param_1,int param_2,int param_3)" * (function_declarator "FUN_00054560(int *param_1,int param_2,int param_3)" identifier (parameter_list "(int *param_1,int param_2,int param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) )))) (compound_statement "{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  int unaff_EDI;\n  bool bVar13;\n  uint local_5c [19];\n  \n  FUN_0004fb7e();\n  piVar1 = param_1 + 2;\n  *(undefined1 *)(param_1 + 2) = 0;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  *param_1 = (int)piVar1;\n  param_1[1] = 0;\n  iVar4 = *(int *)(param_3 + 8);\n  iVar5 = *(int *)(param_2 + 0x68);\n  if ((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);\n  }\n  uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff;\n  piVar6 = (int *)(iVar5 + iVar4 * 0xc);\n  iVar3 = *piVar6;\n  if ((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);\n  }\n  piVar6 = (int *)(uVar9 * 0x1c + iVar3);\n  if ((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);\n  }\n  piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc);\n  iVar3 = *piVar7;\n  iVar4 = *piVar6;\n  if (iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555) {\n    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);\n    iVar3 = puVar2[1];\n    if (iVar3 != 0) {\n                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */\n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }\n    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);\n    if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }\n    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));\n    if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001c6190(unaff_EDI + 0x1cbfd9);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1);\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "uint local_5c [19];" type_identifier (array_declarator "local_5c [19]" identifier [ number_literal ]) ;) (expression_statement "FUN_0004fb7e();" (call_expression "FUN_0004fb7e()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar1 = param_1 + 2;" (assignment_expression "piVar1 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1 + 2) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 2) = 0" (pointer_expression "*(undefined1 *)(param_1 + 2)" * (cast_expression "(undefined1 *)(param_1 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar3 = *(int *)(param_2 + 0x6c);" (assignment_expression "iVar3 = *(int *)(param_2 + 0x6c)" identifier = (pointer_expression "*(int *)(param_2 + 0x6c)" * (cast_expression "(int *)(param_2 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6c)" ( (binary_expression "param_2 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "*param_1 = (int)piVar1;" (assignment_expression "*param_1 = (int)piVar1" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar4 = *(int *)(param_3 + 8);" (assignment_expression "iVar4 = *(int *)(param_3 + 8)" identifier = (pointer_expression "*(int *)(param_3 + 8)" * (cast_expression "(int *)(param_3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_2 + 0x68);" (assignment_expression "iVar5 = *(int *)(param_2 + 0x68)" identifier = (pointer_expression "*(int *)(param_2 + 0x68)" * (cast_expression "(int *)(param_2 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x68)" ( (binary_expression "param_2 + 0x68" identifier + number_literal) ))))) ;) (if_statement "if ((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);\n  }" if (parenthesized_expression "((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4)" ( (binary_expression "(iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4" (binary_expression "(iVar3 - iVar5 >> 2) * -0x55555555" (parenthesized_expression "(iVar3 - iVar5 >> 2)" ( (binary_expression "iVar3 - iVar5 >> 2" (binary_expression "iVar3 - iVar5" identifier - identifier) >> number_literal) )) * number_literal) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);\n  }" { comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1)" identifier (argument_list "(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1)" ( (binary_expression "unaff_EDI + 0x1cbf1c" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1cc133" identifier + number_literal) , identifier , identifier ))) ;) })) (expression_statement "uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff;" (assignment_expression "uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff" identifier = (binary_expression "*(uint *)(param_3 + 0xc) & 0x7fffffff" (pointer_expression "*(uint *)(param_3 + 0xc)" * (cast_expression "(uint *)(param_3 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "piVar6 = (int *)(iVar5 + iVar4 * 0xc);" (assignment_expression "piVar6 = (int *)(iVar5 + iVar4 * 0xc)" identifier = (cast_expression "(int *)(iVar5 + iVar4 * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar4 * 0xc)" ( (binary_expression "iVar5 + iVar4 * 0xc" identifier + (binary_expression "iVar4 * 0xc" identifier * number_literal)) )))) ;) (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (if_statement "if ((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);\n  }" if (parenthesized_expression "((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9)" ( (binary_expression "(uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9" (call_expression "(uint)((piVar6[1] - iVar3 >> 2) * -0x49249249)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar6[1] - iVar3 >> 2) * -0x49249249)" ( (binary_expression "(piVar6[1] - iVar3 >> 2) * -0x49249249" (parenthesized_expression "(piVar6[1] - iVar3 >> 2)" ( (binary_expression "piVar6[1] - iVar3 >> 2" (binary_expression "piVar6[1] - iVar3" (subscript_expression "piVar6[1]" identifier [ number_literal ]) - identifier) >> number_literal) )) * number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);\n  }" { comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1)" identifier (argument_list "(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1)" ( (binary_expression "unaff_EDI + 0x1cbf1c" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1cc133" identifier + number_literal) , identifier , identifier ))) ;) })) (expression_statement "piVar6 = (int *)(uVar9 * 0x1c + iVar3);" (assignment_expression "piVar6 = (int *)(uVar9 * 0x1c + iVar3)" identifier = (cast_expression "(int *)(uVar9 * 0x1c + iVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 * 0x1c + iVar3)" ( (binary_expression "uVar9 * 0x1c + iVar3" (binary_expression "uVar9 * 0x1c" identifier * number_literal) + identifier) )))) ;) (if_statement "if ((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);\n  }" if (parenthesized_expression "((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4)" ( (binary_expression "(*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4" (binary_expression "(*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555" (parenthesized_expression "(*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2)" ( (binary_expression "*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2" (binary_expression "*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c)" (pointer_expression "*(int *)(param_2 + 0x60)" * (cast_expression "(int *)(param_2 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_2 + 0x5c)" * (cast_expression "(int *)(param_2 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5c)" ( (binary_expression "param_2 + 0x5c" identifier + number_literal) ))))) >> number_literal) )) * number_literal) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);\n  }" { comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1)" identifier (argument_list "(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1)" ( (binary_expression "unaff_EDI + 0x1cbf1c" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1cc133" identifier + number_literal) , identifier , identifier ))) ;) })) (expression_statement "piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc);" (assignment_expression "piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc)" identifier = (cast_expression "(int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x5c) + iVar4 * 0xc)" ( (binary_expression "*(int *)(param_2 + 0x5c) + iVar4 * 0xc" (pointer_expression "*(int *)(param_2 + 0x5c)" * (cast_expression "(int *)(param_2 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5c)" ( (binary_expression "param_2 + 0x5c" identifier + number_literal) )))) + (binary_expression "iVar4 * 0xc" identifier * number_literal)) )))) ;) (expression_statement "iVar3 = *piVar7;" (assignment_expression "iVar3 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "iVar4 = *piVar6;" (assignment_expression "iVar4 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (if_statement "if (iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555) {\n    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);\n    iVar3 = puVar2[1];\n    if (iVar3 != 0) {\n                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */\n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }\n    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);\n    if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }\n    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));\n    if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001c6190(unaff_EDI + 0x1cbfd9);\n  }" if (parenthesized_expression "(iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555)" ( (binary_expression "iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555" identifier < (binary_expression "(piVar7[1] - iVar3 >> 3) * -0x55555555" (parenthesized_expression "(piVar7[1] - iVar3 >> 3)" ( (binary_expression "piVar7[1] - iVar3 >> 3" (binary_expression "piVar7[1] - iVar3" (subscript_expression "piVar7[1]" identifier [ number_literal ]) - identifier) >> number_literal) )) * number_literal)) )) (compound_statement "{\n    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);\n    iVar3 = puVar2[1];\n    if (iVar3 != 0) {\n                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */\n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }\n    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);\n    if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }\n    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));\n    if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001c6190(unaff_EDI + 0x1cbfd9);\n  }" { (expression_statement "puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);" (assignment_expression "puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18)" identifier = (cast_expression "(undefined4 *)(iVar3 + iVar4 * 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar4 * 0x18)" ( (binary_expression "iVar3 + iVar4 * 0x18" identifier + (binary_expression "iVar4 * 0x18" identifier * number_literal)) )))) ;) (expression_statement "iVar3 = puVar2[1];" (assignment_expression "iVar3 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 != 0) {\n                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */\n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */\n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }" { comment (expression_statement "FUN_00189fb0(param_1,*puVar2,iVar3);" (call_expression "FUN_00189fb0(param_1,*puVar2,iVar3)" identifier (argument_list "(param_1,*puVar2,iVar3)" ( identifier , (pointer_expression "*puVar2" * identifier) , identifier ))) ;) (if_statement "if (param_1[1] == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }" if (parenthesized_expression "(param_1[1] == 0x7fffffff)" ( (binary_expression "param_1[1] == 0x7fffffff" (subscript_expression "param_1[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }" { comment (expression_statement "FUN_001c6190(unaff_EDI + 0x1cbfd9);" (call_expression "FUN_001c6190(unaff_EDI + 0x1cbfd9)" identifier (argument_list "(unaff_EDI + 0x1cbfd9)" ( (binary_expression "unaff_EDI + 0x1cbfd9" identifier + number_literal) ))) ;) })) (expression_statement "FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);" (call_expression "FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1)" identifier (argument_list "(param_1,unaff_EDI + 0x1dfde7,1)" ( identifier , (binary_expression "unaff_EDI + 0x1dfde7" identifier + number_literal) , number_literal ))) ;) })) (expression_statement "FUN_00189fb0(param_1,piVar6[1],piVar6[2]);" (call_expression "FUN_00189fb0(param_1,piVar6[1],piVar6[2])" identifier (argument_list "(param_1,piVar6[1],piVar6[2])" ( identifier , (subscript_expression "piVar6[1]" identifier [ number_literal ]) , (subscript_expression "piVar6[2]" identifier [ number_literal ]) ))) ;) (if_statement "if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }" if (parenthesized_expression "(param_1[1] == 0)" ( (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }" { (expression_statement "FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);" (call_expression "FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9)" identifier (argument_list "(param_1,0,0,unaff_EDI + 0x1cbfee,9)" ( identifier , number_literal , number_literal , (binary_expression "unaff_EDI + 0x1cbfee" identifier + number_literal) , number_literal ))) ;) })) (expression_statement "snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));" (call_expression "snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10))" identifier (argument_list "((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10))" ( (cast_expression "(char *)local_5c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (binary_expression "&UNK_001e2b14 + unaff_EDI" (pointer_expression "&UNK_001e2b14" & identifier) + identifier) , (pointer_expression "*(undefined4 *)(param_3 + 0x10)" * (cast_expression "(undefined4 *)(param_3 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) ))) ;) (if_statement "if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }" if (parenthesized_expression "(param_1[1] != 0x7fffffff)" ( (binary_expression "param_1[1] != 0x7fffffff" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }" { (expression_statement "FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);" (call_expression "FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1)" identifier (argument_list "(param_1,unaff_EDI + 0x1d297b,1)" ( identifier , (binary_expression "unaff_EDI + 0x1d297b" identifier + number_literal) , number_literal ))) ;) (expression_statement "puVar11 = local_5c;" (assignment_expression "puVar11 = local_5c" identifier = identifier) ;) (do_statement "do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);" do (compound_statement "{\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      }" { (expression_statement "puVar10 = puVar11;" (assignment_expression "puVar10 = puVar11" identifier = identifier) ;) (expression_statement "uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;" (assignment_expression "uVar8 = *puVar10 + 0xfefefeff & ~*puVar10" identifier = (binary_expression "*puVar10 + 0xfefefeff & ~*puVar10" (binary_expression "*puVar10 + 0xfefefeff" (pointer_expression "*puVar10" * identifier) + number_literal) & (unary_expression "~*puVar10" ~ (pointer_expression "*puVar10" * identifier)))) ;) (expression_statement "uVar9 = uVar8 & 0x80808080;" (assignment_expression "uVar9 = uVar8 & 0x80808080" identifier = (binary_expression "uVar8 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar11 = puVar10 + 1;" (assignment_expression "puVar11 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) ;) (expression_statement "bVar13 = (uVar8 & 0x8080) == 0;" (assignment_expression "bVar13 = (uVar8 & 0x8080) == 0" identifier = (binary_expression "(uVar8 & 0x8080) == 0" (parenthesized_expression "(uVar8 & 0x8080)" ( (binary_expression "uVar8 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        uVar9 = uVar9 >> 0x10;\n      }" { (expression_statement "uVar9 = uVar9 >> 0x10;" (assignment_expression "uVar9 = uVar9 >> 0x10" identifier = (binary_expression "uVar9 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }" { (expression_statement "puVar11 = (uint *)((int)puVar10 + 6);" (assignment_expression "puVar11 = (uint *)((int)puVar10 + 6)" identifier = (cast_expression "(uint *)((int)puVar10 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 6)" ( (binary_expression "(int)puVar10 + 6" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (expression_statement "pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));" (assignment_expression "pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c))" identifier = (cast_expression "(char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c))" ( (binary_expression "(int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c)" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c)" ( (binary_expression "(-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c" (parenthesized_expression "(-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9))" ( (binary_expression "-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)" number_literal - (cast_expression "(uint)CARRY1((byte)uVar9,(byte)uVar9)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY1((byte)uVar9,(byte)uVar9)" identifier (argument_list "((byte)uVar9,(byte)uVar9)" ( (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )) - (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (if_statement "if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }" if (parenthesized_expression "(pcVar12 <= (char *)(0x7fffffff - param_1[1]))" ( (binary_expression "pcVar12 <= (char *)(0x7fffffff - param_1[1])" identifier <= (cast_expression "(char *)(0x7fffffff - param_1[1])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(0x7fffffff - param_1[1])" ( (binary_expression "0x7fffffff - param_1[1]" number_literal - (subscript_expression "param_1[1]" identifier [ number_literal ])) )))) )) (compound_statement "{\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }" { (expression_statement "FUN_00189fb0(param_1,local_5c,pcVar12);" (call_expression "FUN_00189fb0(param_1,local_5c,pcVar12)" identifier (argument_list "(param_1,local_5c,pcVar12)" ( identifier , identifier , identifier ))) ;) (return_statement "return param_1;" return identifier ;) })) comment (expression_statement "FUN_001c6190(unaff_EDI + 0x1cbfd9);" (call_expression "FUN_001c6190(unaff_EDI + 0x1cbfd9)" identifier (argument_list "(unaff_EDI + 0x1cbfd9)" ( (binary_expression "unaff_EDI + 0x1cbfd9" identifier + number_literal) ))) ;) })) comment (expression_statement "FUN_001c6190(unaff_EDI + 0x1cbfd9);" (call_expression "FUN_001c6190(unaff_EDI + 0x1cbfd9)" identifier (argument_list "(unaff_EDI + 0x1cbfd9)" ( (binary_expression "unaff_EDI + 0x1cbfd9" identifier + number_literal) ))) ;) })) comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1)" identifier (argument_list "(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1)" ( (binary_expression "unaff_EDI + 0x1cbf1c" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1cc133" identifier + number_literal) , identifier , identifier ))) ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: string format_file_lineno(Sized_dwarf_line_info<64,_false> * this,\n   Offset_to_lineno_entry * loc) */\n\nstring * __thiscall\ngold::Sized_dwarf_line_info<64,_false>::format_file_lineno\n          (string *__return_storage_ptr__,Sized_dwarf_line_info<64,_false> *this,\n          Offset_to_lineno_entry *loc)\n\n{\n  pointer pvVar1;\n  int iVar2;\n  pointer pbVar3;\n  pointer pvVar4;\n  pointer pvVar5;\n  uint uVar6;\n  uint uVar7;\n  pointer ppVar8;\n  uint *puVar9;\n  uint *puVar10;\n  char *pcVar11;\n  int unaff_EDI;\n  bool bVar12;\n  string *ret;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar13;\n  char buffer [64];\n  \n  __x86_get_pc_thunk_di();\n  paVar13 = &ret->field_2;\n  (ret->field_2)._M_local_buf[0] = '\0';\n  pvVar1 = (this->files_).\n           super__Vector_base<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>,_std::allocator<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>_>\n           ._M_impl._M_finish;\n  (ret->_M_dataplus)._M_p = (pointer)paVar13;\n  ret->_M_string_length = 0;\n  iVar2 = loc->header_num;\n  pvVar4 = (this->files_).\n           super__Vector_base<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>,_std::allocator<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>_>\n           ._M_impl._M_start;\n  if (((int)pvVar1 - (int)pvVar4 >> 2) * -0x55555555 <= iVar2) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e1,(char *)(unaff_EDI + 0x1cc133));\n  }\n  uVar7 = *(uint *)&loc->field_0xc & 0x7fffffff;\n  pvVar4 = pvVar4 + iVar2;\n  ppVar8 = (pvVar4->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl._M_start;\n  if ((uint)(((int)(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )._M_impl._M_finish - (int)ppVar8 >> 2) * -0x49249249) <= uVar7) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e3,(char *)(unaff_EDI + 0x1cc133));\n  }\n  ppVar8 = ppVar8 + uVar7;\n  pvVar5 = (this->directories_).\n           super__Vector_base<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>,_std::allocator<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>\n           ._M_impl._M_start;\n  if (((int)(this->directories_).\n            super__Vector_base<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>,_std::allocator<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>\n            ._M_impl._M_finish - (int)pvVar5 >> 2) * -0x55555555 <= iVar2) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e8,(char *)(unaff_EDI + 0x1cc133));\n  }\n  pvVar5 = pvVar5 + iVar2;\n  pbVar3 = (pvVar5->\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           )._M_impl._M_start;\n  if (ppVar8->first <\n      ((int)(pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish - (int)pbVar3 >> 3) * -0x55555555) {\n    pbVar3 = pbVar3 + ppVar8->first;\n    uVar7 = pbVar3->_M_string_length;\n    if (uVar7 != 0) {\n                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */\n      std::string::_M_append((string *)ret,(pbVar3->_M_dataplus)._M_p,uVar7);\n      if (ret->_M_string_length == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n      }\n      std::string::_M_append\n                ((string *)ret,\n                 (char *)(std::\n                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long> + unaff_EDI + 7),1);\n    }\n    std::string::_M_append\n              ((string *)ret,(ppVar8->second)._M_dataplus._M_p,\n               *(size_type *)((int)&ppVar8->second + 4));\n    if (ret->_M_string_length == 0) {\n      std::string::_M_replace((string *)ret,0,0,(char *)(unaff_EDI + 0x1cbfee),9);\n    }\n    snprintf(buffer,0x40,(char *)(unaff_EDI + 0x1e2b14),loc->line_num,paVar13);\n    if (ret->_M_string_length != 0x7fffffff) {\n      std::string::_M_append((string *)ret,(char *)(unaff_EDI + 0x1d297b),1);\n      puVar10 = (uint *)buffer;\n      do {\n        puVar9 = puVar10;\n        uVar6 = *puVar9 + 0xfefefeff & ~*puVar9;\n        uVar7 = uVar6 & 0x80808080;\n        puVar10 = puVar9 + 1;\n      } while (uVar7 == 0);\n      bVar12 = (uVar6 & 0x8080) == 0;\n      if (bVar12) {\n        uVar7 = uVar7 >> 0x10;\n      }\n      if (bVar12) {\n        puVar10 = (uint *)((int)puVar9 + 6);\n      }\n      pcVar11 = (char *)((int)puVar10 + ((-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)) - (int)buffer)\n                        );\n      if (pcVar11 <= (char *)(0x7fffffff - ret->_M_string_length)) {\n        std::string::_M_append((string *)ret,buffer,(uint)pcVar11);\n        return ret;\n      }\n                    /* WARNING: Subroutine does not return */\n      std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n    }\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8ea,(char *)(unaff_EDI + 0x1cc133));\n}\n\n" comment comment (ERROR "string * __thiscall\ngold::Sized_dwarf_line_info<64,_false>::format_file_lineno\n          (string *__return_storage_ptr__,Sized_dwarf_line_info<64,_false> *this,\n          Offset_to_lineno_entry *loc)" (binary_expression "string * __thiscall\ngold::Sized_dwarf_line_info<64,_false>::format_file_lineno\n          (string *__return_storage_ptr__,Sized_dwarf_line_info<64,_false> *this,\n          Offset_to_lineno_entry *loc)" (binary_expression "string * __thiscall\ngold::Sized_dwarf_line_info<64" (binary_expression "string * __thiscall" identifier * identifier) (ERROR "gold::Sized_dwarf_line_info" identifier : : identifier) < number_literal) (ERROR ",_false" , identifier) > (ERROR "::" : :) (call_expression "format_file_lineno\n          (string *__return_storage_ptr__,Sized_dwarf_line_info<64,_false> *this,\n          Offset_to_lineno_entry *loc)" identifier (argument_list "(string *__return_storage_ptr__,Sized_dwarf_line_info<64,_false> *this,\n          Offset_to_lineno_entry *loc)" ( (binary_expression "string *__return_storage_ptr__" identifier * identifier) , (binary_expression "Sized_dwarf_line_info<64" identifier < number_literal) , (binary_expression "_false> *this" identifier > (pointer_expression "*this" * identifier)) , (binary_expression "Offset_to_lineno_entry *loc" identifier * identifier) ))))) (compound_statement "{\n  pointer pvVar1;\n  int iVar2;\n  pointer pbVar3;\n  pointer pvVar4;\n  pointer pvVar5;\n  uint uVar6;\n  uint uVar7;\n  pointer ppVar8;\n  uint *puVar9;\n  uint *puVar10;\n  char *pcVar11;\n  int unaff_EDI;\n  bool bVar12;\n  string *ret;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar13;\n  char buffer [64];\n  \n  __x86_get_pc_thunk_di();\n  paVar13 = &ret->field_2;\n  (ret->field_2)._M_local_buf[0] = '\0';\n  pvVar1 = (this->files_).\n           super__Vector_base<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>,_std::allocator<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>_>\n           ._M_impl._M_finish;\n  (ret->_M_dataplus)._M_p = (pointer)paVar13;\n  ret->_M_string_length = 0;\n  iVar2 = loc->header_num;\n  pvVar4 = (this->files_).\n           super__Vector_base<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>,_std::allocator<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>_>\n           ._M_impl._M_start;\n  if (((int)pvVar1 - (int)pvVar4 >> 2) * -0x55555555 <= iVar2) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e1,(char *)(unaff_EDI + 0x1cc133));\n  }\n  uVar7 = *(uint *)&loc->field_0xc & 0x7fffffff;\n  pvVar4 = pvVar4 + iVar2;\n  ppVar8 = (pvVar4->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl._M_start;\n  if ((uint)(((int)(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )._M_impl._M_finish - (int)ppVar8 >> 2) * -0x49249249) <= uVar7) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e3,(char *)(unaff_EDI + 0x1cc133));\n  }\n  ppVar8 = ppVar8 + uVar7;\n  pvVar5 = (this->directories_).\n           super__Vector_base<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>,_std::allocator<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>\n           ._M_impl._M_start;\n  if (((int)(this->directories_).\n            super__Vector_base<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>,_std::allocator<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>\n            ._M_impl._M_finish - (int)pvVar5 >> 2) * -0x55555555 <= iVar2) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e8,(char *)(unaff_EDI + 0x1cc133));\n  }\n  pvVar5 = pvVar5 + iVar2;\n  pbVar3 = (pvVar5->\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           )._M_impl._M_start;\n  if (ppVar8->first <\n      ((int)(pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish - (int)pbVar3 >> 3) * -0x55555555) {\n    pbVar3 = pbVar3 + ppVar8->first;\n    uVar7 = pbVar3->_M_string_length;\n    if (uVar7 != 0) {\n                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */\n      std::string::_M_append((string *)ret,(pbVar3->_M_dataplus)._M_p,uVar7);\n      if (ret->_M_string_length == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n      }\n      std::string::_M_append\n                ((string *)ret,\n                 (char *)(std::\n                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long> + unaff_EDI + 7),1);\n    }\n    std::string::_M_append\n              ((string *)ret,(ppVar8->second)._M_dataplus._M_p,\n               *(size_type *)((int)&ppVar8->second + 4));\n    if (ret->_M_string_length == 0) {\n      std::string::_M_replace((string *)ret,0,0,(char *)(unaff_EDI + 0x1cbfee),9);\n    }\n    snprintf(buffer,0x40,(char *)(unaff_EDI + 0x1e2b14),loc->line_num,paVar13);\n    if (ret->_M_string_length != 0x7fffffff) {\n      std::string::_M_append((string *)ret,(char *)(unaff_EDI + 0x1d297b),1);\n      puVar10 = (uint *)buffer;\n      do {\n        puVar9 = puVar10;\n        uVar6 = *puVar9 + 0xfefefeff & ~*puVar9;\n        uVar7 = uVar6 & 0x80808080;\n        puVar10 = puVar9 + 1;\n      } while (uVar7 == 0);\n      bVar12 = (uVar6 & 0x8080) == 0;\n      if (bVar12) {\n        uVar7 = uVar7 >> 0x10;\n      }\n      if (bVar12) {\n        puVar10 = (uint *)((int)puVar9 + 6);\n      }\n      pcVar11 = (char *)((int)puVar10 + ((-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)) - (int)buffer)\n                        );\n      if (pcVar11 <= (char *)(0x7fffffff - ret->_M_string_length)) {\n        std::string::_M_append((string *)ret,buffer,(uint)pcVar11);\n        return ret;\n      }\n                    /* WARNING: Subroutine does not return */\n      std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n    }\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8ea,(char *)(unaff_EDI + 0x1cc133));\n}" { (declaration "pointer pvVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "pointer pbVar3;" type_identifier identifier ;) (declaration "pointer pvVar4;" type_identifier identifier ;) (declaration "pointer pvVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "pointer ppVar8;" type_identifier identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "string *ret;" type_identifier (pointer_declarator "*ret" * identifier) ;) (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_>_9\n  *paVar13;" (binary_expression "allocator<char>_>_9\n  *paVar13" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar13" identifier * identifier)) ;) (declaration "char buffer [64];" primitive_type (array_declarator "buffer [64]" identifier [ number_literal ]) ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "paVar13 = &ret->field_2;" (assignment_expression "paVar13 = &ret->field_2" identifier = (pointer_expression "&ret->field_2" & (field_expression "ret->field_2" identifier -> field_identifier))) ;) (expression_statement "(ret->field_2)._M_local_buf[0] = '\0';" (assignment_expression "(ret->field_2)._M_local_buf[0] = '\0'" (subscript_expression "(ret->field_2)._M_local_buf[0]" (field_expression "(ret->field_2)._M_local_buf" (parenthesized_expression "(ret->field_2)" ( (field_expression "ret->field_2" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (ERROR "pvVar1 = (this->files_).\n           super__Vector_base<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>,_std::allocator<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "pvVar1 = (this->files_).\n           super__Vector_base<std::vector<std::pair<int,_std" (binary_expression "pvVar1 = (this->files_).\n           super__Vector_base<std::vector<std::pair<int" (binary_expression "pvVar1 = (this->files_).\n           super__Vector_base<std::vector<std" (assignment_expression "pvVar1 = (this->files_).\n           super__Vector_base<std" identifier = (binary_expression "(this->files_).\n           super__Vector_base<std" (field_expression "(this->files_).\n           super__Vector_base" (parenthesized_expression "(this->files_)" ( (field_expression "this->files_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_std" (binary_expression "pair<int" identifier < identifier) , identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_>_>_>,_std" (binary_expression "allocator<char>_>_>_>_" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "pair<int,_std" (binary_expression "pair<int" identifier < identifier) , identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_std" (binary_expression "pair<int" identifier < identifier) , identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>_>_>_>\n           ._M_impl._M_finish;" (field_expression "allocator<char>_>_>_>_>_>_>\n           ._M_impl._M_finish" (field_expression "allocator<char>_>_>_>_>_>_>\n           ._M_impl" (binary_expression "allocator<char>_>_>_>_>_>_" (binary_expression "allocator<char>_>_>_>_>_" (binary_expression "allocator<char>_>_>_>_" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "(ret->_M_dataplus)._M_p = (pointer)paVar13;" (assignment_expression "(ret->_M_dataplus)._M_p = (pointer)paVar13" (field_expression "(ret->_M_dataplus)._M_p" (parenthesized_expression "(ret->_M_dataplus)" ( (field_expression "ret->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(pointer)paVar13" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "ret->_M_string_length = 0;" (assignment_expression "ret->_M_string_length = 0" (field_expression "ret->_M_string_length" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar2 = loc->header_num;" (assignment_expression "iVar2 = loc->header_num" identifier = (field_expression "loc->header_num" identifier -> field_identifier)) ;) (ERROR "pvVar4 = (this->files_).\n           super__Vector_base<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>,_std::allocator<std::vector<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "pvVar4 = (this->files_).\n           super__Vector_base<std::vector<std::pair<int,_std" (binary_expression "pvVar4 = (this->files_).\n           super__Vector_base<std::vector<std::pair<int" (binary_expression "pvVar4 = (this->files_).\n           super__Vector_base<std::vector<std" (assignment_expression "pvVar4 = (this->files_).\n           super__Vector_base<std" identifier = (binary_expression "(this->files_).\n           super__Vector_base<std" (field_expression "(this->files_).\n           super__Vector_base" (parenthesized_expression "(this->files_)" ( (field_expression "this->files_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_std" (binary_expression "pair<int" identifier < identifier) , identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_>_>_>,_std" (binary_expression "allocator<char>_>_>_>_" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "pair<int,_std" (binary_expression "pair<int" identifier < identifier) , identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_std" (binary_expression "pair<int" identifier < identifier) , identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>_>_>_>\n           ._M_impl._M_start;" (field_expression "allocator<char>_>_>_>_>_>_>\n           ._M_impl._M_start" (field_expression "allocator<char>_>_>_>_>_>_>\n           ._M_impl" (binary_expression "allocator<char>_>_>_>_>_>_" (binary_expression "allocator<char>_>_>_>_>_" (binary_expression "allocator<char>_>_>_>_" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (((int)pvVar1 - (int)pvVar4 >> 2) * -0x55555555 <= iVar2) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e1,(char *)(unaff_EDI + 0x1cc133));\n  }" if (parenthesized_expression "(((int)pvVar1 - (int)pvVar4 >> 2) * -0x55555555 <= iVar2)" ( (binary_expression "((int)pvVar1 - (int)pvVar4 >> 2) * -0x55555555 <= iVar2" (binary_expression "((int)pvVar1 - (int)pvVar4 >> 2) * -0x55555555" (parenthesized_expression "((int)pvVar1 - (int)pvVar4 >> 2)" ( (binary_expression "(int)pvVar1 - (int)pvVar4 >> 2" (binary_expression "(int)pvVar1 - (int)pvVar4" (cast_expression "(int)pvVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pvVar4" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e1,(char *)(unaff_EDI + 0x1cc133));\n  }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e1,(char *)(unaff_EDI + 0x1cc133));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e1,(char *)(unaff_EDI + 0x1cc133))" identifier (argument_list "((char *)(unaff_EDI + 0x1cbf1c),0x8e1,(char *)(unaff_EDI + 0x1cc133))" ( (cast_expression "(char *)(unaff_EDI + 0x1cbf1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1cbf1c)" ( (binary_expression "unaff_EDI + 0x1cbf1c" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1cc133)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1cc133)" ( (binary_expression "unaff_EDI + 0x1cc133" identifier + number_literal) ))) ))) ;) })) (expression_statement "uVar7 = *(uint *)&loc->field_0xc & 0x7fffffff;" (assignment_expression "uVar7 = *(uint *)&loc->field_0xc & 0x7fffffff" identifier = (binary_expression "*(uint *)&loc->field_0xc & 0x7fffffff" (pointer_expression "*(uint *)&loc->field_0xc" * (cast_expression "(uint *)&loc->field_0xc" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&loc->field_0xc" & (field_expression "loc->field_0xc" identifier -> field_identifier)))) & number_literal)) ;) (expression_statement "pvVar4 = pvVar4 + iVar2;" (assignment_expression "pvVar4 = pvVar4 + iVar2" identifier = (binary_expression "pvVar4 + iVar2" identifier + identifier)) ;) (expression_statement "ppVar8 = (pvVar4->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl._M_start;" (assignment_expression "ppVar8 = (pvVar4->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl._M_start" identifier = (field_expression "(pvVar4->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl._M_start" (field_expression "(pvVar4->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )._M_impl" (parenthesized_expression "(pvVar4->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n           )" ( (ERROR "pvVar4->\n           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "pvVar4->\n           super__Vector_base<std::pair<int,_std" (binary_expression "pvVar4->\n           super__Vector_base<std::pair<int" (binary_expression "pvVar4->\n           super__Vector_base<std" (field_expression "pvVar4->\n           super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_std" (binary_expression "pair<int" identifier < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>_>" (binary_expression "allocator<char>_>_>_>_" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((uint)(((int)(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )._M_impl._M_finish - (int)ppVar8 >> 2) * -0x49249249) <= uVar7) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e3,(char *)(unaff_EDI + 0x1cc133));\n  }" if (parenthesized_expression "((uint)(((int)(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )._M_impl._M_finish - (int)ppVar8 >> 2) * -0x49249249) <= uVar7)" ( (binary_expression "(uint)(((int)(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )._M_impl._M_finish - (int)ppVar8 >> 2) * -0x49249249) <= uVar7" (call_expression "(uint)(((int)(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )._M_impl._M_finish - (int)ppVar8 >> 2) * -0x49249249)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((int)(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )._M_impl._M_finish - (int)ppVar8 >> 2) * -0x49249249)" ( (binary_expression "((int)(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )._M_impl._M_finish - (int)ppVar8 >> 2) * -0x49249249" (parenthesized_expression "((int)(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )._M_impl._M_finish - (int)ppVar8 >> 2)" ( (binary_expression "(int)(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )._M_impl._M_finish - (int)ppVar8 >> 2" (binary_expression "(int)(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )._M_impl._M_finish - (int)ppVar8" (cast_expression "(int)(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )._M_impl._M_finish" ( (type_descriptor "int" primitive_type) ) (field_expression "(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )._M_impl._M_finish" (field_expression "(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )._M_impl" (parenthesized_expression "(pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                   )" ( (ERROR "pvVar4->\n                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::allocator<std::pair<int,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "pvVar4->\n                   super__Vector_base<std::pair<int,_std" (binary_expression "pvVar4->\n                   super__Vector_base<std::pair<int" (binary_expression "pvVar4->\n                   super__Vector_base<std" (field_expression "pvVar4->\n                   super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_std" (binary_expression "pair<int" identifier < identifier) , identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>_>" (binary_expression "allocator<char>_>_>_>_" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) - (cast_expression "(int)ppVar8" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e3,(char *)(unaff_EDI + 0x1cc133));\n  }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e3,(char *)(unaff_EDI + 0x1cc133));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e3,(char *)(unaff_EDI + 0x1cc133))" identifier (argument_list "((char *)(unaff_EDI + 0x1cbf1c),0x8e3,(char *)(unaff_EDI + 0x1cc133))" ( (cast_expression "(char *)(unaff_EDI + 0x1cbf1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1cbf1c)" ( (binary_expression "unaff_EDI + 0x1cbf1c" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1cc133)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1cc133)" ( (binary_expression "unaff_EDI + 0x1cc133" identifier + number_literal) ))) ))) ;) })) (expression_statement "ppVar8 = ppVar8 + uVar7;" (assignment_expression "ppVar8 = ppVar8 + uVar7" identifier = (binary_expression "ppVar8 + uVar7" identifier + identifier)) ;) (ERROR "pvVar5 = (this->directories_).\n           super__Vector_base<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>,_std::allocator<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (binary_expression "pvVar5 = (this->directories_).\n           super__Vector_base<std::vector<std" (assignment_expression "pvVar5 = (this->directories_).\n           super__Vector_base<std" identifier = (binary_expression "(this->directories_).\n           super__Vector_base<std" (field_expression "(this->directories_).\n           super__Vector_base" (parenthesized_expression "(this->directories_)" ( (field_expression "this->directories_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::vector" : : identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_>_>,_std" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>_>_>\n           ._M_impl._M_start;" (field_expression "allocator<char>_>_>_>_>_>\n           ._M_impl._M_start" (field_expression "allocator<char>_>_>_>_>_>\n           ._M_impl" (binary_expression "allocator<char>_>_>_>_>_" (binary_expression "allocator<char>_>_>_>_" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (((int)(this->directories_).\n            super__Vector_base<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>,_std::allocator<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>\n            ._M_impl._M_finish - (int)pvVar5 >> 2) * -0x55555555 <= iVar2) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e8,(char *)(unaff_EDI + 0x1cc133));\n  }" if (parenthesized_expression "(((int)(this->directories_).\n            super__Vector_base<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>,_std::allocator<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>\n            ._M_impl._M_finish - (int)pvVar5 >> 2) * -0x55555555 <= iVar2)" ( (binary_expression "((int)(this->directories_).\n            super__Vector_base<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>,_std::allocator<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>\n            ._M_impl._M_finish - (int)pvVar5 >> 2) * -0x55555555 <= iVar2" (binary_expression "((int)(this->directories_).\n            super__Vector_base<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>,_std::allocator<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>\n            ._M_impl._M_finish - (int)pvVar5 >> 2) * -0x55555555" (parenthesized_expression "((int)(this->directories_).\n            super__Vector_base<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>,_std::allocator<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>_>\n            ._M_impl._M_finish - (int)pvVar5 >> 2)" ( (ERROR "(int)(this->directories_).\n            super__Vector_base<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>,_std::allocator<std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "(int)(this->directories_).\n            super__Vector_base<std::vector<std::__cxx11::basic_string<char,_std" (binary_expression "(int)(this->directories_).\n            super__Vector_base<std::vector<std::__cxx11::basic_string<char" (binary_expression "(int)(this->directories_).\n            super__Vector_base<std::vector<std" (binary_expression "(int)(this->directories_).\n            super__Vector_base<std" (cast_expression "(int)(this->directories_).\n            super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->directories_).\n            super__Vector_base" (parenthesized_expression "(this->directories_)" ( (field_expression "this->directories_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::vector" : : identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>_>,_std" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "vector<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>_>_>\n            ._M_impl._M_finish - (int)pvVar5 >> 2" (binary_expression "allocator<char>_>_>_>_>_>\n            ._M_impl._M_finish - (int)pvVar5" (field_expression "allocator<char>_>_>_>_>_>\n            ._M_impl._M_finish" (field_expression "allocator<char>_>_>_>_>_>\n            ._M_impl" (binary_expression "allocator<char>_>_>_>_>_" (binary_expression "allocator<char>_>_>_>_" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(int)pvVar5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e8,(char *)(unaff_EDI + 0x1cc133));\n  }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e8,(char *)(unaff_EDI + 0x1cc133));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8e8,(char *)(unaff_EDI + 0x1cc133))" identifier (argument_list "((char *)(unaff_EDI + 0x1cbf1c),0x8e8,(char *)(unaff_EDI + 0x1cc133))" ( (cast_expression "(char *)(unaff_EDI + 0x1cbf1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1cbf1c)" ( (binary_expression "unaff_EDI + 0x1cbf1c" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1cc133)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1cc133)" ( (binary_expression "unaff_EDI + 0x1cc133" identifier + number_literal) ))) ))) ;) })) (expression_statement "pvVar5 = pvVar5 + iVar2;" (assignment_expression "pvVar5 = pvVar5 + iVar2" identifier = (binary_expression "pvVar5 + iVar2" identifier + identifier)) ;) (expression_statement "pbVar3 = (pvVar5->\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           )._M_impl._M_start;" (assignment_expression "pbVar3 = (pvVar5->\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           )._M_impl._M_start" identifier = (field_expression "(pvVar5->\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           )._M_impl._M_start" (field_expression "(pvVar5->\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           )._M_impl" (parenthesized_expression "(pvVar5->\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           )" ( (ERROR "pvVar5->\n           super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "pvVar5->\n           super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "pvVar5->\n           super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "pvVar5->\n           super__Vector_base<std" (field_expression "pvVar5->\n           super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (ppVar8->first <\n      ((int)(pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish - (int)pbVar3 >> 3) * -0x55555555) {\n    pbVar3 = pbVar3 + ppVar8->first;\n    uVar7 = pbVar3->_M_string_length;\n    if (uVar7 != 0) {\n                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */\n      std::string::_M_append((string *)ret,(pbVar3->_M_dataplus)._M_p,uVar7);\n      if (ret->_M_string_length == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n      }\n      std::string::_M_append\n                ((string *)ret,\n                 (char *)(std::\n                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long> + unaff_EDI + 7),1);\n    }\n    std::string::_M_append\n              ((string *)ret,(ppVar8->second)._M_dataplus._M_p,\n               *(size_type *)((int)&ppVar8->second + 4));\n    if (ret->_M_string_length == 0) {\n      std::string::_M_replace((string *)ret,0,0,(char *)(unaff_EDI + 0x1cbfee),9);\n    }\n    snprintf(buffer,0x40,(char *)(unaff_EDI + 0x1e2b14),loc->line_num,paVar13);\n    if (ret->_M_string_length != 0x7fffffff) {\n      std::string::_M_append((string *)ret,(char *)(unaff_EDI + 0x1d297b),1);\n      puVar10 = (uint *)buffer;\n      do {\n        puVar9 = puVar10;\n        uVar6 = *puVar9 + 0xfefefeff & ~*puVar9;\n        uVar7 = uVar6 & 0x80808080;\n        puVar10 = puVar9 + 1;\n      } while (uVar7 == 0);\n      bVar12 = (uVar6 & 0x8080) == 0;\n      if (bVar12) {\n        uVar7 = uVar7 >> 0x10;\n      }\n      if (bVar12) {\n        puVar10 = (uint *)((int)puVar9 + 6);\n      }\n      pcVar11 = (char *)((int)puVar10 + ((-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)) - (int)buffer)\n                        );\n      if (pcVar11 <= (char *)(0x7fffffff - ret->_M_string_length)) {\n        std::string::_M_append((string *)ret,buffer,(uint)pcVar11);\n        return ret;\n      }\n                    /* WARNING: Subroutine does not return */\n      std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n    }\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n  }" if (parenthesized_expression "(ppVar8->first <\n      ((int)(pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish - (int)pbVar3 >> 3) * -0x55555555)" ( (binary_expression "ppVar8->first <\n      ((int)(pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish - (int)pbVar3 >> 3) * -0x55555555" (field_expression "ppVar8->first" identifier -> field_identifier) < (binary_expression "((int)(pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish - (int)pbVar3 >> 3) * -0x55555555" (parenthesized_expression "((int)(pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish - (int)pbVar3 >> 3)" ( (binary_expression "(int)(pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish - (int)pbVar3 >> 3" (binary_expression "(int)(pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish - (int)pbVar3" (cast_expression "(int)(pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish" ( (type_descriptor "int" primitive_type) ) (field_expression "(pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish" (field_expression "(pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl" (parenthesized_expression "(pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )" ( (ERROR "pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "pvVar5->\n            super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "pvVar5->\n            super__Vector_base<std" (field_expression "pvVar5->\n            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) - (cast_expression "(int)pbVar3" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) )) (compound_statement "{\n    pbVar3 = pbVar3 + ppVar8->first;\n    uVar7 = pbVar3->_M_string_length;\n    if (uVar7 != 0) {\n                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */\n      std::string::_M_append((string *)ret,(pbVar3->_M_dataplus)._M_p,uVar7);\n      if (ret->_M_string_length == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n      }\n      std::string::_M_append\n                ((string *)ret,\n                 (char *)(std::\n                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long> + unaff_EDI + 7),1);\n    }\n    std::string::_M_append\n              ((string *)ret,(ppVar8->second)._M_dataplus._M_p,\n               *(size_type *)((int)&ppVar8->second + 4));\n    if (ret->_M_string_length == 0) {\n      std::string::_M_replace((string *)ret,0,0,(char *)(unaff_EDI + 0x1cbfee),9);\n    }\n    snprintf(buffer,0x40,(char *)(unaff_EDI + 0x1e2b14),loc->line_num,paVar13);\n    if (ret->_M_string_length != 0x7fffffff) {\n      std::string::_M_append((string *)ret,(char *)(unaff_EDI + 0x1d297b),1);\n      puVar10 = (uint *)buffer;\n      do {\n        puVar9 = puVar10;\n        uVar6 = *puVar9 + 0xfefefeff & ~*puVar9;\n        uVar7 = uVar6 & 0x80808080;\n        puVar10 = puVar9 + 1;\n      } while (uVar7 == 0);\n      bVar12 = (uVar6 & 0x8080) == 0;\n      if (bVar12) {\n        uVar7 = uVar7 >> 0x10;\n      }\n      if (bVar12) {\n        puVar10 = (uint *)((int)puVar9 + 6);\n      }\n      pcVar11 = (char *)((int)puVar10 + ((-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)) - (int)buffer)\n                        );\n      if (pcVar11 <= (char *)(0x7fffffff - ret->_M_string_length)) {\n        std::string::_M_append((string *)ret,buffer,(uint)pcVar11);\n        return ret;\n      }\n                    /* WARNING: Subroutine does not return */\n      std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n    }\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n  }" { (expression_statement "pbVar3 = pbVar3 + ppVar8->first;" (assignment_expression "pbVar3 = pbVar3 + ppVar8->first" identifier = (binary_expression "pbVar3 + ppVar8->first" identifier + (field_expression "ppVar8->first" identifier -> field_identifier))) ;) (expression_statement "uVar7 = pbVar3->_M_string_length;" (assignment_expression "uVar7 = pbVar3->_M_string_length" identifier = (field_expression "pbVar3->_M_string_length" identifier -> field_identifier)) ;) (if_statement "if (uVar7 != 0) {\n                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */\n      std::string::_M_append((string *)ret,(pbVar3->_M_dataplus)._M_p,uVar7);\n      if (ret->_M_string_length == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n      }\n      std::string::_M_append\n                ((string *)ret,\n                 (char *)(std::\n                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long> + unaff_EDI + 7),1);\n    }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */\n      std::string::_M_append((string *)ret,(pbVar3->_M_dataplus)._M_p,uVar7);\n      if (ret->_M_string_length == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n      }\n      std::string::_M_append\n                ((string *)ret,\n                 (char *)(std::\n                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long> + unaff_EDI + 7),1);\n    }" { comment (labeled_statement "std::string::_M_append((string *)ret,(pbVar3->_M_dataplus)._M_p,uVar7);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)ret,(pbVar3->_M_dataplus)._M_p,uVar7);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)ret,(pbVar3->_M_dataplus)._M_p,uVar7);" (call_expression "_M_append((string *)ret,(pbVar3->_M_dataplus)._M_p,uVar7)" identifier (argument_list "((string *)ret,(pbVar3->_M_dataplus)._M_p,uVar7)" ( (cast_expression "(string *)ret" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "(pbVar3->_M_dataplus)._M_p" (parenthesized_expression "(pbVar3->_M_dataplus)" ( (field_expression "pbVar3->_M_dataplus" identifier -> field_identifier) )) . field_identifier) , identifier ))) ;))) (if_statement "if (ret->_M_string_length == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n        std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n      }" if (parenthesized_expression "(ret->_M_string_length == 0x7fffffff)" ( (binary_expression "ret->_M_string_length == 0x7fffffff" (field_expression "ret->_M_string_length" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n      }" { comment (labeled_statement "std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));" (call_expression "__throw_length_error((char *)(unaff_EDI + 0x1cbfd9))" identifier (argument_list "((char *)(unaff_EDI + 0x1cbfd9))" ( (cast_expression "(char *)(unaff_EDI + 0x1cbfd9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1cbfd9)" ( (binary_expression "unaff_EDI + 0x1cbfd9" identifier + number_literal) ))) ))) ;)) })) (labeled_statement "std::string::_M_append\n                ((string *)ret,\n                 (char *)(std::\n                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long> + unaff_EDI + 7),1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append\n                ((string *)ret,\n                 (char *)(std::\n                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long> + unaff_EDI + 7),1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append\n                ((string *)ret,\n                 (char *)(std::\n                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long> + unaff_EDI + 7),1);" (call_expression "_M_append\n                ((string *)ret,\n                 (char *)(std::\n                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long> + unaff_EDI + 7),1)" identifier (argument_list "((string *)ret,\n                 (char *)(std::\n                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long> + unaff_EDI + 7),1)" ( (cast_expression "(string *)ret" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)(std::\n                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long> + unaff_EDI + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(std::\n                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long> + unaff_EDI + 7)" ( (ERROR "std::\n                          num_get<wchar_t,std::istreambuf_iterator<wchar_t,std::" identifier : : (comma_expression "num_get<wchar_t,std" (binary_expression "num_get<wchar_t" identifier < identifier) , identifier) : : (comma_expression "istreambuf_iterator<wchar_t,std" (binary_expression "istreambuf_iterator<wchar_t" identifier < identifier) , identifier) : :) (binary_expression "char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long> + unaff_EDI + 7" (binary_expression "char_traits<wchar_t>>>\n                          ::_M_extract_int<long_long" (binary_expression "char_traits<wchar_t>>>\n                          ::_M_extract_int" identifier < (binary_expression "wchar_t>>>\n                          ::_M_extract_int" identifier >> (ERROR ">\n                          ::" > : :) identifier)) < identifier) > (binary_expression "+ unaff_EDI + 7" (unary_expression "+ unaff_EDI" + identifier) + number_literal)) ))) , number_literal ))) ;))) })) (labeled_statement "std::string::_M_append\n              ((string *)ret,(ppVar8->second)._M_dataplus._M_p,\n               *(size_type *)((int)&ppVar8->second + 4));" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append\n              ((string *)ret,(ppVar8->second)._M_dataplus._M_p,\n               *(size_type *)((int)&ppVar8->second + 4));" statement_identifier : (ERROR ":" :) (expression_statement "_M_append\n              ((string *)ret,(ppVar8->second)._M_dataplus._M_p,\n               *(size_type *)((int)&ppVar8->second + 4));" (call_expression "_M_append\n              ((string *)ret,(ppVar8->second)._M_dataplus._M_p,\n               *(size_type *)((int)&ppVar8->second + 4))" identifier (argument_list "((string *)ret,(ppVar8->second)._M_dataplus._M_p,\n               *(size_type *)((int)&ppVar8->second + 4))" ( (cast_expression "(string *)ret" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "(ppVar8->second)._M_dataplus._M_p" (field_expression "(ppVar8->second)._M_dataplus" (parenthesized_expression "(ppVar8->second)" ( (field_expression "ppVar8->second" identifier -> field_identifier) )) . field_identifier) . field_identifier) , (pointer_expression "*(size_type *)((int)&ppVar8->second + 4)" * (cast_expression "(size_type *)((int)&ppVar8->second + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ppVar8->second + 4)" ( (binary_expression "(int)&ppVar8->second + 4" (cast_expression "(int)&ppVar8->second" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ppVar8->second" & (field_expression "ppVar8->second" identifier -> field_identifier))) + number_literal) )))) ))) ;))) (if_statement "if (ret->_M_string_length == 0) {\n      std::string::_M_replace((string *)ret,0,0,(char *)(unaff_EDI + 0x1cbfee),9);\n    }" if (parenthesized_expression "(ret->_M_string_length == 0)" ( (binary_expression "ret->_M_string_length == 0" (field_expression "ret->_M_string_length" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      std::string::_M_replace((string *)ret,0,0,(char *)(unaff_EDI + 0x1cbfee),9);\n    }" { (labeled_statement "std::string::_M_replace((string *)ret,0,0,(char *)(unaff_EDI + 0x1cbfee),9);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace((string *)ret,0,0,(char *)(unaff_EDI + 0x1cbfee),9);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((string *)ret,0,0,(char *)(unaff_EDI + 0x1cbfee),9);" (call_expression "_M_replace((string *)ret,0,0,(char *)(unaff_EDI + 0x1cbfee),9)" identifier (argument_list "((string *)ret,0,0,(char *)(unaff_EDI + 0x1cbfee),9)" ( (cast_expression "(string *)ret" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1cbfee)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1cbfee)" ( (binary_expression "unaff_EDI + 0x1cbfee" identifier + number_literal) ))) , number_literal ))) ;))) })) (expression_statement "snprintf(buffer,0x40,(char *)(unaff_EDI + 0x1e2b14),loc->line_num,paVar13);" (call_expression "snprintf(buffer,0x40,(char *)(unaff_EDI + 0x1e2b14),loc->line_num,paVar13)" identifier (argument_list "(buffer,0x40,(char *)(unaff_EDI + 0x1e2b14),loc->line_num,paVar13)" ( identifier , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1e2b14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1e2b14)" ( (binary_expression "unaff_EDI + 0x1e2b14" identifier + number_literal) ))) , (field_expression "loc->line_num" identifier -> field_identifier) , identifier ))) ;) (if_statement "if (ret->_M_string_length != 0x7fffffff) {\n      std::string::_M_append((string *)ret,(char *)(unaff_EDI + 0x1d297b),1);\n      puVar10 = (uint *)buffer;\n      do {\n        puVar9 = puVar10;\n        uVar6 = *puVar9 + 0xfefefeff & ~*puVar9;\n        uVar7 = uVar6 & 0x80808080;\n        puVar10 = puVar9 + 1;\n      } while (uVar7 == 0);\n      bVar12 = (uVar6 & 0x8080) == 0;\n      if (bVar12) {\n        uVar7 = uVar7 >> 0x10;\n      }\n      if (bVar12) {\n        puVar10 = (uint *)((int)puVar9 + 6);\n      }\n      pcVar11 = (char *)((int)puVar10 + ((-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)) - (int)buffer)\n                        );\n      if (pcVar11 <= (char *)(0x7fffffff - ret->_M_string_length)) {\n        std::string::_M_append((string *)ret,buffer,(uint)pcVar11);\n        return ret;\n      }\n                    /* WARNING: Subroutine does not return */\n      std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n    }" if (parenthesized_expression "(ret->_M_string_length != 0x7fffffff)" ( (binary_expression "ret->_M_string_length != 0x7fffffff" (field_expression "ret->_M_string_length" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n      std::string::_M_append((string *)ret,(char *)(unaff_EDI + 0x1d297b),1);\n      puVar10 = (uint *)buffer;\n      do {\n        puVar9 = puVar10;\n        uVar6 = *puVar9 + 0xfefefeff & ~*puVar9;\n        uVar7 = uVar6 & 0x80808080;\n        puVar10 = puVar9 + 1;\n      } while (uVar7 == 0);\n      bVar12 = (uVar6 & 0x8080) == 0;\n      if (bVar12) {\n        uVar7 = uVar7 >> 0x10;\n      }\n      if (bVar12) {\n        puVar10 = (uint *)((int)puVar9 + 6);\n      }\n      pcVar11 = (char *)((int)puVar10 + ((-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)) - (int)buffer)\n                        );\n      if (pcVar11 <= (char *)(0x7fffffff - ret->_M_string_length)) {\n        std::string::_M_append((string *)ret,buffer,(uint)pcVar11);\n        return ret;\n      }\n                    /* WARNING: Subroutine does not return */\n      std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));\n    }" { (labeled_statement "std::string::_M_append((string *)ret,(char *)(unaff_EDI + 0x1d297b),1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)ret,(char *)(unaff_EDI + 0x1d297b),1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)ret,(char *)(unaff_EDI + 0x1d297b),1);" (call_expression "_M_append((string *)ret,(char *)(unaff_EDI + 0x1d297b),1)" identifier (argument_list "((string *)ret,(char *)(unaff_EDI + 0x1d297b),1)" ( (cast_expression "(string *)ret" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)(unaff_EDI + 0x1d297b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1d297b)" ( (binary_expression "unaff_EDI + 0x1d297b" identifier + number_literal) ))) , number_literal ))) ;))) (expression_statement "puVar10 = (uint *)buffer;" (assignment_expression "puVar10 = (uint *)buffer" identifier = (cast_expression "(uint *)buffer" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n        puVar9 = puVar10;\n        uVar6 = *puVar9 + 0xfefefeff & ~*puVar9;\n        uVar7 = uVar6 & 0x80808080;\n        puVar10 = puVar9 + 1;\n      } while (uVar7 == 0);" do (compound_statement "{\n        puVar9 = puVar10;\n        uVar6 = *puVar9 + 0xfefefeff & ~*puVar9;\n        uVar7 = uVar6 & 0x80808080;\n        puVar10 = puVar9 + 1;\n      }" { (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) (expression_statement "uVar6 = *puVar9 + 0xfefefeff & ~*puVar9;" (assignment_expression "uVar6 = *puVar9 + 0xfefefeff & ~*puVar9" identifier = (binary_expression "*puVar9 + 0xfefefeff & ~*puVar9" (binary_expression "*puVar9 + 0xfefefeff" (pointer_expression "*puVar9" * identifier) + number_literal) & (unary_expression "~*puVar9" ~ (pointer_expression "*puVar9" * identifier)))) ;) (expression_statement "uVar7 = uVar6 & 0x80808080;" (assignment_expression "uVar7 = uVar6 & 0x80808080" identifier = (binary_expression "uVar6 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar10 = puVar9 + 1;" (assignment_expression "puVar10 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) ;) (expression_statement "bVar12 = (uVar6 & 0x8080) == 0;" (assignment_expression "bVar12 = (uVar6 & 0x8080) == 0" identifier = (binary_expression "(uVar6 & 0x8080) == 0" (parenthesized_expression "(uVar6 & 0x8080)" ( (binary_expression "uVar6 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar12) {\n        uVar7 = uVar7 >> 0x10;\n      }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\n        uVar7 = uVar7 >> 0x10;\n      }" { (expression_statement "uVar7 = uVar7 >> 0x10;" (assignment_expression "uVar7 = uVar7 >> 0x10" identifier = (binary_expression "uVar7 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar12) {\n        puVar10 = (uint *)((int)puVar9 + 6);\n      }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\n        puVar10 = (uint *)((int)puVar9 + 6);\n      }" { (expression_statement "puVar10 = (uint *)((int)puVar9 + 6);" (assignment_expression "puVar10 = (uint *)((int)puVar9 + 6)" identifier = (cast_expression "(uint *)((int)puVar9 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 6)" ( (binary_expression "(int)puVar9 + 6" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (expression_statement "pcVar11 = (char *)((int)puVar10 + ((-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)) - (int)buffer)\n                        );" (assignment_expression "pcVar11 = (char *)((int)puVar10 + ((-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)) - (int)buffer)\n                        )" identifier = (cast_expression "(char *)((int)puVar10 + ((-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)) - (int)buffer)\n                        )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + ((-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)) - (int)buffer)\n                        )" ( (binary_expression "(int)puVar10 + ((-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)) - (int)buffer)" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)) - (int)buffer)" ( (binary_expression "(-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)) - (int)buffer" (parenthesized_expression "(-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7))" ( (binary_expression "-3 - (uint)CARRY1((byte)uVar7,(byte)uVar7)" number_literal - (cast_expression "(uint)CARRY1((byte)uVar7,(byte)uVar7)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY1((byte)uVar7,(byte)uVar7)" identifier (argument_list "((byte)uVar7,(byte)uVar7)" ( (cast_expression "(byte)uVar7" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar7" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )) - (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (if_statement "if (pcVar11 <= (char *)(0x7fffffff - ret->_M_string_length)) {\n        std::string::_M_append((string *)ret,buffer,(uint)pcVar11);\n        return ret;\n      }" if (parenthesized_expression "(pcVar11 <= (char *)(0x7fffffff - ret->_M_string_length))" ( (binary_expression "pcVar11 <= (char *)(0x7fffffff - ret->_M_string_length)" identifier <= (cast_expression "(char *)(0x7fffffff - ret->_M_string_length)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(0x7fffffff - ret->_M_string_length)" ( (binary_expression "0x7fffffff - ret->_M_string_length" number_literal - (field_expression "ret->_M_string_length" identifier -> field_identifier)) )))) )) (compound_statement "{\n        std::string::_M_append((string *)ret,buffer,(uint)pcVar11);\n        return ret;\n      }" { (labeled_statement "std::string::_M_append((string *)ret,buffer,(uint)pcVar11);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)ret,buffer,(uint)pcVar11);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)ret,buffer,(uint)pcVar11);" (call_expression "_M_append((string *)ret,buffer,(uint)pcVar11)" identifier (argument_list "((string *)ret,buffer,(uint)pcVar11)" ( (cast_expression "(string *)ret" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(uint)pcVar11" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;))) (return_statement "return ret;" return identifier ;) })) comment (labeled_statement "std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));" (call_expression "__throw_length_error((char *)(unaff_EDI + 0x1cbfd9))" identifier (argument_list "((char *)(unaff_EDI + 0x1cbfd9))" ( (cast_expression "(char *)(unaff_EDI + 0x1cbfd9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1cbfd9)" ( (binary_expression "unaff_EDI + 0x1cbfd9" identifier + number_literal) ))) ))) ;)) })) comment (labeled_statement "std::__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error((char *)(unaff_EDI + 0x1cbfd9));" (call_expression "__throw_length_error((char *)(unaff_EDI + 0x1cbfd9))" identifier (argument_list "((char *)(unaff_EDI + 0x1cbfd9))" ( (cast_expression "(char *)(unaff_EDI + 0x1cbfd9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1cbfd9)" ( (binary_expression "unaff_EDI + 0x1cbfd9" identifier + number_literal) ))) ))) ;)) })) comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8ea,(char *)(unaff_EDI + 0x1cc133));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x1cbf1c),0x8ea,(char *)(unaff_EDI + 0x1cc133))" identifier (argument_list "((char *)(unaff_EDI + 0x1cbf1c),0x8ea,(char *)(unaff_EDI + 0x1cc133))" ( (cast_expression "(char *)(unaff_EDI + 0x1cbf1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1cbf1c)" ( (binary_expression "unaff_EDI + 0x1cbf1c" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1cc133)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1cc133)" ( (binary_expression "unaff_EDI + 0x1cc133" identifier + number_literal) ))) ))) ;) }))
(translation_unit "int * FUN_00054560(int *param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  int unaff_EDI;\n  bool bVar13;\n  uint local_5c [19];\n  \n  FUN_0004fb7e();\n  piVar1 = param_1 + 2;\n  *(undefined1 *)(param_1 + 2) = 0;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  *param_1 = (int)piVar1;\n  param_1[1] = 0;\n  iVar4 = *(int *)(param_3 + 8);\n  iVar5 = *(int *)(param_2 + 0x68);\n  if ((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);\n  }\n  uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff;\n  piVar6 = (int *)(iVar5 + iVar4 * 0xc);\n  iVar3 = *piVar6;\n  if ((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);\n  }\n  piVar6 = (int *)(uVar9 * 0x1c + iVar3);\n  if ((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);\n  }\n  piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc);\n  iVar3 = *piVar7;\n  iVar4 = *piVar6;\n  if (iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555) {\n    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);\n    iVar3 = puVar2[1];\n    if (iVar3 != 0) {\n                    \n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }\n    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);\n    if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }\n    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));\n    if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    \n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }\n                    \n    FUN_001c6190(unaff_EDI + 0x1cbfd9);\n  }\n                    \n  FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1);\n}\n\n" (function_definition "int * FUN_00054560(int *param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  int unaff_EDI;\n  bool bVar13;\n  uint local_5c [19];\n  \n  FUN_0004fb7e();\n  piVar1 = param_1 + 2;\n  *(undefined1 *)(param_1 + 2) = 0;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  *param_1 = (int)piVar1;\n  param_1[1] = 0;\n  iVar4 = *(int *)(param_3 + 8);\n  iVar5 = *(int *)(param_2 + 0x68);\n  if ((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);\n  }\n  uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff;\n  piVar6 = (int *)(iVar5 + iVar4 * 0xc);\n  iVar3 = *piVar6;\n  if ((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);\n  }\n  piVar6 = (int *)(uVar9 * 0x1c + iVar3);\n  if ((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);\n  }\n  piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc);\n  iVar3 = *piVar7;\n  iVar4 = *piVar6;\n  if (iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555) {\n    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);\n    iVar3 = puVar2[1];\n    if (iVar3 != 0) {\n                    \n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }\n    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);\n    if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }\n    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));\n    if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    \n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }\n                    \n    FUN_001c6190(unaff_EDI + 0x1cbfd9);\n  }\n                    \n  FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1);\n}" primitive_type (pointer_declarator "* FUN_00054560(int *param_1,int param_2,int param_3)" * (function_declarator "FUN_00054560(int *param_1,int param_2,int param_3)" identifier (parameter_list "(int *param_1,int param_2,int param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) )))) (compound_statement "{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  int unaff_EDI;\n  bool bVar13;\n  uint local_5c [19];\n  \n  FUN_0004fb7e();\n  piVar1 = param_1 + 2;\n  *(undefined1 *)(param_1 + 2) = 0;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  *param_1 = (int)piVar1;\n  param_1[1] = 0;\n  iVar4 = *(int *)(param_3 + 8);\n  iVar5 = *(int *)(param_2 + 0x68);\n  if ((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);\n  }\n  uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff;\n  piVar6 = (int *)(iVar5 + iVar4 * 0xc);\n  iVar3 = *piVar6;\n  if ((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);\n  }\n  piVar6 = (int *)(uVar9 * 0x1c + iVar3);\n  if ((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);\n  }\n  piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc);\n  iVar3 = *piVar7;\n  iVar4 = *piVar6;\n  if (iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555) {\n    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);\n    iVar3 = puVar2[1];\n    if (iVar3 != 0) {\n                    \n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }\n    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);\n    if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }\n    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));\n    if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    \n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }\n                    \n    FUN_001c6190(unaff_EDI + 0x1cbfd9);\n  }\n                    \n  FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1);\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "uint local_5c [19];" type_identifier (array_declarator "local_5c [19]" identifier [ number_literal ]) ;) (expression_statement "FUN_0004fb7e();" (call_expression "FUN_0004fb7e()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar1 = param_1 + 2;" (assignment_expression "piVar1 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1 + 2) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 2) = 0" (pointer_expression "*(undefined1 *)(param_1 + 2)" * (cast_expression "(undefined1 *)(param_1 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar3 = *(int *)(param_2 + 0x6c);" (assignment_expression "iVar3 = *(int *)(param_2 + 0x6c)" identifier = (pointer_expression "*(int *)(param_2 + 0x6c)" * (cast_expression "(int *)(param_2 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6c)" ( (binary_expression "param_2 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "*param_1 = (int)piVar1;" (assignment_expression "*param_1 = (int)piVar1" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar4 = *(int *)(param_3 + 8);" (assignment_expression "iVar4 = *(int *)(param_3 + 8)" identifier = (pointer_expression "*(int *)(param_3 + 8)" * (cast_expression "(int *)(param_3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_2 + 0x68);" (assignment_expression "iVar5 = *(int *)(param_2 + 0x68)" identifier = (pointer_expression "*(int *)(param_2 + 0x68)" * (cast_expression "(int *)(param_2 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x68)" ( (binary_expression "param_2 + 0x68" identifier + number_literal) ))))) ;) (if_statement "if ((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);\n  }" if (parenthesized_expression "((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4)" ( (binary_expression "(iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4" (binary_expression "(iVar3 - iVar5 >> 2) * -0x55555555" (parenthesized_expression "(iVar3 - iVar5 >> 2)" ( (binary_expression "iVar3 - iVar5 >> 2" (binary_expression "iVar3 - iVar5" identifier - identifier) >> number_literal) )) * number_literal) <= identifier) )) (compound_statement "{\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);\n  }" { (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1)" identifier (argument_list "(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1)" ( (binary_expression "unaff_EDI + 0x1cbf1c" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1cc133" identifier + number_literal) , identifier , identifier ))) ;) })) (expression_statement "uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff;" (assignment_expression "uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff" identifier = (binary_expression "*(uint *)(param_3 + 0xc) & 0x7fffffff" (pointer_expression "*(uint *)(param_3 + 0xc)" * (cast_expression "(uint *)(param_3 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "piVar6 = (int *)(iVar5 + iVar4 * 0xc);" (assignment_expression "piVar6 = (int *)(iVar5 + iVar4 * 0xc)" identifier = (cast_expression "(int *)(iVar5 + iVar4 * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar4 * 0xc)" ( (binary_expression "iVar5 + iVar4 * 0xc" identifier + (binary_expression "iVar4 * 0xc" identifier * number_literal)) )))) ;) (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (if_statement "if ((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);\n  }" if (parenthesized_expression "((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9)" ( (binary_expression "(uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9" (call_expression "(uint)((piVar6[1] - iVar3 >> 2) * -0x49249249)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar6[1] - iVar3 >> 2) * -0x49249249)" ( (binary_expression "(piVar6[1] - iVar3 >> 2) * -0x49249249" (parenthesized_expression "(piVar6[1] - iVar3 >> 2)" ( (binary_expression "piVar6[1] - iVar3 >> 2" (binary_expression "piVar6[1] - iVar3" (subscript_expression "piVar6[1]" identifier [ number_literal ]) - identifier) >> number_literal) )) * number_literal) ))) <= identifier) )) (compound_statement "{\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);\n  }" { (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1)" identifier (argument_list "(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1)" ( (binary_expression "unaff_EDI + 0x1cbf1c" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1cc133" identifier + number_literal) , identifier , identifier ))) ;) })) (expression_statement "piVar6 = (int *)(uVar9 * 0x1c + iVar3);" (assignment_expression "piVar6 = (int *)(uVar9 * 0x1c + iVar3)" identifier = (cast_expression "(int *)(uVar9 * 0x1c + iVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 * 0x1c + iVar3)" ( (binary_expression "uVar9 * 0x1c + iVar3" (binary_expression "uVar9 * 0x1c" identifier * number_literal) + identifier) )))) ;) (if_statement "if ((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);\n  }" if (parenthesized_expression "((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4)" ( (binary_expression "(*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4" (binary_expression "(*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555" (parenthesized_expression "(*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2)" ( (binary_expression "*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2" (binary_expression "*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c)" (pointer_expression "*(int *)(param_2 + 0x60)" * (cast_expression "(int *)(param_2 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_2 + 0x5c)" * (cast_expression "(int *)(param_2 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5c)" ( (binary_expression "param_2 + 0x5c" identifier + number_literal) ))))) >> number_literal) )) * number_literal) <= identifier) )) (compound_statement "{\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);\n  }" { (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1)" identifier (argument_list "(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1)" ( (binary_expression "unaff_EDI + 0x1cbf1c" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1cc133" identifier + number_literal) , identifier , identifier ))) ;) })) (expression_statement "piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc);" (assignment_expression "piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc)" identifier = (cast_expression "(int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x5c) + iVar4 * 0xc)" ( (binary_expression "*(int *)(param_2 + 0x5c) + iVar4 * 0xc" (pointer_expression "*(int *)(param_2 + 0x5c)" * (cast_expression "(int *)(param_2 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5c)" ( (binary_expression "param_2 + 0x5c" identifier + number_literal) )))) + (binary_expression "iVar4 * 0xc" identifier * number_literal)) )))) ;) (expression_statement "iVar3 = *piVar7;" (assignment_expression "iVar3 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "iVar4 = *piVar6;" (assignment_expression "iVar4 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (if_statement "if (iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555) {\n    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);\n    iVar3 = puVar2[1];\n    if (iVar3 != 0) {\n                    \n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }\n    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);\n    if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }\n    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));\n    if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    \n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }\n                    \n    FUN_001c6190(unaff_EDI + 0x1cbfd9);\n  }" if (parenthesized_expression "(iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555)" ( (binary_expression "iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555" identifier < (binary_expression "(piVar7[1] - iVar3 >> 3) * -0x55555555" (parenthesized_expression "(piVar7[1] - iVar3 >> 3)" ( (binary_expression "piVar7[1] - iVar3 >> 3" (binary_expression "piVar7[1] - iVar3" (subscript_expression "piVar7[1]" identifier [ number_literal ]) - identifier) >> number_literal) )) * number_literal)) )) (compound_statement "{\n    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);\n    iVar3 = puVar2[1];\n    if (iVar3 != 0) {\n                    \n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }\n    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);\n    if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }\n    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));\n    if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    \n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }\n                    \n    FUN_001c6190(unaff_EDI + 0x1cbfd9);\n  }" { (expression_statement "puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);" (assignment_expression "puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18)" identifier = (cast_expression "(undefined4 *)(iVar3 + iVar4 * 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar4 * 0x18)" ( (binary_expression "iVar3 + iVar4 * 0x18" identifier + (binary_expression "iVar4 * 0x18" identifier * number_literal)) )))) ;) (expression_statement "iVar3 = puVar2[1];" (assignment_expression "iVar3 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 != 0) {\n                    \n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                    \n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }" { (expression_statement "FUN_00189fb0(param_1,*puVar2,iVar3);" (call_expression "FUN_00189fb0(param_1,*puVar2,iVar3)" identifier (argument_list "(param_1,*puVar2,iVar3)" ( identifier , (pointer_expression "*puVar2" * identifier) , identifier ))) ;) (if_statement "if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }" if (parenthesized_expression "(param_1[1] == 0x7fffffff)" ( (binary_expression "param_1[1] == 0x7fffffff" (subscript_expression "param_1[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }" { (expression_statement "FUN_001c6190(unaff_EDI + 0x1cbfd9);" (call_expression "FUN_001c6190(unaff_EDI + 0x1cbfd9)" identifier (argument_list "(unaff_EDI + 0x1cbfd9)" ( (binary_expression "unaff_EDI + 0x1cbfd9" identifier + number_literal) ))) ;) })) (expression_statement "FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);" (call_expression "FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1)" identifier (argument_list "(param_1,unaff_EDI + 0x1dfde7,1)" ( identifier , (binary_expression "unaff_EDI + 0x1dfde7" identifier + number_literal) , number_literal ))) ;) })) (expression_statement "FUN_00189fb0(param_1,piVar6[1],piVar6[2]);" (call_expression "FUN_00189fb0(param_1,piVar6[1],piVar6[2])" identifier (argument_list "(param_1,piVar6[1],piVar6[2])" ( identifier , (subscript_expression "piVar6[1]" identifier [ number_literal ]) , (subscript_expression "piVar6[2]" identifier [ number_literal ]) ))) ;) (if_statement "if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }" if (parenthesized_expression "(param_1[1] == 0)" ( (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }" { (expression_statement "FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);" (call_expression "FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9)" identifier (argument_list "(param_1,0,0,unaff_EDI + 0x1cbfee,9)" ( identifier , number_literal , number_literal , (binary_expression "unaff_EDI + 0x1cbfee" identifier + number_literal) , number_literal ))) ;) })) (expression_statement "snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));" (call_expression "snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10))" identifier (argument_list "((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10))" ( (cast_expression "(char *)local_5c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (binary_expression "&UNK_001e2b14 + unaff_EDI" (pointer_expression "&UNK_001e2b14" & identifier) + identifier) , (pointer_expression "*(undefined4 *)(param_3 + 0x10)" * (cast_expression "(undefined4 *)(param_3 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) ))) ;) (if_statement "if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    \n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }" if (parenthesized_expression "(param_1[1] != 0x7fffffff)" ( (binary_expression "param_1[1] != 0x7fffffff" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    \n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }" { (expression_statement "FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);" (call_expression "FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1)" identifier (argument_list "(param_1,unaff_EDI + 0x1d297b,1)" ( identifier , (binary_expression "unaff_EDI + 0x1d297b" identifier + number_literal) , number_literal ))) ;) (expression_statement "puVar11 = local_5c;" (assignment_expression "puVar11 = local_5c" identifier = identifier) ;) (do_statement "do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);" do (compound_statement "{\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      }" { (expression_statement "puVar10 = puVar11;" (assignment_expression "puVar10 = puVar11" identifier = identifier) ;) (expression_statement "uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;" (assignment_expression "uVar8 = *puVar10 + 0xfefefeff & ~*puVar10" identifier = (binary_expression "*puVar10 + 0xfefefeff & ~*puVar10" (binary_expression "*puVar10 + 0xfefefeff" (pointer_expression "*puVar10" * identifier) + number_literal) & (unary_expression "~*puVar10" ~ (pointer_expression "*puVar10" * identifier)))) ;) (expression_statement "uVar9 = uVar8 & 0x80808080;" (assignment_expression "uVar9 = uVar8 & 0x80808080" identifier = (binary_expression "uVar8 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar11 = puVar10 + 1;" (assignment_expression "puVar11 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) ;) (expression_statement "bVar13 = (uVar8 & 0x8080) == 0;" (assignment_expression "bVar13 = (uVar8 & 0x8080) == 0" identifier = (binary_expression "(uVar8 & 0x8080) == 0" (parenthesized_expression "(uVar8 & 0x8080)" ( (binary_expression "uVar8 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        uVar9 = uVar9 >> 0x10;\n      }" { (expression_statement "uVar9 = uVar9 >> 0x10;" (assignment_expression "uVar9 = uVar9 >> 0x10" identifier = (binary_expression "uVar9 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }" { (expression_statement "puVar11 = (uint *)((int)puVar10 + 6);" (assignment_expression "puVar11 = (uint *)((int)puVar10 + 6)" identifier = (cast_expression "(uint *)((int)puVar10 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 6)" ( (binary_expression "(int)puVar10 + 6" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (expression_statement "pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));" (assignment_expression "pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c))" identifier = (cast_expression "(char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c))" ( (binary_expression "(int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c)" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c)" ( (binary_expression "(-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c" (parenthesized_expression "(-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9))" ( (binary_expression "-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)" number_literal - (cast_expression "(uint)CARRY1((byte)uVar9,(byte)uVar9)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY1((byte)uVar9,(byte)uVar9)" identifier (argument_list "((byte)uVar9,(byte)uVar9)" ( (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )) - (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (if_statement "if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }" if (parenthesized_expression "(pcVar12 <= (char *)(0x7fffffff - param_1[1]))" ( (binary_expression "pcVar12 <= (char *)(0x7fffffff - param_1[1])" identifier <= (cast_expression "(char *)(0x7fffffff - param_1[1])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(0x7fffffff - param_1[1])" ( (binary_expression "0x7fffffff - param_1[1]" number_literal - (subscript_expression "param_1[1]" identifier [ number_literal ])) )))) )) (compound_statement "{\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }" { (expression_statement "FUN_00189fb0(param_1,local_5c,pcVar12);" (call_expression "FUN_00189fb0(param_1,local_5c,pcVar12)" identifier (argument_list "(param_1,local_5c,pcVar12)" ( identifier , identifier , identifier ))) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "FUN_001c6190(unaff_EDI + 0x1cbfd9);" (call_expression "FUN_001c6190(unaff_EDI + 0x1cbfd9)" identifier (argument_list "(unaff_EDI + 0x1cbfd9)" ( (binary_expression "unaff_EDI + 0x1cbfd9" identifier + number_literal) ))) ;) })) (expression_statement "FUN_001c6190(unaff_EDI + 0x1cbfd9);" (call_expression "FUN_001c6190(unaff_EDI + 0x1cbfd9)" identifier (argument_list "(unaff_EDI + 0x1cbfd9)" ( (binary_expression "unaff_EDI + 0x1cbfd9" identifier + number_literal) ))) ;) })) (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1)" identifier (argument_list "(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1)" ( (binary_expression "unaff_EDI + 0x1cbf1c" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1cc133" identifier + number_literal) , identifier , identifier ))) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) >> LIT) )) * LIT) <= IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) >> LIT) )) * LIT) ))) <= IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT) )) * LIT) <= IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) >> LIT) )) * LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , (binary_expression IDENT + LIT) , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , LIT , (binary_expression (pointer_expression & IDENT) + IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) & (unary_expression ~ (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))))) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression LIT - (subscript_expression IDENT [ LIT ])) )))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) })))
(function_definition "int * FUN_00054560(int *param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  int unaff_EDI;\n  bool bVar13;\n  uint local_5c [19];\n  \n  FUN_0004fb7e();\n  piVar1 = param_1 + 2;\n  *(undefined1 *)(param_1 + 2) = 0;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  *param_1 = (int)piVar1;\n  param_1[1] = 0;\n  iVar4 = *(int *)(param_3 + 8);\n  iVar5 = *(int *)(param_2 + 0x68);\n  if ((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);\n  }\n  uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff;\n  piVar6 = (int *)(iVar5 + iVar4 * 0xc);\n  iVar3 = *piVar6;\n  if ((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);\n  }\n  piVar6 = (int *)(uVar9 * 0x1c + iVar3);\n  if ((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);\n  }\n  piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc);\n  iVar3 = *piVar7;\n  iVar4 = *piVar6;\n  if (iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555) {\n    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);\n    iVar3 = puVar2[1];\n    if (iVar3 != 0) {\n                    \n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }\n    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);\n    if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }\n    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));\n    if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    \n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }\n                    \n    FUN_001c6190(unaff_EDI + 0x1cbfd9);\n  }\n                    \n  FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1);\n}" (primitive_type "int") (pointer_declarator "* FUN_00054560(int *param_1,int param_2,int param_3)" (* "*") (function_declarator "FUN_00054560(int *param_1,int param_2,int param_3)" (identifier "FUN_00054560") (parameter_list "(int *param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")")))) (compound_statement "{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint *puVar11;\n  char *pcVar12;\n  int unaff_EDI;\n  bool bVar13;\n  uint local_5c [19];\n  \n  FUN_0004fb7e();\n  piVar1 = param_1 + 2;\n  *(undefined1 *)(param_1 + 2) = 0;\n  iVar3 = *(int *)(param_2 + 0x6c);\n  *param_1 = (int)piVar1;\n  param_1[1] = 0;\n  iVar4 = *(int *)(param_3 + 8);\n  iVar5 = *(int *)(param_2 + 0x68);\n  if ((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);\n  }\n  uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff;\n  piVar6 = (int *)(iVar5 + iVar4 * 0xc);\n  iVar3 = *piVar6;\n  if ((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);\n  }\n  piVar6 = (int *)(uVar9 * 0x1c + iVar3);\n  if ((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);\n  }\n  piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc);\n  iVar3 = *piVar7;\n  iVar4 = *piVar6;\n  if (iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555) {\n    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);\n    iVar3 = puVar2[1];\n    if (iVar3 != 0) {\n                    \n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }\n    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);\n    if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }\n    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));\n    if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    \n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }\n                    \n    FUN_001c6190(unaff_EDI + 0x1cbfd9);\n  }\n                    \n  FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1);\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint *puVar10;" (type_identifier "uint") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint *puVar11;" (type_identifier "uint") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "char *pcVar12;" (primitive_type "char") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "uint local_5c [19];" (type_identifier "uint") (array_declarator "local_5c [19]" (identifier "local_5c") ([ "[") (number_literal "19") (] "]")) (; ";")) (expression_statement "FUN_0004fb7e();" (call_expression "FUN_0004fb7e()" (identifier "FUN_0004fb7e") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar1 = param_1 + 2;" (assignment_expression "piVar1 = param_1 + 2" (identifier "piVar1") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 2) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 2) = 0" (pointer_expression "*(undefined1 *)(param_1 + 2)" (* "*") (cast_expression "(undefined1 *)(param_1 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = *(int *)(param_2 + 0x6c);" (assignment_expression "iVar3 = *(int *)(param_2 + 0x6c)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_2 + 0x6c)" (* "*") (cast_expression "(int *)(param_2 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x6c)" (( "(") (binary_expression "param_2 + 0x6c" (identifier "param_2") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "*param_1 = (int)piVar1;" (assignment_expression "*param_1 = (int)piVar1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)piVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar1"))) (; ";")) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar4 = *(int *)(param_3 + 8);" (assignment_expression "iVar4 = *(int *)(param_3 + 8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_3 + 8)" (* "*") (cast_expression "(int *)(param_3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(param_2 + 0x68);" (assignment_expression "iVar5 = *(int *)(param_2 + 0x68)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_2 + 0x68)" (* "*") (cast_expression "(int *)(param_2 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x68)" (( "(") (binary_expression "param_2 + 0x68" (identifier "param_2") (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (if_statement "if ((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);\n  }" (if "if") (parenthesized_expression "((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4)" (( "(") (binary_expression "(iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4" (binary_expression "(iVar3 - iVar5 >> 2) * -0x55555555" (parenthesized_expression "(iVar3 - iVar5 >> 2)" (( "(") (binary_expression "iVar3 - iVar5 >> 2" (binary_expression "iVar3 - iVar5" (identifier "iVar3") (- "-") (identifier "iVar5")) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "-0x55555555")) (<= "<=") (identifier "iVar4")) () ")")) (compound_statement "{\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);\n  }" ({ "{") (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1)" (( "(") (binary_expression "unaff_EDI + 0x1cbf1c" (identifier "unaff_EDI") (+ "+") (number_literal "0x1cbf1c")) (, ",") (number_literal "0x8e1") (, ",") (binary_expression "unaff_EDI + 0x1cc133" (identifier "unaff_EDI") (+ "+") (number_literal "0x1cc133")) (, ",") (identifier "iVar5") (, ",") (identifier "piVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff;" (assignment_expression "uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff" (identifier "uVar9") (= "=") (binary_expression "*(uint *)(param_3 + 0xc) & 0x7fffffff" (pointer_expression "*(uint *)(param_3 + 0xc)" (* "*") (cast_expression "(uint *)(param_3 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "0x7fffffff"))) (; ";")) (expression_statement "piVar6 = (int *)(iVar5 + iVar4 * 0xc);" (assignment_expression "piVar6 = (int *)(iVar5 + iVar4 * 0xc)" (identifier "piVar6") (= "=") (cast_expression "(int *)(iVar5 + iVar4 * 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + iVar4 * 0xc)" (( "(") (binary_expression "iVar5 + iVar4 * 0xc" (identifier "iVar5") (+ "+") (binary_expression "iVar4 * 0xc" (identifier "iVar4") (* "*") (number_literal "0xc"))) () ")")))) (; ";")) (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" (identifier "iVar3") (= "=") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) (; ";")) (if_statement "if ((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);\n  }" (if "if") (parenthesized_expression "((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9)" (( "(") (binary_expression "(uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9" (call_expression "(uint)((piVar6[1] - iVar3 >> 2) * -0x49249249)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((piVar6[1] - iVar3 >> 2) * -0x49249249)" (( "(") (binary_expression "(piVar6[1] - iVar3 >> 2) * -0x49249249" (parenthesized_expression "(piVar6[1] - iVar3 >> 2)" (( "(") (binary_expression "piVar6[1] - iVar3 >> 2" (binary_expression "piVar6[1] - iVar3" (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")) (- "-") (identifier "iVar3")) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "-0x49249249")) () ")"))) (<= "<=") (identifier "uVar9")) () ")")) (compound_statement "{\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);\n  }" ({ "{") (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1)" (( "(") (binary_expression "unaff_EDI + 0x1cbf1c" (identifier "unaff_EDI") (+ "+") (number_literal "0x1cbf1c")) (, ",") (number_literal "0x8e3") (, ",") (binary_expression "unaff_EDI + 0x1cc133" (identifier "unaff_EDI") (+ "+") (number_literal "0x1cc133")) (, ",") (identifier "iVar4") (, ",") (identifier "piVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar6 = (int *)(uVar9 * 0x1c + iVar3);" (assignment_expression "piVar6 = (int *)(uVar9 * 0x1c + iVar3)" (identifier "piVar6") (= "=") (cast_expression "(int *)(uVar9 * 0x1c + iVar3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar9 * 0x1c + iVar3)" (( "(") (binary_expression "uVar9 * 0x1c + iVar3" (binary_expression "uVar9 * 0x1c" (identifier "uVar9") (* "*") (number_literal "0x1c")) (+ "+") (identifier "iVar3")) () ")")))) (; ";")) (if_statement "if ((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);\n  }" (if "if") (parenthesized_expression "((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4)" (( "(") (binary_expression "(*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4" (binary_expression "(*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555" (parenthesized_expression "(*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2)" (( "(") (binary_expression "*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2" (binary_expression "*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c)" (pointer_expression "*(int *)(param_2 + 0x60)" (* "*") (cast_expression "(int *)(param_2 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x60)" (( "(") (binary_expression "param_2 + 0x60" (identifier "param_2") (+ "+") (number_literal "0x60")) () ")")))) (- "-") (pointer_expression "*(int *)(param_2 + 0x5c)" (* "*") (cast_expression "(int *)(param_2 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x5c)" (( "(") (binary_expression "param_2 + 0x5c" (identifier "param_2") (+ "+") (number_literal "0x5c")) () ")"))))) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "-0x55555555")) (<= "<=") (identifier "iVar4")) () ")")) (compound_statement "{\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);\n  }" ({ "{") (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1)" (( "(") (binary_expression "unaff_EDI + 0x1cbf1c" (identifier "unaff_EDI") (+ "+") (number_literal "0x1cbf1c")) (, ",") (number_literal "0x8e8") (, ",") (binary_expression "unaff_EDI + 0x1cc133" (identifier "unaff_EDI") (+ "+") (number_literal "0x1cc133")) (, ",") (identifier "param_2") (, ",") (identifier "piVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc);" (assignment_expression "piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc)" (identifier "piVar7") (= "=") (cast_expression "(int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_2 + 0x5c) + iVar4 * 0xc)" (( "(") (binary_expression "*(int *)(param_2 + 0x5c) + iVar4 * 0xc" (pointer_expression "*(int *)(param_2 + 0x5c)" (* "*") (cast_expression "(int *)(param_2 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x5c)" (( "(") (binary_expression "param_2 + 0x5c" (identifier "param_2") (+ "+") (number_literal "0x5c")) () ")")))) (+ "+") (binary_expression "iVar4 * 0xc" (identifier "iVar4") (* "*") (number_literal "0xc"))) () ")")))) (; ";")) (expression_statement "iVar3 = *piVar7;" (assignment_expression "iVar3 = *piVar7" (identifier "iVar3") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "iVar4 = *piVar6;" (assignment_expression "iVar4 = *piVar6" (identifier "iVar4") (= "=") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) (; ";")) (if_statement "if (iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555) {\n    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);\n    iVar3 = puVar2[1];\n    if (iVar3 != 0) {\n                    \n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }\n    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);\n    if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }\n    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));\n    if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    \n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }\n                    \n    FUN_001c6190(unaff_EDI + 0x1cbfd9);\n  }" (if "if") (parenthesized_expression "(iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555)" (( "(") (binary_expression "iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555" (identifier "iVar4") (< "<") (binary_expression "(piVar7[1] - iVar3 >> 3) * -0x55555555" (parenthesized_expression "(piVar7[1] - iVar3 >> 3)" (( "(") (binary_expression "piVar7[1] - iVar3 >> 3" (binary_expression "piVar7[1] - iVar3" (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]")) (- "-") (identifier "iVar3")) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x55555555"))) () ")")) (compound_statement "{\n    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);\n    iVar3 = puVar2[1];\n    if (iVar3 != 0) {\n                    \n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }\n    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);\n    if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }\n    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));\n    if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    \n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }\n                    \n    FUN_001c6190(unaff_EDI + 0x1cbfd9);\n  }" ({ "{") (expression_statement "puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);" (assignment_expression "puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)(iVar3 + iVar4 * 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + iVar4 * 0x18)" (( "(") (binary_expression "iVar3 + iVar4 * 0x18" (identifier "iVar3") (+ "+") (binary_expression "iVar4 * 0x18" (identifier "iVar4") (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "iVar3 = puVar2[1];" (assignment_expression "iVar3 = puVar2[1]" (identifier "iVar3") (= "=") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar3 != 0) {\n                    \n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_00189fb0(param_1,*puVar2,iVar3);\n      if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }\n      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);\n    }" ({ "{") (expression_statement "FUN_00189fb0(param_1,*puVar2,iVar3);" (call_expression "FUN_00189fb0(param_1,*puVar2,iVar3)" (identifier "FUN_00189fb0") (argument_list "(param_1,*puVar2,iVar3)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (, ",") (identifier "iVar3") () ")"))) (; ";")) (if_statement "if (param_1[1] == 0x7fffffff) {\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }" (if "if") (parenthesized_expression "(param_1[1] == 0x7fffffff)" (( "(") (binary_expression "param_1[1] == 0x7fffffff" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0x7fffffff")) () ")")) (compound_statement "{\n                    \n        FUN_001c6190(unaff_EDI + 0x1cbfd9);\n      }" ({ "{") (expression_statement "FUN_001c6190(unaff_EDI + 0x1cbfd9);" (call_expression "FUN_001c6190(unaff_EDI + 0x1cbfd9)" (identifier "FUN_001c6190") (argument_list "(unaff_EDI + 0x1cbfd9)" (( "(") (binary_expression "unaff_EDI + 0x1cbfd9" (identifier "unaff_EDI") (+ "+") (number_literal "0x1cbfd9")) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);" (call_expression "FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1)" (identifier "FUN_00189fb0") (argument_list "(param_1,unaff_EDI + 0x1dfde7,1)" (( "(") (identifier "param_1") (, ",") (binary_expression "unaff_EDI + 0x1dfde7" (identifier "unaff_EDI") (+ "+") (number_literal "0x1dfde7")) (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00189fb0(param_1,piVar6[1],piVar6[2]);" (call_expression "FUN_00189fb0(param_1,piVar6[1],piVar6[2])" (identifier "FUN_00189fb0") (argument_list "(param_1,piVar6[1],piVar6[2])" (( "(") (identifier "param_1") (, ",") (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")) (, ",") (subscript_expression "piVar6[2]" (identifier "piVar6") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (if_statement "if (param_1[1] == 0) {\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }" (if "if") (parenthesized_expression "(param_1[1] == 0)" (( "(") (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);\n    }" ({ "{") (expression_statement "FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);" (call_expression "FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9)" (identifier "FUN_001893e0") (argument_list "(param_1,0,0,unaff_EDI + 0x1cbfee,9)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (binary_expression "unaff_EDI + 0x1cbfee" (identifier "unaff_EDI") (+ "+") (number_literal "0x1cbfee")) (, ",") (number_literal "9") () ")"))) (; ";")) (} "}"))) (expression_statement "snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));" (call_expression "snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10))" (identifier "snprintf") (argument_list "((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10))" (( "(") (cast_expression "(char *)local_5c" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_5c")) (, ",") (number_literal "0x40") (, ",") (binary_expression "&UNK_001e2b14 + unaff_EDI" (pointer_expression "&UNK_001e2b14" (& "&") (identifier "UNK_001e2b14")) (+ "+") (identifier "unaff_EDI")) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x10)" (( "(") (binary_expression "param_3 + 0x10" (identifier "param_3") (+ "+") (number_literal "0x10")) () ")")))) () ")"))) (; ";")) (if_statement "if (param_1[1] != 0x7fffffff) {\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    \n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }" (if "if") (parenthesized_expression "(param_1[1] != 0x7fffffff)" (( "(") (binary_expression "param_1[1] != 0x7fffffff" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0x7fffffff")) () ")")) (compound_statement "{\n      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);\n      puVar11 = local_5c;\n      do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);\n      bVar13 = (uVar8 & 0x8080) == 0;\n      if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }\n      if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }\n      pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));\n      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }\n                    \n      FUN_001c6190(unaff_EDI + 0x1cbfd9);\n    }" ({ "{") (expression_statement "FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);" (call_expression "FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1)" (identifier "FUN_00189fb0") (argument_list "(param_1,unaff_EDI + 0x1d297b,1)" (( "(") (identifier "param_1") (, ",") (binary_expression "unaff_EDI + 0x1d297b" (identifier "unaff_EDI") (+ "+") (number_literal "0x1d297b")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "puVar11 = local_5c;" (assignment_expression "puVar11 = local_5c" (identifier "puVar11") (= "=") (identifier "local_5c")) (; ";")) (do_statement "do {\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      } while (uVar9 == 0);" (do "do") (compound_statement "{\n        puVar10 = puVar11;\n        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;\n        uVar9 = uVar8 & 0x80808080;\n        puVar11 = puVar10 + 1;\n      }" ({ "{") (expression_statement "puVar10 = puVar11;" (assignment_expression "puVar10 = puVar11" (identifier "puVar10") (= "=") (identifier "puVar11")) (; ";")) (expression_statement "uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;" (assignment_expression "uVar8 = *puVar10 + 0xfefefeff & ~*puVar10" (identifier "uVar8") (= "=") (binary_expression "*puVar10 + 0xfefefeff & ~*puVar10" (binary_expression "*puVar10 + 0xfefefeff" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (+ "+") (number_literal "0xfefefeff")) (& "&") (unary_expression "~*puVar10" (~ "~") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))))) (; ";")) (expression_statement "uVar9 = uVar8 & 0x80808080;" (assignment_expression "uVar9 = uVar8 & 0x80808080" (identifier "uVar9") (= "=") (binary_expression "uVar8 & 0x80808080" (identifier "uVar8") (& "&") (number_literal "0x80808080"))) (; ";")) (expression_statement "puVar11 = puVar10 + 1;" (assignment_expression "puVar11 = puVar10 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar9 == 0)" (( "(") (binary_expression "uVar9 == 0" (identifier "uVar9") (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "bVar13 = (uVar8 & 0x8080) == 0;" (assignment_expression "bVar13 = (uVar8 & 0x8080) == 0" (identifier "bVar13") (= "=") (binary_expression "(uVar8 & 0x8080) == 0" (parenthesized_expression "(uVar8 & 0x8080)" (( "(") (binary_expression "uVar8 & 0x8080" (identifier "uVar8") (& "&") (number_literal "0x8080")) () ")")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar13) {\n        uVar9 = uVar9 >> 0x10;\n      }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n        uVar9 = uVar9 >> 0x10;\n      }" ({ "{") (expression_statement "uVar9 = uVar9 >> 0x10;" (assignment_expression "uVar9 = uVar9 >> 0x10" (identifier "uVar9") (= "=") (binary_expression "uVar9 >> 0x10" (identifier "uVar9") (>> ">>") (number_literal "0x10"))) (; ";")) (} "}"))) (if_statement "if (bVar13) {\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n        puVar11 = (uint *)((int)puVar10 + 6);\n      }" ({ "{") (expression_statement "puVar11 = (uint *)((int)puVar10 + 6);" (assignment_expression "puVar11 = (uint *)((int)puVar10 + 6)" (identifier "puVar11") (= "=") (cast_expression "(uint *)((int)puVar10 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 6)" (( "(") (binary_expression "(int)puVar10 + 6" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "6")) () ")")))) (; ";")) (} "}"))) (expression_statement "pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));" (assignment_expression "pcVar12 = (char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c))" (identifier "pcVar12") (= "=") (cast_expression "(char *)((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c))" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c))" (( "(") (binary_expression "(int)puVar11 +\n                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c)" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (+ "+") (parenthesized_expression "((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c)" (( "(") (binary_expression "(-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c" (parenthesized_expression "(-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9))" (( "(") (binary_expression "-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)" (number_literal "-3") (- "-") (cast_expression "(uint)CARRY1((byte)uVar9,(byte)uVar9)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY1((byte)uVar9,(byte)uVar9)" (identifier "CARRY1") (argument_list "((byte)uVar9,(byte)uVar9)" (( "(") (cast_expression "(byte)uVar9" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar9")) (, ",") (cast_expression "(byte)uVar9" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar9")) () ")"))))) () ")")) (- "-") (cast_expression "(int)local_5c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_5c"))) () ")"))) () ")")))) (; ";")) (if_statement "if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }" (if "if") (parenthesized_expression "(pcVar12 <= (char *)(0x7fffffff - param_1[1]))" (( "(") (binary_expression "pcVar12 <= (char *)(0x7fffffff - param_1[1])" (identifier "pcVar12") (<= "<=") (cast_expression "(char *)(0x7fffffff - param_1[1])" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(0x7fffffff - param_1[1])" (( "(") (binary_expression "0x7fffffff - param_1[1]" (number_literal "0x7fffffff") (- "-") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) () ")")))) () ")")) (compound_statement "{\n        FUN_00189fb0(param_1,local_5c,pcVar12);\n        return param_1;\n      }" ({ "{") (expression_statement "FUN_00189fb0(param_1,local_5c,pcVar12);" (call_expression "FUN_00189fb0(param_1,local_5c,pcVar12)" (identifier "FUN_00189fb0") (argument_list "(param_1,local_5c,pcVar12)" (( "(") (identifier "param_1") (, ",") (identifier "local_5c") (, ",") (identifier "pcVar12") () ")"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "FUN_001c6190(unaff_EDI + 0x1cbfd9);" (call_expression "FUN_001c6190(unaff_EDI + 0x1cbfd9)" (identifier "FUN_001c6190") (argument_list "(unaff_EDI + 0x1cbfd9)" (( "(") (binary_expression "unaff_EDI + 0x1cbfd9" (identifier "unaff_EDI") (+ "+") (number_literal "0x1cbfd9")) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_001c6190(unaff_EDI + 0x1cbfd9);" (call_expression "FUN_001c6190(unaff_EDI + 0x1cbfd9)" (identifier "FUN_001c6190") (argument_list "(unaff_EDI + 0x1cbfd9)" (( "(") (binary_expression "unaff_EDI + 0x1cbfd9" (identifier "unaff_EDI") (+ "+") (number_literal "0x1cbfd9")) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1)" (( "(") (binary_expression "unaff_EDI + 0x1cbf1c" (identifier "unaff_EDI") (+ "+") (number_literal "0x1cbf1c")) (, ",") (number_literal "0x8ea") (, ",") (binary_expression "unaff_EDI + 0x1cc133" (identifier "unaff_EDI") (+ "+") (number_literal "0x1cc133")) (, ",") (identifier "iVar4") (, ",") (identifier "piVar1") () ")"))) (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: string format_file_lineno(Sized_dwarf_line_info<64,_false> * this,
   Offset_to_lineno_entry * loc) */

type_3 * __thiscall
gold::Sized_dwarf_line_info<64,_false>::format_file_lineno
          (type_3 *__return_storage_ptr__,Sized_dwarf_line_info<64,_false> *this,
          Offset_to_lineno_entry *loc)

{
  type_1 pvVar1;
  int var_7;
  type_1 var_15;
  type_1 var_10;
  type_1 var_14;
  type_2 var_24;
  type_2 var_12;
  type_1 var_13;
  type_2 *var_25;
  type_2 *puVar10;
  char *var_27;
  int var_9;
  bool bVar12;
  type_3 *ret;
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_4
  *var_5;
  char buffer [64];
  
  var_6();
  var_5 = &ret->field_2;
  (ret->field_2)._M_local_buf[0] = '\0';
  pvVar1 = (this->files_).
           super__Vector_base<std::vector<std::pair<int,_std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>,_std::var_1<std::pair<int,_std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_3>,_std::var_1<std::vector<std::pair<int,_std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>,_std::var_1<std::pair<int,_std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_3>var_3>var_3>
           ._M_impl._M_finish;
  (ret->_M_dataplus)._M_p = (type_1)var_5;
  ret->_M_string_length = 0;
  var_7 = loc->header_num;
  var_10 = (this->files_).
           super__Vector_base<std::vector<std::pair<int,_std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>,_std::var_1<std::pair<int,_std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_3>,_std::var_1<std::vector<std::pair<int,_std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>,_std::var_1<std::pair<int,_std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_3>var_3>var_3>
           ._M_impl._M_start;
  if (((int)pvVar1 - (int)var_10 >> 2) * -0x55555555 <= var_7) {
                    /* WARNING: Subroutine does not return */
    var_8((char *)(var_9 + 0x1cbf1c),0x8e1,(char *)(var_9 + 0x1cc133));
  }
  var_12 = *(type_2 *)&loc->field_0xc & 0x7fffffff;
  var_10 = var_10 + var_7;
  var_13 = (var_10->
           super__Vector_base<std::pair<int,_std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>,_std::var_1<std::pair<int,_std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_3>var_11
           )._M_impl._M_start;
  if ((type_2)(((int)(var_10->
                   super__Vector_base<std::pair<int,_std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>,_std::var_1<std::pair<int,_std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_3>var_11
                   )._M_impl._M_finish - (int)var_13 >> 2) * -0x49249249) <= var_12) {
                    /* WARNING: Subroutine does not return */
    var_8((char *)(var_9 + 0x1cbf1c),0x8e3,(char *)(var_9 + 0x1cc133));
  }
  var_13 = var_13 + var_12;
  var_14 = (this->directories_).
           super__Vector_base<std::vector<std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>var_3>,_std::var_1<std::vector<std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_3>var_3>
           ._M_impl._M_start;
  if (((int)(this->directories_).
            super__Vector_base<std::vector<std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>var_3>,_std::var_1<std::vector<std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_3>var_3>
            ._M_impl._M_finish - (int)var_14 >> 2) * -0x55555555 <= var_7) {
                    /* WARNING: Subroutine does not return */
    var_8((char *)(var_9 + 0x1cbf1c),0x8e8,(char *)(var_9 + 0x1cc133));
  }
  var_14 = var_14 + var_7;
  var_15 = (var_14->
           super__Vector_base<std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_11
           )._M_impl._M_start;
  if (var_13->first <
      ((int)(var_14->
            super__Vector_base<std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::var_18<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_11
            )._M_impl._M_finish - (int)var_15 >> 3) * -0x55555555) {
    var_15 = var_15 + var_13->first;
    var_12 = var_15->_M_string_length;
    if (var_12 != 0) {
                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */
      std::string::var_16((type_3 *)ret,(var_15->_M_dataplus)._M_p,var_12);
      if (ret->_M_string_length == 0x7fffffff) {
                    /* WARNING: Subroutine does not return */
        std::var_17((char *)(var_9 + 0x1cbfd9));
      }
      std::string::var_16
                ((type_3 *)ret,
                 (char *)(std::
                          num_get<var_19,std::istreambuf_iterator<var_19,std::var_18<var_19>>>
                          ::var_20<var_21> + var_9 + 7),1);
    }
    std::string::var_16
              ((type_3 *)ret,(var_13->second)._M_dataplus._M_p,
               *(type_4 *)((int)&var_13->second + 4));
    if (ret->_M_string_length == 0) {
      std::string::var_22((type_3 *)ret,0,0,(char *)(var_9 + 0x1cbfee),9);
    }
    var_23(buffer,0x40,(char *)(var_9 + 0x1e2b14),loc->line_num,var_5);
    if (ret->_M_string_length != 0x7fffffff) {
      std::string::var_16((type_3 *)ret,(char *)(var_9 + 0x1d297b),1);
      puVar10 = (type_2 *)buffer;
      do {
        var_25 = puVar10;
        var_24 = *var_25 + 0xfefefeff & ~*var_25;
        var_12 = var_24 & 0x80808080;
        puVar10 = var_25 + 1;
      } while (var_12 == 0);
      bVar12 = (var_24 & 0x8080) == 0;
      if (bVar12) {
        var_12 = var_12 >> 0x10;
      }
      if (bVar12) {
        puVar10 = (type_2 *)((int)var_25 + 6);
      }
      var_27 = (char *)((int)puVar10 + ((-3 - (type_2)var_26((type_5)var_12,(type_5)var_12)) - (int)buffer)
                        );
      if (var_27 <= (char *)(0x7fffffff - ret->_M_string_length)) {
        std::string::var_16((type_3 *)ret,buffer,(type_2)var_27);
        return ret;
      }
                    /* WARNING: Subroutine does not return */
      std::var_17((char *)(var_9 + 0x1cbfd9));
    }
                    /* WARNING: Subroutine does not return */
    std::var_17((char *)(var_9 + 0x1cbfd9));
  }
                    /* WARNING: Subroutine does not return */
  var_8((char *)(var_9 + 0x1cbf1c),0x8ea,(char *)(var_9 + 0x1cc133));
}


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

int * MASKED(int *param_1,int param_2,int param_3)

{
  int *piVar1;
  undefined4 *puVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  int *piVar7;
  uint uVar8;
  uint uVar9;
  uint *puVar10;
  uint *puVar11;
  char *pcVar12;
  int unaff_EDI;
  bool bVar13;
  uint local_5c [19];
  
  FUN_0004fb7e();
  piVar1 = param_1 + 2;
  *(undefined1 *)(param_1 + 2) = 0;
  iVar3 = *(int *)(param_2 + 0x6c);
  *param_1 = (int)piVar1;
  param_1[1] = 0;
  iVar4 = *(int *)(param_3 + 8);
  iVar5 = *(int *)(param_2 + 0x68);
  if ((iVar3 - iVar5 >> 2) * -0x55555555 <= iVar4) {
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e1,unaff_EDI + 0x1cc133,iVar5,piVar1);
  }
  uVar9 = *(uint *)(param_3 + 0xc) & 0x7fffffff;
  piVar6 = (int *)(iVar5 + iVar4 * 0xc);
  iVar3 = *piVar6;
  if ((uint)((piVar6[1] - iVar3 >> 2) * -0x49249249) <= uVar9) {
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e3,unaff_EDI + 0x1cc133,iVar4,piVar1);
  }
  piVar6 = (int *)(uVar9 * 0x1c + iVar3);
  if ((*(int *)(param_2 + 0x60) - *(int *)(param_2 + 0x5c) >> 2) * -0x55555555 <= iVar4) {
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8e8,unaff_EDI + 0x1cc133,param_2,piVar1);
  }
  piVar7 = (int *)(*(int *)(param_2 + 0x5c) + iVar4 * 0xc);
  iVar3 = *piVar7;
  iVar4 = *piVar6;
  if (iVar4 < (piVar7[1] - iVar3 >> 3) * -0x55555555) {
    puVar2 = (undefined4 *)(iVar3 + iVar4 * 0x18);
    iVar3 = puVar2[1];
    if (iVar3 != 0) {
                    /* try { // try from 0005463b to 000547e8 has its CatchHandler @ 000547e9 */
      FUN_00189fb0(param_1,*puVar2,iVar3);
      if (param_1[1] == 0x7fffffff) {
                    /* WARNING: Subroutine does not return */
        FUN_001c6190(unaff_EDI + 0x1cbfd9);
      }
      FUN_00189fb0(param_1,unaff_EDI + 0x1dfde7,1);
    }
    FUN_00189fb0(param_1,piVar6[1],piVar6[2]);
    if (param_1[1] == 0) {
      FUN_001893e0(param_1,0,0,unaff_EDI + 0x1cbfee,9);
    }
    snprintf((char *)local_5c,0x40,&UNK_001e2b14 + unaff_EDI,*(undefined4 *)(param_3 + 0x10));
    if (param_1[1] != 0x7fffffff) {
      FUN_00189fb0(param_1,unaff_EDI + 0x1d297b,1);
      puVar11 = local_5c;
      do {
        puVar10 = puVar11;
        uVar8 = *puVar10 + 0xfefefeff & ~*puVar10;
        uVar9 = uVar8 & 0x80808080;
        puVar11 = puVar10 + 1;
      } while (uVar9 == 0);
      bVar13 = (uVar8 & 0x8080) == 0;
      if (bVar13) {
        uVar9 = uVar9 >> 0x10;
      }
      if (bVar13) {
        puVar11 = (uint *)((int)puVar10 + 6);
      }
      pcVar12 = (char *)((int)puVar11 +
                        ((-3 - (uint)CARRY1((byte)uVar9,(byte)uVar9)) - (int)local_5c));
      if (pcVar12 <= (char *)(0x7fffffff - param_1[1])) {
        FUN_00189fb0(param_1,local_5c,pcVar12);
        return param_1;
      }
                    /* WARNING: Subroutine does not return */
      FUN_001c6190(unaff_EDI + 0x1cbfd9);
    }
                    /* WARNING: Subroutine does not return */
    FUN_001c6190(unaff_EDI + 0x1cbfd9);
  }
                    /* WARNING: Subroutine does not return */
  FUN_0005f0b0(unaff_EDI + 0x1cbf1c,0x8ea,unaff_EDI + 0x1cc133,iVar4,piVar1);
}

