
istream * operator>>(istream *i,mpf_ptr f)

{
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar1;
  uint uVar2;
  int iVar3;
  char *__s;
  size_type sVar4;
  char cVar5;
  lconv *plVar6;
  numpunct *pnVar7;
  ctype *pcVar8;
  int *piVar9;
  size_t sVar10;
  undefined4 uVar11;
  istream *piVar12;
  istream *extraout_EDX;
  int unaff_EDI;
  int in_GS_OFFSET;
  __mpf_struct *p_Var13;
  char c;
  bool ok;
  locale local_3c;
  string s;
  
  __x86_get_pc_thunk_di();
  iVar3 = *(int *)(in_GS_OFFSET + 0x14);
  paVar1 = &s.field_2;
  c = '\0';
  s._M_string_length = 0;
  s.field_2._M_allocated_capacity = s.field_2._M_allocated_capacity & 0xffffff00;
  ok = false;
  s._M_dataplus._M_p = (pointer)paVar1;
  plVar6 = localeconv();
  __s = plVar6->decimal_point;
  std::locale::locale(&local_3c,(locale *)(i + *(int *)(*(int *)i + -0xc) + 0x6c));
                    /* try { // try from 00013a90 to 00013e02 has its CatchHandler @ 00013e03 */
  pnVar7 = std::use_facet<std::numpunct<char>>(&local_3c);
  cVar5 = (**(code **)(*(int *)pnVar7 + 8))(pnVar7);
  std::istream::get((char *)i);
  if (((byte)i[*(int *)(*(int *)i + -0xc) + 0xd] & 0x10) != 0) {
    pcVar8 = std::use_facet<std::ctype<char>>(&local_3c);
    do {
      if ((*(byte *)(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2) & 0x20) == 0) break;
      piVar9 = (int *)std::istream::get((char *)i);
    } while ((*(byte *)((int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14) & 5) == 0);
  }
  if (c == '-') {
    std::string::_M_replace((uint)&s,0,(char *)s._M_string_length,unaff_EDI + 0x15d7);
LAB_00013c67:
    std::istream::get((char *)i);
  }
  else if (c == '+') goto LAB_00013c67;
  __gmp_istream_set_digits(&s,i,&c,&ok,10);
  if (c == cVar5) {
    std::istream::get((char *)i);
    sVar10 = strlen(__s);
    if (0x7fffffff - s._M_string_length < sVar10) {
      p_Var13 = (__mpf_struct *)(unaff_EDI + 0x15d9);
      std::__throw_length_error((char *)p_Var13);
                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */
      piVar12 = (istream *)operator>>(extraout_EDX,p_Var13);
      return piVar12;
    }
    std::string::_M_append((char *)&s,(uint)__s);
    __gmp_istream_set_digits(&s,i,&c,&ok,10);
  }
  sVar4 = s._M_string_length;
  cVar5 = c;
  if ((ok != false) && ((c & 0xdfU) == 0x45)) {
    uVar2 = s._M_string_length + 1;
    uVar11 = 0xf;
    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
         *)s._M_dataplus._M_p != paVar1) {
      uVar11 = s.field_2._M_allocated_capacity;
    }
    if (uVar11 < uVar2) {
      std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);
    }
    s._M_dataplus._M_p[sVar4] = cVar5;
    s._M_dataplus._M_p[sVar4 + 1] = '\0';
    s._M_string_length = uVar2;
    std::istream::get((char *)i);
    sVar4 = s._M_string_length;
    cVar5 = c;
    ok = false;
    if ((c - 0x2bU & 0xfd) == 0) {
      uVar2 = s._M_string_length + 1;
      uVar11 = 0xf;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)s._M_dataplus._M_p != paVar1) {
        uVar11 = s.field_2._M_allocated_capacity;
      }
      if (uVar11 < uVar2) {
        std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);
      }
      s._M_dataplus._M_p[sVar4] = cVar5;
      s._M_dataplus._M_p[sVar4 + 1] = '\0';
      s._M_string_length = uVar2;
      std::istream::get((char *)i);
    }
    __gmp_istream_set_digits(&s,i,&c,&ok,10);
  }
  piVar12 = i + *(int *)(*(int *)i + -0xc);
  if (*(uint *)(piVar12 + 0x14) == 0) {
    std::istream::putback((char)i);
LAB_00013be7:
    if (ok != false) {
      __gmpf_set_str(f,s._M_dataplus._M_p,10);
      goto LAB_00013c01;
    }
    piVar12 = i + *(int *)(*(int *)i + -0xc);
  }
  else {
    if ((*(uint *)(piVar12 + 0x14) & 2) == 0) goto LAB_00013be7;
    if (ok != false) {
      std::ios::clear((_Ios_Iostate)piVar12);
      goto LAB_00013be7;
    }
  }
  std::ios::clear((_Ios_Iostate)piVar12);
LAB_00013c01:
  std::locale::~locale(&local_3c);
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)s._M_dataplus._M_p != paVar1) {
    operator_delete(s._M_dataplus._M_p);
  }
  if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return i;
}



/* TEMPNAMEPLACEHOLDERVALUE(std::istream&, __mpf_struct*) */

istream * operator>>(istream *param_1,__mpf_struct *param_2)

{
  char *pcVar1;
  byte bVar2;
  lconv *plVar3;
  numpunct *pnVar4;
  uint uVar5;
  ctype *pcVar6;
  int *piVar7;
  size_t sVar8;
  char *pcVar9;
  istream *piVar10;
  undefined4 extraout_EDX;
  int unaff_EDI;
  int in_GS_OFFSET;
  char *pcVar11;
  byte *pbVar12;
  byte local_3e;
  bool local_3d;
  locale local_3c [4];
  char **local_38;
  char *local_34;
  char *local_30 [4];
  int local_20;
  
  FUN_00013e0a();
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_3e = 0;
  local_34 = (char *)0x0;
  local_30[0] = (char *)((uint)local_30[0] & 0xffffff00);
  local_3d = false;
  local_38 = local_30;
  plVar3 = localeconv();
  pcVar11 = plVar3->decimal_point;
  std::locale::locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));
                    /* try { // try from 00013a90 to 00013e02 has its CatchHandler @ 00013e03 */
  pnVar4 = std::use_facet<std::numpunct<char>>(local_3c);
  bVar2 = (**(code **)(*(int *)pnVar4 + 8))(pnVar4);
  std::istream::get((char *)param_1);
  if (((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0) {
    pcVar6 = std::use_facet<std::ctype<char>>(local_3c);
    do {
      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;
      piVar7 = (int *)std::istream::get((char *)param_1);
    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);
  }
  if (local_3e == 0x2d) {
    std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);
LAB_00013c67:
    std::istream::get((char *)param_1);
  }
  else if (local_3e == 0x2b) goto LAB_00013c67;
  __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);
  if (local_3e == bVar2) {
    pbVar12 = &local_3e;
    std::istream::get((char *)param_1);
    sVar8 = strlen(pcVar11);
    if (0x7fffffffU - (int)local_34 < sVar8) {
      pcVar11 = (char *)(unaff_EDI + 0x15d9);
      std::__throw_length_error(pcVar11);
                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */
      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);
      return piVar10;
    }
    std::string::_M_append((char *)&local_38,(uint)pcVar11);
    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);
  }
  pcVar11 = local_34;
  bVar2 = local_3e;
  if ((local_3d != false) && ((local_3e & 0xdf) == 0x45)) {
    pcVar1 = local_34 + 1;
    pcVar9 = (char *)0xf;
    if (local_38 != local_30) {
      pcVar9 = local_30[0];
    }
    if (pcVar9 < pcVar1) {
      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);
    }
    *(byte *)((int)local_38 + (int)pcVar11) = bVar2;
    pcVar11[(int)local_38 + 1] = '\0';
    local_34 = pcVar1;
    std::istream::get((char *)param_1);
    pcVar11 = local_34;
    bVar2 = local_3e;
    local_3d = false;
    if ((local_3e - 0x2b & 0xfd) == 0) {
      pcVar1 = local_34 + 1;
      pcVar9 = (char *)0xf;
      if (local_38 != local_30) {
        pcVar9 = local_30[0];
      }
      if (pcVar9 < pcVar1) {
        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);
      }
      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;
      pcVar11[(int)local_38 + 1] = '\0';
      local_34 = pcVar1;
      std::istream::get((char *)param_1);
    }
    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);
  }
  piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);
  uVar5 = *(uint *)(piVar10 + 0x14);
  if (uVar5 == 0) {
    std::istream::putback((char)param_1);
LAB_00013be7:
    if (local_3d != false) {
      __gmpf_set_str(param_2,local_38,10);
      goto LAB_00013c01;
    }
    piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);
    uVar5 = *(uint *)(piVar10 + 0x14);
  }
  else {
    if ((uVar5 & 2) == 0) goto LAB_00013be7;
    if (local_3d != false) {
      std::ios::clear(piVar10,2);
      goto LAB_00013be7;
    }
  }
  std::ios::clear(piVar10,uVar5 | 4);
LAB_00013c01:
  std::locale::~locale(local_3c);
  if (local_38 != local_30) {
    operator_delete(local_38);
  }
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_00014700();
  }
  return param_1;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x00013e0a
ADD EDI,0x35d7
PUSH ESI
PUSH EBX
SUB ESP,0x6c
MOV EAX,dword ptr [EBP + 0xc]
MOV ESI,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x60],EAX
MOV EBX,EDI
MOV EAX,GS:[0x14]
MOV dword ptr [EBP + -0x1c],EAX
XOR EAX,EAX
LEA EAX,[EBP + -0x2c]
MOV byte ptr [EBP + -0x3a],0x0
MOV dword ptr [EBP + -0x58],EAX
MOV dword ptr [EBP + -0x34],EAX
MOV dword ptr [EBP + -0x30],0x0
MOV byte ptr [EBP + -0x2c],0x0
MOV byte ptr [EBP + -0x39],0x0
CALL 0x000131b0
SUB ESP,0x8
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBP + -0x68],EAX
MOV EAX,dword ptr [ESI]
MOV ECX,dword ptr [EAX + -0xc]
ADD ECX,ESI
MOV EAX,ECX
ADD EAX,0x6c
PUSH EAX
LEA EAX,[EBP + -0x38]
PUSH EAX
MOV dword ptr [EBP + -0x50],EAX
CALL 0x000130b0
POP EAX
PUSH dword ptr [EBP + -0x50]
CALL 0x00013070
MOV EDX,dword ptr [EAX]
MOV dword ptr [ESP],EAX
CALL dword ptr [EDX + 0x8]
MOV byte ptr [EBP + -0x59],AL
LEA EAX,[EBP + -0x3a]
POP EDX
POP ECX
PUSH EAX
PUSH ESI
MOV dword ptr [EBP + -0x4c],EAX
CALL 0x000131d0
MOV EAX,dword ptr [ESI]
ADD ESP,0x10
MOV EDX,dword ptr [EAX + -0xc]
MOVZX EAX,byte ptr [EBP + -0x3a]
TEST byte ptr [ESI + EDX*0x1 + 0xd],0x10
JNZ 0x00013c90
CMP AL,0x2d
JZ 0x00013c48
CMP AL,0x2b
JZ 0x00013c67
SUB ESP,0xc
LEA EAX,[EBP + -0x39]
MOV EBX,EDI
PUSH 0xa
MOV dword ptr [EBP + -0x64],EAX
PUSH EAX
LEA EAX,[EBP + -0x34]
PUSH dword ptr [EBP + -0x4c]
PUSH ESI
PUSH EAX
MOV dword ptr [EBP + -0x54],EAX
CALL 0x000130e0
ADD ESP,0x20
MOVZX EAX,byte ptr [EBP + -0x59]
CMP byte ptr [EBP + -0x3a],AL
JZ 0x00013ce8
CMP byte ptr [EBP + -0x39],0x0
JZ 0x00013b97
MOVZX EAX,byte ptr [EBP + -0x3a]
MOV byte ptr [EBP + -0x59],AL
AND EAX,0xffffffdf
CMP AL,0x45
JNZ 0x00013b97
MOV EAX,dword ptr [EBP + -0x30]
MOV EDX,dword ptr [EBP + -0x34]
CMP EDX,dword ptr [EBP + -0x58]
LEA ECX,[EAX + 0x1]
MOV dword ptr [EBP + -0x68],EAX
MOV EAX,0xf
CMOVNZ EAX,dword ptr [EBP + -0x2c]
MOV dword ptr [EBP + -0x6c],ECX
CMP ECX,EAX
JA 0x00013d90
MOV ECX,dword ptr [EBP + -0x68]
MOVZX EAX,byte ptr [EBP + -0x59]
SUB ESP,0x8
MOV EBX,EDI
MOV byte ptr [EDX + ECX*0x1],AL
MOV EAX,dword ptr [EBP + -0x6c]
MOV dword ptr [EBP + -0x30],EAX
MOV EAX,dword ptr [EBP + -0x34]
MOV byte ptr [EAX + ECX*0x1 + 0x1],0x0
PUSH dword ptr [EBP + -0x4c]
PUSH ESI
CALL 0x000131d0
MOVZX EAX,byte ptr [EBP + -0x3a]
ADD ESP,0x10
MOV byte ptr [EBP + -0x39],0x0
MOV byte ptr [EBP + -0x59],AL
SUB EAX,0x2b
TEST AL,0xfd
JZ 0x00013d40
SUB ESP,0xc
MOV EBX,EDI
PUSH 0xa
PUSH dword ptr [EBP + -0x64]
PUSH dword ptr [EBP + -0x4c]
PUSH ESI
PUSH dword ptr [EBP + -0x54]
CALL 0x000130e0
ADD ESP,0x20
MOV EAX,dword ptr [ESI]
MOV EDX,dword ptr [EAX + -0xc]
ADD EDX,ESI
MOV EAX,dword ptr [EDX + 0x14]
TEST EAX,EAX
JZ 0x00013bd0
MOVZX ECX,byte ptr [EBP + -0x39]
TEST AL,0x2
JZ 0x00013be7
TEST CL,CL
JNZ 0x00013db8
SUB ESP,0x8
OR EAX,0x4
MOV EBX,EDI
PUSH EAX
PUSH EDX
CALL 0x00013220
JMP 0x00013c01
MOVSX EAX,byte ptr [EBP + -0x3a]
SUB ESP,0x8
MOV EBX,EDI
PUSH EAX
PUSH ESI
CALL 0x00013250
MOVZX ECX,byte ptr [EBP + -0x39]
ADD ESP,0x10
TEST CL,CL
JZ 0x00013c80
SUB ESP,0x4
MOV EBX,EDI
PUSH 0xa
PUSH dword ptr [EBP + -0x34]
PUSH dword ptr [EBP + -0x60]
CALL 0x00013190
ADD ESP,0x10
MOV EBX,EDI
SUB ESP,0xc
PUSH dword ptr [EBP + -0x50]
CALL 0x000131e0
MOV EAX,dword ptr [EBP + -0x34]
ADD ESP,0x10
CMP EAX,dword ptr [EBP + -0x58]
JZ 0x00013c28
SUB ESP,0xc
PUSH EAX
CALL 0x00013140
ADD ESP,0x10
MOV ECX,dword ptr [EBP + -0x1c]
XOR ECX,dword ptr GS:[0x14]
MOV EAX,ESI
JNZ 0x00013def
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
LEA EAX,[EDI + 0xffffe000]
MOV EBX,EDI
PUSH 0x1
PUSH EAX
LEA EAX,[EBP + -0x34]
PUSH dword ptr [EBP + -0x30]
PUSH 0x0
PUSH EAX
CALL 0x00013050
ADD ESP,0x20
SUB ESP,0x8
PUSH dword ptr [EBP + -0x4c]
MOV EBX,EDI
PUSH ESI
CALL 0x000131d0
ADD ESP,0x10
JMP 0x00013ad6
MOV EAX,dword ptr [ESI]
MOV EDX,dword ptr [EAX + -0xc]
ADD EDX,ESI
MOV EAX,dword ptr [EDX + 0x14]
JMP 0x00013bb5
SUB ESP,0xc
PUSH dword ptr [EBP + -0x50]
CALL 0x00013060
MOV dword ptr [EBP + -0x54],EAX
ADD ESP,0x10
LEA ESI,[ESI]
MOV EBX,dword ptr [EBP + -0x54]
MOVZX ECX,byte ptr [EBP + -0x3a]
MOV EDX,dword ptr [EBX + 0x18]
MOV EAX,ECX
TEST byte ptr [EDX + ECX*0x2 + 0x1],0x20
JZ 0x00013ac6
SUB ESP,0x8
PUSH dword ptr [EBP + -0x4c]
MOV EBX,EDI
PUSH ESI
CALL 0x000131d0
MOV EDX,dword ptr [EAX]
ADD ESP,0x10
MOV EDX,dword ptr [EDX + -0xc]
TEST byte ptr [EAX + EDX*0x1 + 0x14],0x5
JZ 0x00013ca8
MOVZX EAX,byte ptr [EBP + -0x3a]
JMP 0x00013ac6
SUB ESP,0x8
PUSH dword ptr [EBP + -0x4c]
PUSH ESI
CALL 0x000131d0
POP EAX
PUSH dword ptr [EBP + -0x68]
CALL 0x000130a0
MOV EDX,0x7fffffff
SUB EDX,dword ptr [EBP + -0x30]
ADD ESP,0x10
CMP EAX,EDX
JA 0x00013df4
SUB ESP,0x4
PUSH EAX
PUSH dword ptr [EBP + -0x68]
PUSH dword ptr [EBP + -0x54]
CALL 0x00013150
MOV dword ptr [ESP],0xa
PUSH dword ptr [EBP + -0x64]
PUSH dword ptr [EBP + -0x4c]
PUSH ESI
PUSH dword ptr [EBP + -0x54]
CALL 0x000130e0
ADD ESP,0x20
JMP 0x00013b04
MOV EAX,dword ptr [EBP + -0x30]
MOV EDX,dword ptr [EBP + -0x34]
CMP EDX,dword ptr [EBP + -0x58]
LEA ECX,[EAX + 0x1]
MOV dword ptr [EBP + -0x68],EAX
MOV EAX,0xf
CMOVNZ EAX,dword ptr [EBP + -0x2c]
MOV dword ptr [EBP + -0x6c],ECX
CMP ECX,EAX
JA 0x00013dd0
MOV ECX,dword ptr [EBP + -0x68]
MOVZX EAX,byte ptr [EBP + -0x59]
SUB ESP,0x8
MOV EBX,EDI
MOV byte ptr [EDX + ECX*0x1],AL
MOV EAX,dword ptr [EBP + -0x6c]
MOV dword ptr [EBP + -0x30],EAX
MOV EAX,dword ptr [EBP + -0x34]
MOV byte ptr [EAX + ECX*0x1 + 0x1],0x0
PUSH dword ptr [EBP + -0x4c]
PUSH ESI
CALL 0x000131d0
ADD ESP,0x10
JMP 0x00013b7e
SUB ESP,0xc
MOV EBX,EDI
PUSH 0x1
PUSH 0x0
PUSH 0x0
PUSH dword ptr [EBP + -0x68]
PUSH dword ptr [EBP + -0x54]
CALL 0x00013270
ADD ESP,0x20
MOV EDX,dword ptr [EBP + -0x34]
JMP 0x00013b3f
SUB ESP,0x8
MOV EBX,EDI
PUSH 0x2
PUSH EDX
CALL 0x00013220
JMP 0x00013be0
SUB ESP,0xc
PUSH 0x1
PUSH 0x0
PUSH 0x0
PUSH dword ptr [EBP + -0x68]
PUSH dword ptr [EBP + -0x54]
CALL 0x00013270
ADD ESP,0x20
MOV EDX,dword ptr [EBP + -0x34]
JMP 0x00013d5f
CALL 0x00014700
SUB ESP,0xc
LEA EAX,[EDI + 0xffffe002]
PUSH EAX
CALL 0x00013090
MOV ESI,EAX
JMP 0x00013290
(translation_unit "/* TEMPNAMEPLACEHOLDERVALUE(std::istream&, __mpf_struct*) */\n\nistream * operator>>(istream *param_1,__mpf_struct *param_2)\n\n{\n  char *pcVar1;\n  byte bVar2;\n  lconv *plVar3;\n  numpunct *pnVar4;\n  uint uVar5;\n  ctype *pcVar6;\n  int *piVar7;\n  size_t sVar8;\n  char *pcVar9;\n  istream *piVar10;\n  undefined4 extraout_EDX;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  char *pcVar11;\n  byte *pbVar12;\n  byte local_3e;\n  bool local_3d;\n  locale local_3c [4];\n  char **local_38;\n  char *local_34;\n  char *local_30 [4];\n  int local_20;\n  \n  FUN_00013e0a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_3e = 0;\n  local_34 = (char *)0x0;\n  local_30[0] = (char *)((uint)local_30[0] & 0xffffff00);\n  local_3d = false;\n  local_38 = local_30;\n  plVar3 = localeconv();\n  pcVar11 = plVar3->decimal_point;\n  std::locale::locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));\n                    /* try { // try from 00013a90 to 00013e02 has its CatchHandler @ 00013e03 */\n  pnVar4 = std::use_facet<std::numpunct<char>>(local_3c);\n  bVar2 = (**(code **)(*(int *)pnVar4 + 8))(pnVar4);\n  std::istream::get((char *)param_1);\n  if (((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0) {\n    pcVar6 = std::use_facet<std::ctype<char>>(local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);\n  }\n  if (local_3e == 0x2d) {\n    std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)param_1);\n  }\n  else if (local_3e == 0x2b) goto LAB_00013c67;\n  __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  if (local_3e == bVar2) {\n    pbVar12 = &local_3e;\n    std::istream::get((char *)param_1);\n    sVar8 = strlen(pcVar11);\n    if (0x7fffffffU - (int)local_34 < sVar8) {\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */\n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }\n    std::string::_M_append((char *)&local_38,(uint)pcVar11);\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }\n  pcVar11 = local_34;\n  bVar2 = local_3e;\n  if ((local_3d != false) && ((local_3e & 0xdf) == 0x45)) {\n    pcVar1 = local_34 + 1;\n    pcVar9 = (char *)0xf;\n    if (local_38 != local_30) {\n      pcVar9 = local_30[0];\n    }\n    if (pcVar9 < pcVar1) {\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }\n    *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n    pcVar11[(int)local_38 + 1] = '\0';\n    local_34 = pcVar1;\n    std::istream::get((char *)param_1);\n    pcVar11 = local_34;\n    bVar2 = local_3e;\n    local_3d = false;\n    if ((local_3e - 0x2b & 0xfd) == 0) {\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }\n  piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n  uVar5 = *(uint *)(piVar10 + 0x14);\n  if (uVar5 == 0) {\n    std::istream::putback((char)param_1);\nLAB_00013be7:\n    if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }\n    piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n    uVar5 = *(uint *)(piVar10 + 0x14);\n  }\n  else {\n    if ((uVar5 & 2) == 0) goto LAB_00013be7;\n    if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }\n  }\n  std::ios::clear(piVar10,uVar5 | 4);\nLAB_00013c01:\n  std::locale::~locale(local_3c);\n  if (local_38 != local_30) {\n    operator_delete(local_38);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00014700();\n  }\n  return param_1;\n}\n\n" comment (ERROR "istream * operator>>(istream *param_1,__mpf_struct *param_2)" (binary_expression "istream * operator>>(istream *param_1,__mpf_struct *param_2)" (binary_expression "istream * operator" identifier * identifier) >> (parenthesized_expression "(istream *param_1,__mpf_struct *param_2)" ( (comma_expression "istream *param_1,__mpf_struct *param_2" (binary_expression "istream *param_1" identifier * identifier) , (binary_expression "__mpf_struct *param_2" identifier * identifier)) )))) (compound_statement "{\n  char *pcVar1;\n  byte bVar2;\n  lconv *plVar3;\n  numpunct *pnVar4;\n  uint uVar5;\n  ctype *pcVar6;\n  int *piVar7;\n  size_t sVar8;\n  char *pcVar9;\n  istream *piVar10;\n  undefined4 extraout_EDX;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  char *pcVar11;\n  byte *pbVar12;\n  byte local_3e;\n  bool local_3d;\n  locale local_3c [4];\n  char **local_38;\n  char *local_34;\n  char *local_30 [4];\n  int local_20;\n  \n  FUN_00013e0a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_3e = 0;\n  local_34 = (char *)0x0;\n  local_30[0] = (char *)((uint)local_30[0] & 0xffffff00);\n  local_3d = false;\n  local_38 = local_30;\n  plVar3 = localeconv();\n  pcVar11 = plVar3->decimal_point;\n  std::locale::locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));\n                    /* try { // try from 00013a90 to 00013e02 has its CatchHandler @ 00013e03 */\n  pnVar4 = std::use_facet<std::numpunct<char>>(local_3c);\n  bVar2 = (**(code **)(*(int *)pnVar4 + 8))(pnVar4);\n  std::istream::get((char *)param_1);\n  if (((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0) {\n    pcVar6 = std::use_facet<std::ctype<char>>(local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);\n  }\n  if (local_3e == 0x2d) {\n    std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)param_1);\n  }\n  else if (local_3e == 0x2b) goto LAB_00013c67;\n  __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  if (local_3e == bVar2) {\n    pbVar12 = &local_3e;\n    std::istream::get((char *)param_1);\n    sVar8 = strlen(pcVar11);\n    if (0x7fffffffU - (int)local_34 < sVar8) {\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */\n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }\n    std::string::_M_append((char *)&local_38,(uint)pcVar11);\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }\n  pcVar11 = local_34;\n  bVar2 = local_3e;\n  if ((local_3d != false) && ((local_3e & 0xdf) == 0x45)) {\n    pcVar1 = local_34 + 1;\n    pcVar9 = (char *)0xf;\n    if (local_38 != local_30) {\n      pcVar9 = local_30[0];\n    }\n    if (pcVar9 < pcVar1) {\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }\n    *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n    pcVar11[(int)local_38 + 1] = '\0';\n    local_34 = pcVar1;\n    std::istream::get((char *)param_1);\n    pcVar11 = local_34;\n    bVar2 = local_3e;\n    local_3d = false;\n    if ((local_3e - 0x2b & 0xfd) == 0) {\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }\n  piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n  uVar5 = *(uint *)(piVar10 + 0x14);\n  if (uVar5 == 0) {\n    std::istream::putback((char)param_1);\nLAB_00013be7:\n    if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }\n    piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n    uVar5 = *(uint *)(piVar10 + 0x14);\n  }\n  else {\n    if ((uVar5 & 2) == 0) goto LAB_00013be7;\n    if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }\n  }\n  std::ios::clear(piVar10,uVar5 | 4);\nLAB_00013c01:\n  std::locale::~locale(local_3c);\n  if (local_38 != local_30) {\n    operator_delete(local_38);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00014700();\n  }\n  return param_1;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "lconv *plVar3;" type_identifier (pointer_declarator "*plVar3" * identifier) ;) (declaration "numpunct *pnVar4;" type_identifier (pointer_declarator "*pnVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "ctype *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "istream *piVar10;" type_identifier (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "byte local_3e;" type_identifier identifier ;) (declaration "bool local_3d;" primitive_type identifier ;) (declaration "locale local_3c [4];" type_identifier (array_declarator "local_3c [4]" identifier [ number_literal ]) ;) (declaration "char **local_38;" primitive_type (pointer_declarator "**local_38" * (pointer_declarator "*local_38" * identifier)) ;) (declaration "char *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "char *local_30 [4];" primitive_type (pointer_declarator "*local_30 [4]" * (array_declarator "local_30 [4]" identifier [ number_literal ])) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "FUN_00013e0a();" (call_expression "FUN_00013e0a()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_3e = 0;" (assignment_expression "local_3e = 0" identifier = number_literal) ;) (expression_statement "local_34 = (char *)0x0;" (assignment_expression "local_34 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_30[0] = (char *)((uint)local_30[0] & 0xffffff00);" (assignment_expression "local_30[0] = (char *)((uint)local_30[0] & 0xffffff00)" (subscript_expression "local_30[0]" identifier [ number_literal ]) = (cast_expression "(char *)((uint)local_30[0] & 0xffffff00)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_30[0] & 0xffffff00)" ( (binary_expression "(uint)local_30[0] & 0xffffff00" (cast_expression "(uint)local_30[0]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_30[0]" identifier [ number_literal ])) & number_literal) )))) ;) (expression_statement "local_3d = false;" (assignment_expression "local_3d = false" identifier = false) ;) (expression_statement "local_38 = local_30;" (assignment_expression "local_38 = local_30" identifier = identifier) ;) (expression_statement "plVar3 = localeconv();" (assignment_expression "plVar3 = localeconv()" identifier = (call_expression "localeconv()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar11 = plVar3->decimal_point;" (assignment_expression "pcVar11 = plVar3->decimal_point" identifier = (field_expression "plVar3->decimal_point" identifier -> field_identifier)) ;) (labeled_statement "std::locale::locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));" statement_identifier : (ERROR ":" :) (labeled_statement "locale::locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));" statement_identifier : (ERROR ":" :) (expression_statement "locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));" (call_expression "locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c))" identifier (argument_list "(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c))" ( identifier , (cast_expression "(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c)" ( (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c" (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" * (cast_expression "(int *)(*(int *)param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)param_1 + -0xc)" ( (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) + number_literal) ))) ))) ;))) comment (expression_statement "pnVar4 = std::use_facet<std::numpunct<char>>(local_3c);" (binary_expression "pnVar4 = std::use_facet<std::numpunct<char>>(local_3c)" (binary_expression "pnVar4 = std::use_facet<std" (assignment_expression "pnVar4 = std" identifier = identifier) (ERROR "::use_facet" : : identifier) < identifier) (ERROR "::numpunct" : : identifier) < (binary_expression "char>>(local_3c)" identifier >> (parenthesized_expression "(local_3c)" ( identifier )))) ;) (expression_statement "bVar2 = (**(code **)(*(int *)pnVar4 + 8))(pnVar4);" (assignment_expression "bVar2 = (**(code **)(*(int *)pnVar4 + 8))(pnVar4)" identifier = (call_expression "(**(code **)(*(int *)pnVar4 + 8))(pnVar4)" (parenthesized_expression "(**(code **)(*(int *)pnVar4 + 8))" ( (pointer_expression "**(code **)(*(int *)pnVar4 + 8)" * (pointer_expression "*(code **)(*(int *)pnVar4 + 8)" * (cast_expression "(code **)(*(int *)pnVar4 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pnVar4 + 8)" ( (binary_expression "*(int *)pnVar4 + 8" (pointer_expression "*(int *)pnVar4" * (cast_expression "(int *)pnVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pnVar4)" ( identifier )))) ;) (labeled_statement "std::istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (if_statement "if (((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0) {\n    pcVar6 = std::use_facet<std::ctype<char>>(local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);\n  }" if (parenthesized_expression "(((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0)" ( (binary_expression "((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0" (parenthesized_expression "((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10)" ( (binary_expression "(byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10" (cast_expression "(byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd]" identifier [ (binary_expression "*(int *)(*(int *)param_1 + -0xc) + 0xd" (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" * (cast_expression "(int *)(*(int *)param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)param_1 + -0xc)" ( (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) ])) & number_literal) )) != number_literal) )) (compound_statement "{\n    pcVar6 = std::use_facet<std::ctype<char>>(local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);\n  }" { (expression_statement "pcVar6 = std::use_facet<std::ctype<char>>(local_3c);" (binary_expression "pcVar6 = std::use_facet<std::ctype<char>>(local_3c)" (binary_expression "pcVar6 = std::use_facet<std" (assignment_expression "pcVar6 = std" identifier = identifier) (ERROR "::use_facet" : : identifier) < identifier) (ERROR "::ctype" : : identifier) < (binary_expression "char>>(local_3c)" identifier >> (parenthesized_expression "(local_3c)" ( identifier )))) ;) (do_statement "do {\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);" do (compound_statement "{\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    }" { (if_statement "if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;" if (parenthesized_expression "((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0)" ( (binary_expression "(*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20)" ( (binary_expression "*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20" (pointer_expression "*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2)" * (cast_expression "(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2)" ( (binary_expression "*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2" (binary_expression "*(int *)(pcVar6 + 0x18) + 1" (pointer_expression "*(int *)(pcVar6 + 0x18)" * (cast_expression "(int *)(pcVar6 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + 0x18)" ( (binary_expression "pcVar6 + 0x18" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)local_3e * 2" (cast_expression "(uint)local_3e" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (ERROR "piVar7 = (int *)std::" (assignment_expression "piVar7 = (int *)std" identifier = (cast_expression "(int *)std" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) : :) (labeled_statement "istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) }) while (parenthesized_expression "((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0)" ( (binary_expression "(*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0" (parenthesized_expression "(*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5)" ( (binary_expression "*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5" (pointer_expression "*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14)" * (cast_expression "(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14)" ( (binary_expression "(int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14" (binary_expression "(int)piVar7 + *(int *)(*piVar7 + -0xc)" (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*piVar7 + -0xc)" * (cast_expression "(int *)(*piVar7 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar7 + -0xc)" ( (binary_expression "*piVar7 + -0xc" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) + number_literal) )))) & number_literal) )) == number_literal) )) ;) })) (if_statement "if (local_3e == 0x2d) {\n    std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)param_1);\n  }\n  else if (local_3e == 0x2b) goto LAB_00013c67;" if (parenthesized_expression "(local_3e == 0x2d)" ( (binary_expression "local_3e == 0x2d" identifier == number_literal) )) (compound_statement "{\n    std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)param_1);\n  }" { (labeled_statement "std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);" (call_expression "_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7)" identifier (argument_list "((uint)&local_38,0,local_34,unaff_EDI + 0x15d7)" ( (binary_expression "(uint)&local_38" (parenthesized_expression "(uint)" ( identifier )) & identifier) , number_literal , identifier , (binary_expression "unaff_EDI + 0x15d7" identifier + number_literal) ))) ;))) (labeled_statement "LAB_00013c67:\n    std::istream::get((char *)param_1);" statement_identifier : (labeled_statement "std::istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)))) }) (else_clause "else if (local_3e == 0x2b) goto LAB_00013c67;" else (if_statement "if (local_3e == 0x2b) goto LAB_00013c67;" if (parenthesized_expression "(local_3e == 0x2b)" ( (binary_expression "local_3e == 0x2b" identifier == number_literal) )) (goto_statement "goto LAB_00013c67;" goto statement_identifier ;)))) (expression_statement "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);" (call_expression "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" identifier (argument_list "((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" ( (cast_expression "(string *)&local_38" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_38" & identifier)) , identifier , (cast_expression "(char *)&local_3e" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_3e" & identifier)) , (pointer_expression "&local_3d" & identifier) , number_literal ))) ;) (if_statement "if (local_3e == bVar2) {\n    pbVar12 = &local_3e;\n    std::istream::get((char *)param_1);\n    sVar8 = strlen(pcVar11);\n    if (0x7fffffffU - (int)local_34 < sVar8) {\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */\n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }\n    std::string::_M_append((char *)&local_38,(uint)pcVar11);\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }" if (parenthesized_expression "(local_3e == bVar2)" ( (binary_expression "local_3e == bVar2" identifier == identifier) )) (compound_statement "{\n    pbVar12 = &local_3e;\n    std::istream::get((char *)param_1);\n    sVar8 = strlen(pcVar11);\n    if (0x7fffffffU - (int)local_34 < sVar8) {\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */\n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }\n    std::string::_M_append((char *)&local_38,(uint)pcVar11);\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }" { (expression_statement "pbVar12 = &local_3e;" (assignment_expression "pbVar12 = &local_3e" identifier = (pointer_expression "&local_3e" & identifier)) ;) (labeled_statement "std::istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (expression_statement "sVar8 = strlen(pcVar11);" (assignment_expression "sVar8 = strlen(pcVar11)" identifier = (call_expression "strlen(pcVar11)" identifier (argument_list "(pcVar11)" ( identifier )))) ;) (if_statement "if (0x7fffffffU - (int)local_34 < sVar8) {\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */\n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }" if (parenthesized_expression "(0x7fffffffU - (int)local_34 < sVar8)" ( (binary_expression "0x7fffffffU - (int)local_34 < sVar8" (binary_expression "0x7fffffffU - (int)local_34" number_literal - (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */\n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }" { (expression_statement "pcVar11 = (char *)(unaff_EDI + 0x15d9);" (assignment_expression "pcVar11 = (char *)(unaff_EDI + 0x15d9)" identifier = (cast_expression "(char *)(unaff_EDI + 0x15d9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x15d9)" ( (binary_expression "unaff_EDI + 0x15d9" identifier + number_literal) )))) ;) (labeled_statement "std::__throw_length_error(pcVar11);" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error(pcVar11);" (call_expression "__throw_length_error(pcVar11)" identifier (argument_list "(pcVar11)" ( identifier ))) ;)) comment (expression_statement "piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);" (assignment_expression "piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12)" identifier = (cast_expression "(istream *)entry(extraout_EDX,pcVar11,pbVar12)" ( (type_descriptor "istream *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "entry(extraout_EDX,pcVar11,pbVar12)" identifier (argument_list "(extraout_EDX,pcVar11,pbVar12)" ( identifier , identifier , identifier ))))) ;) (return_statement "return piVar10;" return identifier ;) })) (labeled_statement "std::string::_M_append((char *)&local_38,(uint)pcVar11);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((char *)&local_38,(uint)pcVar11);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((char *)&local_38,(uint)pcVar11);" (call_expression "_M_append((char *)&local_38,(uint)pcVar11)" identifier (argument_list "((char *)&local_38,(uint)pcVar11)" ( (cast_expression "(char *)&local_38" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_38" & identifier)) , (cast_expression "(uint)pcVar11" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;))) (expression_statement "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);" (call_expression "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" identifier (argument_list "((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" ( (cast_expression "(string *)&local_38" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_38" & identifier)) , identifier , (cast_expression "(char *)&local_3e" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_3e" & identifier)) , (pointer_expression "&local_3d" & identifier) , number_literal ))) ;) })) (expression_statement "pcVar11 = local_34;" (assignment_expression "pcVar11 = local_34" identifier = identifier) ;) (expression_statement "bVar2 = local_3e;" (assignment_expression "bVar2 = local_3e" identifier = identifier) ;) (if_statement "if ((local_3d != false) && ((local_3e & 0xdf) == 0x45)) {\n    pcVar1 = local_34 + 1;\n    pcVar9 = (char *)0xf;\n    if (local_38 != local_30) {\n      pcVar9 = local_30[0];\n    }\n    if (pcVar9 < pcVar1) {\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }\n    *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n    pcVar11[(int)local_38 + 1] = '\0';\n    local_34 = pcVar1;\n    std::istream::get((char *)param_1);\n    pcVar11 = local_34;\n    bVar2 = local_3e;\n    local_3d = false;\n    if ((local_3e - 0x2b & 0xfd) == 0) {\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }" if (parenthesized_expression "((local_3d != false) && ((local_3e & 0xdf) == 0x45))" ( (binary_expression "(local_3d != false) && ((local_3e & 0xdf) == 0x45)" (parenthesized_expression "(local_3d != false)" ( (binary_expression "local_3d != false" identifier != false) )) && (parenthesized_expression "((local_3e & 0xdf) == 0x45)" ( (binary_expression "(local_3e & 0xdf) == 0x45" (parenthesized_expression "(local_3e & 0xdf)" ( (binary_expression "local_3e & 0xdf" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    pcVar1 = local_34 + 1;\n    pcVar9 = (char *)0xf;\n    if (local_38 != local_30) {\n      pcVar9 = local_30[0];\n    }\n    if (pcVar9 < pcVar1) {\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }\n    *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n    pcVar11[(int)local_38 + 1] = '\0';\n    local_34 = pcVar1;\n    std::istream::get((char *)param_1);\n    pcVar11 = local_34;\n    bVar2 = local_3e;\n    local_3d = false;\n    if ((local_3e - 0x2b & 0xfd) == 0) {\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }" { (expression_statement "pcVar1 = local_34 + 1;" (assignment_expression "pcVar1 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;) (expression_statement "pcVar9 = (char *)0xf;" (assignment_expression "pcVar9 = (char *)0xf" identifier = (cast_expression "(char *)0xf" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_38 != local_30) {\n      pcVar9 = local_30[0];\n    }" if (parenthesized_expression "(local_38 != local_30)" ( (binary_expression "local_38 != local_30" identifier != identifier) )) (compound_statement "{\n      pcVar9 = local_30[0];\n    }" { (expression_statement "pcVar9 = local_30[0];" (assignment_expression "pcVar9 = local_30[0]" identifier = (subscript_expression "local_30[0]" identifier [ number_literal ])) ;) })) (if_statement "if (pcVar9 < pcVar1) {\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }" if (parenthesized_expression "(pcVar9 < pcVar1)" ( (binary_expression "pcVar9 < pcVar1" identifier < identifier) )) (compound_statement "{\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }" { (labeled_statement "std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" (call_expression "_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0)" identifier (argument_list "((uint)&local_38,(uint)local_34,(char *)0x0,0)" ( (binary_expression "(uint)&local_38" (parenthesized_expression "(uint)" ( identifier )) & identifier) , (cast_expression "(uint)local_34" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "*(byte *)((int)local_38 + (int)pcVar11) = bVar2;" (assignment_expression "*(byte *)((int)local_38 + (int)pcVar11) = bVar2" (pointer_expression "*(byte *)((int)local_38 + (int)pcVar11)" * (cast_expression "(byte *)((int)local_38 + (int)pcVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_38 + (int)pcVar11)" ( (binary_expression "(int)local_38 + (int)pcVar11" (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)pcVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) (expression_statement "pcVar11[(int)local_38 + 1] = '\0';" (assignment_expression "pcVar11[(int)local_38 + 1] = '\0'" (subscript_expression "pcVar11[(int)local_38 + 1]" identifier [ (binary_expression "(int)local_38 + 1" (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_34 = pcVar1;" (assignment_expression "local_34 = pcVar1" identifier = identifier) ;) (labeled_statement "std::istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (expression_statement "pcVar11 = local_34;" (assignment_expression "pcVar11 = local_34" identifier = identifier) ;) (expression_statement "bVar2 = local_3e;" (assignment_expression "bVar2 = local_3e" identifier = identifier) ;) (expression_statement "local_3d = false;" (assignment_expression "local_3d = false" identifier = false) ;) (if_statement "if ((local_3e - 0x2b & 0xfd) == 0) {\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }" if (parenthesized_expression "((local_3e - 0x2b & 0xfd) == 0)" ( (binary_expression "(local_3e - 0x2b & 0xfd) == 0" (parenthesized_expression "(local_3e - 0x2b & 0xfd)" ( (binary_expression "local_3e - 0x2b & 0xfd" (binary_expression "local_3e - 0x2b" identifier - number_literal) & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }" { (expression_statement "pcVar1 = local_34 + 1;" (assignment_expression "pcVar1 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;) (expression_statement "pcVar9 = (char *)0xf;" (assignment_expression "pcVar9 = (char *)0xf" identifier = (cast_expression "(char *)0xf" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }" if (parenthesized_expression "(local_38 != local_30)" ( (binary_expression "local_38 != local_30" identifier != identifier) )) (compound_statement "{\n        pcVar9 = local_30[0];\n      }" { (expression_statement "pcVar9 = local_30[0];" (assignment_expression "pcVar9 = local_30[0]" identifier = (subscript_expression "local_30[0]" identifier [ number_literal ])) ;) })) (if_statement "if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }" if (parenthesized_expression "(pcVar9 < pcVar1)" ( (binary_expression "pcVar9 < pcVar1" identifier < identifier) )) (compound_statement "{\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }" { (labeled_statement "std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" (call_expression "_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0)" identifier (argument_list "((uint)&local_38,(uint)local_34,(char *)0x0,0)" ( (binary_expression "(uint)&local_38" (parenthesized_expression "(uint)" ( identifier )) & identifier) , (cast_expression "(uint)local_34" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "*(byte *)((int)local_38 + (int)pcVar11) = bVar2;" (assignment_expression "*(byte *)((int)local_38 + (int)pcVar11) = bVar2" (pointer_expression "*(byte *)((int)local_38 + (int)pcVar11)" * (cast_expression "(byte *)((int)local_38 + (int)pcVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_38 + (int)pcVar11)" ( (binary_expression "(int)local_38 + (int)pcVar11" (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)pcVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) (expression_statement "pcVar11[(int)local_38 + 1] = '\0';" (assignment_expression "pcVar11[(int)local_38 + 1] = '\0'" (subscript_expression "pcVar11[(int)local_38 + 1]" identifier [ (binary_expression "(int)local_38 + 1" (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_34 = pcVar1;" (assignment_expression "local_34 = pcVar1" identifier = identifier) ;) (labeled_statement "std::istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) })) (expression_statement "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);" (call_expression "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" identifier (argument_list "((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" ( (cast_expression "(string *)&local_38" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_38" & identifier)) , identifier , (cast_expression "(char *)&local_3e" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_3e" & identifier)) , (pointer_expression "&local_3d" & identifier) , number_literal ))) ;) })) (expression_statement "piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);" (assignment_expression "piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc)" identifier = (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" * (cast_expression "(int *)(*(int *)param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)param_1 + -0xc)" ( (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))))) ;) (expression_statement "uVar5 = *(uint *)(piVar10 + 0x14);" (assignment_expression "uVar5 = *(uint *)(piVar10 + 0x14)" identifier = (pointer_expression "*(uint *)(piVar10 + 0x14)" * (cast_expression "(uint *)(piVar10 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 0x14)" ( (binary_expression "piVar10 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (uVar5 == 0) {\n    std::istream::putback((char)param_1);\nLAB_00013be7:\n    if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }\n    piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n    uVar5 = *(uint *)(piVar10 + 0x14);\n  }\n  else {\n    if ((uVar5 & 2) == 0) goto LAB_00013be7;\n    if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }\n  }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    std::istream::putback((char)param_1);\nLAB_00013be7:\n    if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }\n    piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n    uVar5 = *(uint *)(piVar10 + 0x14);\n  }" { (labeled_statement "std::istream::putback((char)param_1);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::putback((char)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "putback((char)param_1);" (call_expression "putback((char)param_1)" identifier (argument_list "((char)param_1)" ( (cast_expression "(char)param_1" ( (type_descriptor "char" primitive_type) ) identifier) ))) ;))) (labeled_statement "LAB_00013be7:\n    if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }" statement_identifier : (if_statement "if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }" if (parenthesized_expression "(local_3d != false)" ( (binary_expression "local_3d != false" identifier != false) )) (compound_statement "{\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }" { (expression_statement "__gmpf_set_str(param_2,local_38,10);" (call_expression "__gmpf_set_str(param_2,local_38,10)" identifier (argument_list "(param_2,local_38,10)" ( identifier , identifier , number_literal ))) ;) (goto_statement "goto LAB_00013c01;" goto statement_identifier ;) }))) (expression_statement "piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);" (assignment_expression "piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc)" identifier = (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" * (cast_expression "(int *)(*(int *)param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)param_1 + -0xc)" ( (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))))) ;) (expression_statement "uVar5 = *(uint *)(piVar10 + 0x14);" (assignment_expression "uVar5 = *(uint *)(piVar10 + 0x14)" identifier = (pointer_expression "*(uint *)(piVar10 + 0x14)" * (cast_expression "(uint *)(piVar10 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 0x14)" ( (binary_expression "piVar10 + 0x14" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    if ((uVar5 & 2) == 0) goto LAB_00013be7;\n    if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }\n  }" else (compound_statement "{\n    if ((uVar5 & 2) == 0) goto LAB_00013be7;\n    if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }\n  }" { (if_statement "if ((uVar5 & 2) == 0) goto LAB_00013be7;" if (parenthesized_expression "((uVar5 & 2) == 0)" ( (binary_expression "(uVar5 & 2) == 0" (parenthesized_expression "(uVar5 & 2)" ( (binary_expression "uVar5 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00013be7;" goto statement_identifier ;)) (if_statement "if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }" if (parenthesized_expression "(local_3d != false)" ( (binary_expression "local_3d != false" identifier != false) )) (compound_statement "{\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }" { (labeled_statement "std::ios::clear(piVar10,2);" statement_identifier : (ERROR ":" :) (labeled_statement "ios::clear(piVar10,2);" statement_identifier : (ERROR ":" :) (expression_statement "clear(piVar10,2);" (call_expression "clear(piVar10,2)" identifier (argument_list "(piVar10,2)" ( identifier , number_literal ))) ;))) (goto_statement "goto LAB_00013be7;" goto statement_identifier ;) })) }))) (labeled_statement "std::ios::clear(piVar10,uVar5 | 4);" statement_identifier : (ERROR ":" :) (labeled_statement "ios::clear(piVar10,uVar5 | 4);" statement_identifier : (ERROR ":" :) (expression_statement "clear(piVar10,uVar5 | 4);" (call_expression "clear(piVar10,uVar5 | 4)" identifier (argument_list "(piVar10,uVar5 | 4)" ( identifier , (binary_expression "uVar5 | 4" identifier | number_literal) ))) ;))) (labeled_statement "LAB_00013c01:\n  std::locale::~locale(local_3c);" statement_identifier : (labeled_statement "std::locale::~locale(local_3c);" statement_identifier : (ERROR ":" :) (labeled_statement "locale::~locale(local_3c);" statement_identifier : (ERROR ":" :) (expression_statement "~locale(local_3c);" (unary_expression "~locale(local_3c)" ~ (call_expression "locale(local_3c)" identifier (argument_list "(local_3c)" ( identifier )))) ;)))) (if_statement "if (local_38 != local_30) {\n    operator_delete(local_38);\n  }" if (parenthesized_expression "(local_38 != local_30)" ( (binary_expression "local_38 != local_30" identifier != identifier) )) (compound_statement "{\n    operator_delete(local_38);\n  }" { (expression_statement "operator_delete(local_38);" (call_expression "operator_delete(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) })) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00014700();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00014700();\n  }" { comment (expression_statement "FUN_00014700();" (call_expression "FUN_00014700()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return param_1;" return identifier ;) }))
(translation_unit "istream * operator>>(istream *i,mpf_ptr f)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  uint uVar2;\n  int iVar3;\n  char *__s;\n  size_type sVar4;\n  char cVar5;\n  lconv *plVar6;\n  numpunct *pnVar7;\n  ctype *pcVar8;\n  int *piVar9;\n  size_t sVar10;\n  undefined4 uVar11;\n  istream *piVar12;\n  istream *extraout_EDX;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  __mpf_struct *p_Var13;\n  char c;\n  bool ok;\n  locale local_3c;\n  string s;\n  \n  __x86_get_pc_thunk_di();\n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  paVar1 = &s.field_2;\n  c = '\0';\n  s._M_string_length = 0;\n  s.field_2._M_allocated_capacity = s.field_2._M_allocated_capacity & 0xffffff00;\n  ok = false;\n  s._M_dataplus._M_p = (pointer)paVar1;\n  plVar6 = localeconv();\n  __s = plVar6->decimal_point;\n  std::locale::locale(&local_3c,(locale *)(i + *(int *)(*(int *)i + -0xc) + 0x6c));\n                    /* try { // try from 00013a90 to 00013e02 has its CatchHandler @ 00013e03 */\n  pnVar7 = std::use_facet<std::numpunct<char>>(&local_3c);\n  cVar5 = (**(code **)(*(int *)pnVar7 + 8))(pnVar7);\n  std::istream::get((char *)i);\n  if (((byte)i[*(int *)(*(int *)i + -0xc) + 0xd] & 0x10) != 0) {\n    pcVar8 = std::use_facet<std::ctype<char>>(&local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2) & 0x20) == 0) break;\n      piVar9 = (int *)std::istream::get((char *)i);\n    } while ((*(byte *)((int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14) & 5) == 0);\n  }\n  if (c == '-') {\n    std::string::_M_replace((uint)&s,0,(char *)s._M_string_length,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)i);\n  }\n  else if (c == '+') goto LAB_00013c67;\n  __gmp_istream_set_digits(&s,i,&c,&ok,10);\n  if (c == cVar5) {\n    std::istream::get((char *)i);\n    sVar10 = strlen(__s);\n    if (0x7fffffff - s._M_string_length < sVar10) {\n      p_Var13 = (__mpf_struct *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error((char *)p_Var13);\n                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */\n      piVar12 = (istream *)operator>>(extraout_EDX,p_Var13);\n      return piVar12;\n    }\n    std::string::_M_append((char *)&s,(uint)__s);\n    __gmp_istream_set_digits(&s,i,&c,&ok,10);\n  }\n  sVar4 = s._M_string_length;\n  cVar5 = c;\n  if ((ok != false) && ((c & 0xdfU) == 0x45)) {\n    uVar2 = s._M_string_length + 1;\n    uVar11 = 0xf;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)s._M_dataplus._M_p != paVar1) {\n      uVar11 = s.field_2._M_allocated_capacity;\n    }\n    if (uVar11 < uVar2) {\n      std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);\n    }\n    s._M_dataplus._M_p[sVar4] = cVar5;\n    s._M_dataplus._M_p[sVar4 + 1] = '\0';\n    s._M_string_length = uVar2;\n    std::istream::get((char *)i);\n    sVar4 = s._M_string_length;\n    cVar5 = c;\n    ok = false;\n    if ((c - 0x2bU & 0xfd) == 0) {\n      uVar2 = s._M_string_length + 1;\n      uVar11 = 0xf;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)s._M_dataplus._M_p != paVar1) {\n        uVar11 = s.field_2._M_allocated_capacity;\n      }\n      if (uVar11 < uVar2) {\n        std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);\n      }\n      s._M_dataplus._M_p[sVar4] = cVar5;\n      s._M_dataplus._M_p[sVar4 + 1] = '\0';\n      s._M_string_length = uVar2;\n      std::istream::get((char *)i);\n    }\n    __gmp_istream_set_digits(&s,i,&c,&ok,10);\n  }\n  piVar12 = i + *(int *)(*(int *)i + -0xc);\n  if (*(uint *)(piVar12 + 0x14) == 0) {\n    std::istream::putback((char)i);\nLAB_00013be7:\n    if (ok != false) {\n      __gmpf_set_str(f,s._M_dataplus._M_p,10);\n      goto LAB_00013c01;\n    }\n    piVar12 = i + *(int *)(*(int *)i + -0xc);\n  }\n  else {\n    if ((*(uint *)(piVar12 + 0x14) & 2) == 0) goto LAB_00013be7;\n    if (ok != false) {\n      std::ios::clear((_Ios_Iostate)piVar12);\n      goto LAB_00013be7;\n    }\n  }\n  std::ios::clear((_Ios_Iostate)piVar12);\nLAB_00013c01:\n  std::locale::~locale(&local_3c);\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)s._M_dataplus._M_p != paVar1) {\n    operator_delete(s._M_dataplus._M_p);\n  }\n  if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return i;\n}\n\n" (ERROR "istream * operator>>(istream *i,mpf_ptr f)" (binary_expression "istream * operator>>(istream *i,mpf_ptr f)" (binary_expression "istream * operator" identifier * identifier) >> (parenthesized_expression "(istream *i,mpf_ptr f)" ( (comma_expression "istream *i,mpf_ptr" (binary_expression "istream *i" identifier * identifier) , identifier) (ERROR "f" identifier) )))) (compound_statement "{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  uint uVar2;\n  int iVar3;\n  char *__s;\n  size_type sVar4;\n  char cVar5;\n  lconv *plVar6;\n  numpunct *pnVar7;\n  ctype *pcVar8;\n  int *piVar9;\n  size_t sVar10;\n  undefined4 uVar11;\n  istream *piVar12;\n  istream *extraout_EDX;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  __mpf_struct *p_Var13;\n  char c;\n  bool ok;\n  locale local_3c;\n  string s;\n  \n  __x86_get_pc_thunk_di();\n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  paVar1 = &s.field_2;\n  c = '\0';\n  s._M_string_length = 0;\n  s.field_2._M_allocated_capacity = s.field_2._M_allocated_capacity & 0xffffff00;\n  ok = false;\n  s._M_dataplus._M_p = (pointer)paVar1;\n  plVar6 = localeconv();\n  __s = plVar6->decimal_point;\n  std::locale::locale(&local_3c,(locale *)(i + *(int *)(*(int *)i + -0xc) + 0x6c));\n                    /* try { // try from 00013a90 to 00013e02 has its CatchHandler @ 00013e03 */\n  pnVar7 = std::use_facet<std::numpunct<char>>(&local_3c);\n  cVar5 = (**(code **)(*(int *)pnVar7 + 8))(pnVar7);\n  std::istream::get((char *)i);\n  if (((byte)i[*(int *)(*(int *)i + -0xc) + 0xd] & 0x10) != 0) {\n    pcVar8 = std::use_facet<std::ctype<char>>(&local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2) & 0x20) == 0) break;\n      piVar9 = (int *)std::istream::get((char *)i);\n    } while ((*(byte *)((int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14) & 5) == 0);\n  }\n  if (c == '-') {\n    std::string::_M_replace((uint)&s,0,(char *)s._M_string_length,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)i);\n  }\n  else if (c == '+') goto LAB_00013c67;\n  __gmp_istream_set_digits(&s,i,&c,&ok,10);\n  if (c == cVar5) {\n    std::istream::get((char *)i);\n    sVar10 = strlen(__s);\n    if (0x7fffffff - s._M_string_length < sVar10) {\n      p_Var13 = (__mpf_struct *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error((char *)p_Var13);\n                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */\n      piVar12 = (istream *)operator>>(extraout_EDX,p_Var13);\n      return piVar12;\n    }\n    std::string::_M_append((char *)&s,(uint)__s);\n    __gmp_istream_set_digits(&s,i,&c,&ok,10);\n  }\n  sVar4 = s._M_string_length;\n  cVar5 = c;\n  if ((ok != false) && ((c & 0xdfU) == 0x45)) {\n    uVar2 = s._M_string_length + 1;\n    uVar11 = 0xf;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)s._M_dataplus._M_p != paVar1) {\n      uVar11 = s.field_2._M_allocated_capacity;\n    }\n    if (uVar11 < uVar2) {\n      std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);\n    }\n    s._M_dataplus._M_p[sVar4] = cVar5;\n    s._M_dataplus._M_p[sVar4 + 1] = '\0';\n    s._M_string_length = uVar2;\n    std::istream::get((char *)i);\n    sVar4 = s._M_string_length;\n    cVar5 = c;\n    ok = false;\n    if ((c - 0x2bU & 0xfd) == 0) {\n      uVar2 = s._M_string_length + 1;\n      uVar11 = 0xf;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)s._M_dataplus._M_p != paVar1) {\n        uVar11 = s.field_2._M_allocated_capacity;\n      }\n      if (uVar11 < uVar2) {\n        std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);\n      }\n      s._M_dataplus._M_p[sVar4] = cVar5;\n      s._M_dataplus._M_p[sVar4 + 1] = '\0';\n      s._M_string_length = uVar2;\n      std::istream::get((char *)i);\n    }\n    __gmp_istream_set_digits(&s,i,&c,&ok,10);\n  }\n  piVar12 = i + *(int *)(*(int *)i + -0xc);\n  if (*(uint *)(piVar12 + 0x14) == 0) {\n    std::istream::putback((char)i);\nLAB_00013be7:\n    if (ok != false) {\n      __gmpf_set_str(f,s._M_dataplus._M_p,10);\n      goto LAB_00013c01;\n    }\n    piVar12 = i + *(int *)(*(int *)i + -0xc);\n  }\n  else {\n    if ((*(uint *)(piVar12 + 0x14) & 2) == 0) goto LAB_00013be7;\n    if (ok != false) {\n      std::ios::clear((_Ios_Iostate)piVar12);\n      goto LAB_00013be7;\n    }\n  }\n  std::ios::clear((_Ios_Iostate)piVar12);\nLAB_00013c01:\n  std::locale::~locale(&local_3c);\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)s._M_dataplus._M_p != paVar1) {\n    operator_delete(s._M_dataplus._M_p);\n  }\n  if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return i;\n}" { (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_>_9\n  *paVar1;" (binary_expression "allocator<char>_>_9\n  *paVar1" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar1" identifier * identifier)) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_type sVar4;" type_identifier identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "lconv *plVar6;" type_identifier (pointer_declarator "*plVar6" * identifier) ;) (declaration "numpunct *pnVar7;" type_identifier (pointer_declarator "*pnVar7" * identifier) ;) (declaration "ctype *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "size_t sVar10;" primitive_type identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "istream *piVar12;" type_identifier (pointer_declarator "*piVar12" * identifier) ;) (declaration "istream *extraout_EDX;" type_identifier (pointer_declarator "*extraout_EDX" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "__mpf_struct *p_Var13;" type_identifier (pointer_declarator "*p_Var13" * identifier) ;) (declaration "char c;" primitive_type identifier ;) (declaration "bool ok;" primitive_type identifier ;) (declaration "locale local_3c;" type_identifier identifier ;) (declaration "string s;" type_identifier identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar3 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar3 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "paVar1 = &s.field_2;" (assignment_expression "paVar1 = &s.field_2" identifier = (pointer_expression "&s.field_2" & (field_expression "s.field_2" identifier . field_identifier))) ;) (expression_statement "c = '\0';" (assignment_expression "c = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "s._M_string_length = 0;" (assignment_expression "s._M_string_length = 0" (field_expression "s._M_string_length" identifier . field_identifier) = number_literal) ;) (expression_statement "s.field_2._M_allocated_capacity = s.field_2._M_allocated_capacity & 0xffffff00;" (assignment_expression "s.field_2._M_allocated_capacity = s.field_2._M_allocated_capacity & 0xffffff00" (field_expression "s.field_2._M_allocated_capacity" (field_expression "s.field_2" identifier . field_identifier) . field_identifier) = (binary_expression "s.field_2._M_allocated_capacity & 0xffffff00" (field_expression "s.field_2._M_allocated_capacity" (field_expression "s.field_2" identifier . field_identifier) . field_identifier) & number_literal)) ;) (expression_statement "ok = false;" (assignment_expression "ok = false" identifier = false) ;) (expression_statement "s._M_dataplus._M_p = (pointer)paVar1;" (assignment_expression "s._M_dataplus._M_p = (pointer)paVar1" (field_expression "s._M_dataplus._M_p" (field_expression "s._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar1" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "plVar6 = localeconv();" (assignment_expression "plVar6 = localeconv()" identifier = (call_expression "localeconv()" identifier (argument_list "()" ( )))) ;) (expression_statement "__s = plVar6->decimal_point;" (assignment_expression "__s = plVar6->decimal_point" identifier = (field_expression "plVar6->decimal_point" identifier -> field_identifier)) ;) (labeled_statement "std::locale::locale(&local_3c,(locale *)(i + *(int *)(*(int *)i + -0xc) + 0x6c));" statement_identifier : (ERROR ":" :) (labeled_statement "locale::locale(&local_3c,(locale *)(i + *(int *)(*(int *)i + -0xc) + 0x6c));" statement_identifier : (ERROR ":" :) (expression_statement "locale(&local_3c,(locale *)(i + *(int *)(*(int *)i + -0xc) + 0x6c));" (call_expression "locale(&local_3c,(locale *)(i + *(int *)(*(int *)i + -0xc) + 0x6c))" identifier (argument_list "(&local_3c,(locale *)(i + *(int *)(*(int *)i + -0xc) + 0x6c))" ( (pointer_expression "&local_3c" & identifier) , (cast_expression "(locale *)(i + *(int *)(*(int *)i + -0xc) + 0x6c)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(i + *(int *)(*(int *)i + -0xc) + 0x6c)" ( (binary_expression "i + *(int *)(*(int *)i + -0xc) + 0x6c" (binary_expression "i + *(int *)(*(int *)i + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)i + -0xc)" * (cast_expression "(int *)(*(int *)i + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)i + -0xc)" ( (binary_expression "*(int *)i + -0xc" (pointer_expression "*(int *)i" * (cast_expression "(int *)i" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) + number_literal) ))) ))) ;))) comment (expression_statement "pnVar7 = std::use_facet<std::numpunct<char>>(&local_3c);" (binary_expression "pnVar7 = std::use_facet<std::numpunct<char>>(&local_3c)" (binary_expression "pnVar7 = std::use_facet<std" (assignment_expression "pnVar7 = std" identifier = identifier) (ERROR "::use_facet" : : identifier) < identifier) (ERROR "::numpunct" : : identifier) < (binary_expression "char>>(&local_3c)" identifier >> (parenthesized_expression "(&local_3c)" ( (pointer_expression "&local_3c" & identifier) )))) ;) (expression_statement "cVar5 = (**(code **)(*(int *)pnVar7 + 8))(pnVar7);" (assignment_expression "cVar5 = (**(code **)(*(int *)pnVar7 + 8))(pnVar7)" identifier = (call_expression "(**(code **)(*(int *)pnVar7 + 8))(pnVar7)" (parenthesized_expression "(**(code **)(*(int *)pnVar7 + 8))" ( (pointer_expression "**(code **)(*(int *)pnVar7 + 8)" * (pointer_expression "*(code **)(*(int *)pnVar7 + 8)" * (cast_expression "(code **)(*(int *)pnVar7 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pnVar7 + 8)" ( (binary_expression "*(int *)pnVar7 + 8" (pointer_expression "*(int *)pnVar7" * (cast_expression "(int *)pnVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pnVar7)" ( identifier )))) ;) (labeled_statement "std::istream::get((char *)i);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)i);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)i);" (call_expression "get((char *)i)" identifier (argument_list "((char *)i)" ( (cast_expression "(char *)i" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (if_statement "if (((byte)i[*(int *)(*(int *)i + -0xc) + 0xd] & 0x10) != 0) {\n    pcVar8 = std::use_facet<std::ctype<char>>(&local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2) & 0x20) == 0) break;\n      piVar9 = (int *)std::istream::get((char *)i);\n    } while ((*(byte *)((int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14) & 5) == 0);\n  }" if (parenthesized_expression "(((byte)i[*(int *)(*(int *)i + -0xc) + 0xd] & 0x10) != 0)" ( (binary_expression "((byte)i[*(int *)(*(int *)i + -0xc) + 0xd] & 0x10) != 0" (parenthesized_expression "((byte)i[*(int *)(*(int *)i + -0xc) + 0xd] & 0x10)" ( (binary_expression "(byte)i[*(int *)(*(int *)i + -0xc) + 0xd] & 0x10" (cast_expression "(byte)i[*(int *)(*(int *)i + -0xc) + 0xd]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "i[*(int *)(*(int *)i + -0xc) + 0xd]" identifier [ (binary_expression "*(int *)(*(int *)i + -0xc) + 0xd" (pointer_expression "*(int *)(*(int *)i + -0xc)" * (cast_expression "(int *)(*(int *)i + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)i + -0xc)" ( (binary_expression "*(int *)i + -0xc" (pointer_expression "*(int *)i" * (cast_expression "(int *)i" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) ])) & number_literal) )) != number_literal) )) (compound_statement "{\n    pcVar8 = std::use_facet<std::ctype<char>>(&local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2) & 0x20) == 0) break;\n      piVar9 = (int *)std::istream::get((char *)i);\n    } while ((*(byte *)((int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14) & 5) == 0);\n  }" { (expression_statement "pcVar8 = std::use_facet<std::ctype<char>>(&local_3c);" (binary_expression "pcVar8 = std::use_facet<std::ctype<char>>(&local_3c)" (binary_expression "pcVar8 = std::use_facet<std" (assignment_expression "pcVar8 = std" identifier = identifier) (ERROR "::use_facet" : : identifier) < identifier) (ERROR "::ctype" : : identifier) < (binary_expression "char>>(&local_3c)" identifier >> (parenthesized_expression "(&local_3c)" ( (pointer_expression "&local_3c" & identifier) )))) ;) (do_statement "do {\n      if ((*(byte *)(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2) & 0x20) == 0) break;\n      piVar9 = (int *)std::istream::get((char *)i);\n    } while ((*(byte *)((int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14) & 5) == 0);" do (compound_statement "{\n      if ((*(byte *)(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2) & 0x20) == 0) break;\n      piVar9 = (int *)std::istream::get((char *)i);\n    }" { (if_statement "if ((*(byte *)(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2) & 0x20) == 0) break;" if (parenthesized_expression "((*(byte *)(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2) & 0x20) == 0)" ( (binary_expression "(*(byte *)(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2) & 0x20)" ( (binary_expression "*(byte *)(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2) & 0x20" (pointer_expression "*(byte *)(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2)" * (cast_expression "(byte *)(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2)" ( (binary_expression "*(int *)(pcVar8 + 0x18) + 1 + (uint)(byte)c * 2" (binary_expression "*(int *)(pcVar8 + 0x18) + 1" (pointer_expression "*(int *)(pcVar8 + 0x18)" * (cast_expression "(int *)(pcVar8 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar8 + 0x18)" ( (binary_expression "pcVar8 + 0x18" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)(byte)c * 2" (cast_expression "(uint)(byte)c" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)c" ( (type_descriptor "byte" type_identifier) ) identifier)) * number_literal)) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (ERROR "piVar9 = (int *)std::" (assignment_expression "piVar9 = (int *)std" identifier = (cast_expression "(int *)std" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) : :) (labeled_statement "istream::get((char *)i);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)i);" (call_expression "get((char *)i)" identifier (argument_list "((char *)i)" ( (cast_expression "(char *)i" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) }) while (parenthesized_expression "((*(byte *)((int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14) & 5) == 0)" ( (binary_expression "(*(byte *)((int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14) & 5) == 0" (parenthesized_expression "(*(byte *)((int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14) & 5)" ( (binary_expression "*(byte *)((int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14) & 5" (pointer_expression "*(byte *)((int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14)" * (cast_expression "(byte *)((int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14)" ( (binary_expression "(int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14" (binary_expression "(int)piVar9 + *(int *)(*piVar9 + -0xc)" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*piVar9 + -0xc)" * (cast_expression "(int *)(*piVar9 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar9 + -0xc)" ( (binary_expression "*piVar9 + -0xc" (pointer_expression "*piVar9" * identifier) + number_literal) ))))) + number_literal) )))) & number_literal) )) == number_literal) )) ;) })) (if_statement "if (c == '-') {\n    std::string::_M_replace((uint)&s,0,(char *)s._M_string_length,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)i);\n  }\n  else if (c == '+') goto LAB_00013c67;" if (parenthesized_expression "(c == '-')" ( (binary_expression "c == '-'" identifier == (char_literal "'-'" ' character ')) )) (compound_statement "{\n    std::string::_M_replace((uint)&s,0,(char *)s._M_string_length,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)i);\n  }" { (labeled_statement "std::string::_M_replace((uint)&s,0,(char *)s._M_string_length,unaff_EDI + 0x15d7);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace((uint)&s,0,(char *)s._M_string_length,unaff_EDI + 0x15d7);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((uint)&s,0,(char *)s._M_string_length,unaff_EDI + 0x15d7);" (call_expression "_M_replace((uint)&s,0,(char *)s._M_string_length,unaff_EDI + 0x15d7)" identifier (argument_list "((uint)&s,0,(char *)s._M_string_length,unaff_EDI + 0x15d7)" ( (binary_expression "(uint)&s" (parenthesized_expression "(uint)" ( identifier )) & identifier) , number_literal , (cast_expression "(char *)s._M_string_length" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "s._M_string_length" identifier . field_identifier)) , (binary_expression "unaff_EDI + 0x15d7" identifier + number_literal) ))) ;))) (labeled_statement "LAB_00013c67:\n    std::istream::get((char *)i);" statement_identifier : (labeled_statement "std::istream::get((char *)i);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)i);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)i);" (call_expression "get((char *)i)" identifier (argument_list "((char *)i)" ( (cast_expression "(char *)i" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)))) }) (else_clause "else if (c == '+') goto LAB_00013c67;" else (if_statement "if (c == '+') goto LAB_00013c67;" if (parenthesized_expression "(c == '+')" ( (binary_expression "c == '+'" identifier == (char_literal "'+'" ' character ')) )) (goto_statement "goto LAB_00013c67;" goto statement_identifier ;)))) (expression_statement "__gmp_istream_set_digits(&s,i,&c,&ok,10);" (call_expression "__gmp_istream_set_digits(&s,i,&c,&ok,10)" identifier (argument_list "(&s,i,&c,&ok,10)" ( (pointer_expression "&s" & identifier) , identifier , (pointer_expression "&c" & identifier) , (pointer_expression "&ok" & identifier) , number_literal ))) ;) (if_statement "if (c == cVar5) {\n    std::istream::get((char *)i);\n    sVar10 = strlen(__s);\n    if (0x7fffffff - s._M_string_length < sVar10) {\n      p_Var13 = (__mpf_struct *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error((char *)p_Var13);\n                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */\n      piVar12 = (istream *)operator>>(extraout_EDX,p_Var13);\n      return piVar12;\n    }\n    std::string::_M_append((char *)&s,(uint)__s);\n    __gmp_istream_set_digits(&s,i,&c,&ok,10);\n  }" if (parenthesized_expression "(c == cVar5)" ( (binary_expression "c == cVar5" identifier == identifier) )) (compound_statement "{\n    std::istream::get((char *)i);\n    sVar10 = strlen(__s);\n    if (0x7fffffff - s._M_string_length < sVar10) {\n      p_Var13 = (__mpf_struct *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error((char *)p_Var13);\n                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */\n      piVar12 = (istream *)operator>>(extraout_EDX,p_Var13);\n      return piVar12;\n    }\n    std::string::_M_append((char *)&s,(uint)__s);\n    __gmp_istream_set_digits(&s,i,&c,&ok,10);\n  }" { (labeled_statement "std::istream::get((char *)i);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)i);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)i);" (call_expression "get((char *)i)" identifier (argument_list "((char *)i)" ( (cast_expression "(char *)i" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (expression_statement "sVar10 = strlen(__s);" (assignment_expression "sVar10 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (if_statement "if (0x7fffffff - s._M_string_length < sVar10) {\n      p_Var13 = (__mpf_struct *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error((char *)p_Var13);\n                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */\n      piVar12 = (istream *)operator>>(extraout_EDX,p_Var13);\n      return piVar12;\n    }" if (parenthesized_expression "(0x7fffffff - s._M_string_length < sVar10)" ( (binary_expression "0x7fffffff - s._M_string_length < sVar10" (binary_expression "0x7fffffff - s._M_string_length" number_literal - (field_expression "s._M_string_length" identifier . field_identifier)) < identifier) )) (compound_statement "{\n      p_Var13 = (__mpf_struct *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error((char *)p_Var13);\n                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */\n      piVar12 = (istream *)operator>>(extraout_EDX,p_Var13);\n      return piVar12;\n    }" { (expression_statement "p_Var13 = (__mpf_struct *)(unaff_EDI + 0x15d9);" (assignment_expression "p_Var13 = (__mpf_struct *)(unaff_EDI + 0x15d9)" identifier = (cast_expression "(__mpf_struct *)(unaff_EDI + 0x15d9)" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x15d9)" ( (binary_expression "unaff_EDI + 0x15d9" identifier + number_literal) )))) ;) (labeled_statement "std::__throw_length_error((char *)p_Var13);" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error((char *)p_Var13);" (call_expression "__throw_length_error((char *)p_Var13)" identifier (argument_list "((char *)p_Var13)" ( (cast_expression "(char *)p_Var13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) comment (expression_statement "piVar12 = (istream *)operator>>(extraout_EDX,p_Var13);" (assignment_expression "piVar12 = (istream *)operator>>(extraout_EDX,p_Var13)" identifier = (binary_expression "(istream *)operator>>(extraout_EDX,p_Var13)" (cast_expression "(istream *)operator" ( (type_descriptor "istream *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) >> (parenthesized_expression "(extraout_EDX,p_Var13)" ( (comma_expression "extraout_EDX,p_Var13" identifier , identifier) )))) ;) (return_statement "return piVar12;" return identifier ;) })) (labeled_statement "std::string::_M_append((char *)&s,(uint)__s);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((char *)&s,(uint)__s);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((char *)&s,(uint)__s);" (call_expression "_M_append((char *)&s,(uint)__s)" identifier (argument_list "((char *)&s,(uint)__s)" ( (cast_expression "(char *)&s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&s" & identifier)) , (cast_expression "(uint)__s" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;))) (expression_statement "__gmp_istream_set_digits(&s,i,&c,&ok,10);" (call_expression "__gmp_istream_set_digits(&s,i,&c,&ok,10)" identifier (argument_list "(&s,i,&c,&ok,10)" ( (pointer_expression "&s" & identifier) , identifier , (pointer_expression "&c" & identifier) , (pointer_expression "&ok" & identifier) , number_literal ))) ;) })) (expression_statement "sVar4 = s._M_string_length;" (assignment_expression "sVar4 = s._M_string_length" identifier = (field_expression "s._M_string_length" identifier . field_identifier)) ;) (expression_statement "cVar5 = c;" (assignment_expression "cVar5 = c" identifier = identifier) ;) (if_statement "if ((ok != false) && ((c & 0xdfU) == 0x45)) {\n    uVar2 = s._M_string_length + 1;\n    uVar11 = 0xf;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)s._M_dataplus._M_p != paVar1) {\n      uVar11 = s.field_2._M_allocated_capacity;\n    }\n    if (uVar11 < uVar2) {\n      std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);\n    }\n    s._M_dataplus._M_p[sVar4] = cVar5;\n    s._M_dataplus._M_p[sVar4 + 1] = '\0';\n    s._M_string_length = uVar2;\n    std::istream::get((char *)i);\n    sVar4 = s._M_string_length;\n    cVar5 = c;\n    ok = false;\n    if ((c - 0x2bU & 0xfd) == 0) {\n      uVar2 = s._M_string_length + 1;\n      uVar11 = 0xf;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)s._M_dataplus._M_p != paVar1) {\n        uVar11 = s.field_2._M_allocated_capacity;\n      }\n      if (uVar11 < uVar2) {\n        std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);\n      }\n      s._M_dataplus._M_p[sVar4] = cVar5;\n      s._M_dataplus._M_p[sVar4 + 1] = '\0';\n      s._M_string_length = uVar2;\n      std::istream::get((char *)i);\n    }\n    __gmp_istream_set_digits(&s,i,&c,&ok,10);\n  }" if (parenthesized_expression "((ok != false) && ((c & 0xdfU) == 0x45))" ( (binary_expression "(ok != false) && ((c & 0xdfU) == 0x45)" (parenthesized_expression "(ok != false)" ( (binary_expression "ok != false" identifier != false) )) && (parenthesized_expression "((c & 0xdfU) == 0x45)" ( (binary_expression "(c & 0xdfU) == 0x45" (parenthesized_expression "(c & 0xdfU)" ( (binary_expression "c & 0xdfU" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    uVar2 = s._M_string_length + 1;\n    uVar11 = 0xf;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)s._M_dataplus._M_p != paVar1) {\n      uVar11 = s.field_2._M_allocated_capacity;\n    }\n    if (uVar11 < uVar2) {\n      std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);\n    }\n    s._M_dataplus._M_p[sVar4] = cVar5;\n    s._M_dataplus._M_p[sVar4 + 1] = '\0';\n    s._M_string_length = uVar2;\n    std::istream::get((char *)i);\n    sVar4 = s._M_string_length;\n    cVar5 = c;\n    ok = false;\n    if ((c - 0x2bU & 0xfd) == 0) {\n      uVar2 = s._M_string_length + 1;\n      uVar11 = 0xf;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)s._M_dataplus._M_p != paVar1) {\n        uVar11 = s.field_2._M_allocated_capacity;\n      }\n      if (uVar11 < uVar2) {\n        std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);\n      }\n      s._M_dataplus._M_p[sVar4] = cVar5;\n      s._M_dataplus._M_p[sVar4 + 1] = '\0';\n      s._M_string_length = uVar2;\n      std::istream::get((char *)i);\n    }\n    __gmp_istream_set_digits(&s,i,&c,&ok,10);\n  }" { (expression_statement "uVar2 = s._M_string_length + 1;" (assignment_expression "uVar2 = s._M_string_length + 1" identifier = (binary_expression "s._M_string_length + 1" (field_expression "s._M_string_length" identifier . field_identifier) + number_literal)) ;) (expression_statement "uVar11 = 0xf;" (assignment_expression "uVar11 = 0xf" identifier = number_literal) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)s._M_dataplus._M_p != paVar1) {\n      uVar11 = s.field_2._M_allocated_capacity;\n    }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)s._M_dataplus._M_p != paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)s._M_dataplus._M_p != paVar1)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n         *)s._M_dataplus._M_p != paVar1" (binary_expression "allocator<char>_>_9\n         *)s._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n         *)s._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "s._M_dataplus._M_p" (field_expression "s._M_dataplus" identifier . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n      uVar11 = s.field_2._M_allocated_capacity;\n    }" { (expression_statement "uVar11 = s.field_2._M_allocated_capacity;" (assignment_expression "uVar11 = s.field_2._M_allocated_capacity" identifier = (field_expression "s.field_2._M_allocated_capacity" (field_expression "s.field_2" identifier . field_identifier) . field_identifier)) ;) })) (if_statement "if (uVar11 < uVar2) {\n      std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);\n    }" if (parenthesized_expression "(uVar11 < uVar2)" ( (binary_expression "uVar11 < uVar2" identifier < identifier) )) (compound_statement "{\n      std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);\n    }" { (labeled_statement "std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);" (call_expression "_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0)" identifier (argument_list "((uint)&s,s._M_string_length,(char *)0x0,0)" ( (binary_expression "(uint)&s" (parenthesized_expression "(uint)" ( identifier )) & identifier) , (field_expression "s._M_string_length" identifier . field_identifier) , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "s._M_dataplus._M_p[sVar4] = cVar5;" (assignment_expression "s._M_dataplus._M_p[sVar4] = cVar5" (subscript_expression "s._M_dataplus._M_p[sVar4]" (field_expression "s._M_dataplus._M_p" (field_expression "s._M_dataplus" identifier . field_identifier) . field_identifier) [ identifier ]) = identifier) ;) (expression_statement "s._M_dataplus._M_p[sVar4 + 1] = '\0';" (assignment_expression "s._M_dataplus._M_p[sVar4 + 1] = '\0'" (subscript_expression "s._M_dataplus._M_p[sVar4 + 1]" (field_expression "s._M_dataplus._M_p" (field_expression "s._M_dataplus" identifier . field_identifier) . field_identifier) [ (binary_expression "sVar4 + 1" identifier + number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "s._M_string_length = uVar2;" (assignment_expression "s._M_string_length = uVar2" (field_expression "s._M_string_length" identifier . field_identifier) = identifier) ;) (labeled_statement "std::istream::get((char *)i);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)i);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)i);" (call_expression "get((char *)i)" identifier (argument_list "((char *)i)" ( (cast_expression "(char *)i" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (expression_statement "sVar4 = s._M_string_length;" (assignment_expression "sVar4 = s._M_string_length" identifier = (field_expression "s._M_string_length" identifier . field_identifier)) ;) (expression_statement "cVar5 = c;" (assignment_expression "cVar5 = c" identifier = identifier) ;) (expression_statement "ok = false;" (assignment_expression "ok = false" identifier = false) ;) (if_statement "if ((c - 0x2bU & 0xfd) == 0) {\n      uVar2 = s._M_string_length + 1;\n      uVar11 = 0xf;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)s._M_dataplus._M_p != paVar1) {\n        uVar11 = s.field_2._M_allocated_capacity;\n      }\n      if (uVar11 < uVar2) {\n        std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);\n      }\n      s._M_dataplus._M_p[sVar4] = cVar5;\n      s._M_dataplus._M_p[sVar4 + 1] = '\0';\n      s._M_string_length = uVar2;\n      std::istream::get((char *)i);\n    }" if (parenthesized_expression "((c - 0x2bU & 0xfd) == 0)" ( (binary_expression "(c - 0x2bU & 0xfd) == 0" (parenthesized_expression "(c - 0x2bU & 0xfd)" ( (binary_expression "c - 0x2bU & 0xfd" (binary_expression "c - 0x2bU" identifier - number_literal) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar2 = s._M_string_length + 1;\n      uVar11 = 0xf;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)s._M_dataplus._M_p != paVar1) {\n        uVar11 = s.field_2._M_allocated_capacity;\n      }\n      if (uVar11 < uVar2) {\n        std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);\n      }\n      s._M_dataplus._M_p[sVar4] = cVar5;\n      s._M_dataplus._M_p[sVar4 + 1] = '\0';\n      s._M_string_length = uVar2;\n      std::istream::get((char *)i);\n    }" { (expression_statement "uVar2 = s._M_string_length + 1;" (assignment_expression "uVar2 = s._M_string_length + 1" identifier = (binary_expression "s._M_string_length + 1" (field_expression "s._M_string_length" identifier . field_identifier) + number_literal)) ;) (expression_statement "uVar11 = 0xf;" (assignment_expression "uVar11 = 0xf" identifier = number_literal) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)s._M_dataplus._M_p != paVar1) {\n        uVar11 = s.field_2._M_allocated_capacity;\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)s._M_dataplus._M_p != paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)s._M_dataplus._M_p != paVar1)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n           *)s._M_dataplus._M_p != paVar1" (binary_expression "allocator<char>_>_9\n           *)s._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)s._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "s._M_dataplus._M_p" (field_expression "s._M_dataplus" identifier . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n        uVar11 = s.field_2._M_allocated_capacity;\n      }" { (expression_statement "uVar11 = s.field_2._M_allocated_capacity;" (assignment_expression "uVar11 = s.field_2._M_allocated_capacity" identifier = (field_expression "s.field_2._M_allocated_capacity" (field_expression "s.field_2" identifier . field_identifier) . field_identifier)) ;) })) (if_statement "if (uVar11 < uVar2) {\n        std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);\n      }" if (parenthesized_expression "(uVar11 < uVar2)" ( (binary_expression "uVar11 < uVar2" identifier < identifier) )) (compound_statement "{\n        std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);\n      }" { (labeled_statement "std::string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0);" (call_expression "_M_mutate((uint)&s,s._M_string_length,(char *)0x0,0)" identifier (argument_list "((uint)&s,s._M_string_length,(char *)0x0,0)" ( (binary_expression "(uint)&s" (parenthesized_expression "(uint)" ( identifier )) & identifier) , (field_expression "s._M_string_length" identifier . field_identifier) , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "s._M_dataplus._M_p[sVar4] = cVar5;" (assignment_expression "s._M_dataplus._M_p[sVar4] = cVar5" (subscript_expression "s._M_dataplus._M_p[sVar4]" (field_expression "s._M_dataplus._M_p" (field_expression "s._M_dataplus" identifier . field_identifier) . field_identifier) [ identifier ]) = identifier) ;) (expression_statement "s._M_dataplus._M_p[sVar4 + 1] = '\0';" (assignment_expression "s._M_dataplus._M_p[sVar4 + 1] = '\0'" (subscript_expression "s._M_dataplus._M_p[sVar4 + 1]" (field_expression "s._M_dataplus._M_p" (field_expression "s._M_dataplus" identifier . field_identifier) . field_identifier) [ (binary_expression "sVar4 + 1" identifier + number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "s._M_string_length = uVar2;" (assignment_expression "s._M_string_length = uVar2" (field_expression "s._M_string_length" identifier . field_identifier) = identifier) ;) (labeled_statement "std::istream::get((char *)i);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)i);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)i);" (call_expression "get((char *)i)" identifier (argument_list "((char *)i)" ( (cast_expression "(char *)i" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) })) (expression_statement "__gmp_istream_set_digits(&s,i,&c,&ok,10);" (call_expression "__gmp_istream_set_digits(&s,i,&c,&ok,10)" identifier (argument_list "(&s,i,&c,&ok,10)" ( (pointer_expression "&s" & identifier) , identifier , (pointer_expression "&c" & identifier) , (pointer_expression "&ok" & identifier) , number_literal ))) ;) })) (expression_statement "piVar12 = i + *(int *)(*(int *)i + -0xc);" (assignment_expression "piVar12 = i + *(int *)(*(int *)i + -0xc)" identifier = (binary_expression "i + *(int *)(*(int *)i + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)i + -0xc)" * (cast_expression "(int *)(*(int *)i + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)i + -0xc)" ( (binary_expression "*(int *)i + -0xc" (pointer_expression "*(int *)i" * (cast_expression "(int *)i" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))))) ;) (if_statement "if (*(uint *)(piVar12 + 0x14) == 0) {\n    std::istream::putback((char)i);\nLAB_00013be7:\n    if (ok != false) {\n      __gmpf_set_str(f,s._M_dataplus._M_p,10);\n      goto LAB_00013c01;\n    }\n    piVar12 = i + *(int *)(*(int *)i + -0xc);\n  }\n  else {\n    if ((*(uint *)(piVar12 + 0x14) & 2) == 0) goto LAB_00013be7;\n    if (ok != false) {\n      std::ios::clear((_Ios_Iostate)piVar12);\n      goto LAB_00013be7;\n    }\n  }" if (parenthesized_expression "(*(uint *)(piVar12 + 0x14) == 0)" ( (binary_expression "*(uint *)(piVar12 + 0x14) == 0" (pointer_expression "*(uint *)(piVar12 + 0x14)" * (cast_expression "(uint *)(piVar12 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 0x14)" ( (binary_expression "piVar12 + 0x14" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    std::istream::putback((char)i);\nLAB_00013be7:\n    if (ok != false) {\n      __gmpf_set_str(f,s._M_dataplus._M_p,10);\n      goto LAB_00013c01;\n    }\n    piVar12 = i + *(int *)(*(int *)i + -0xc);\n  }" { (labeled_statement "std::istream::putback((char)i);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::putback((char)i);" statement_identifier : (ERROR ":" :) (expression_statement "putback((char)i);" (call_expression "putback((char)i)" identifier (argument_list "((char)i)" ( (cast_expression "(char)i" ( (type_descriptor "char" primitive_type) ) identifier) ))) ;))) (labeled_statement "LAB_00013be7:\n    if (ok != false) {\n      __gmpf_set_str(f,s._M_dataplus._M_p,10);\n      goto LAB_00013c01;\n    }" statement_identifier : (if_statement "if (ok != false) {\n      __gmpf_set_str(f,s._M_dataplus._M_p,10);\n      goto LAB_00013c01;\n    }" if (parenthesized_expression "(ok != false)" ( (binary_expression "ok != false" identifier != false) )) (compound_statement "{\n      __gmpf_set_str(f,s._M_dataplus._M_p,10);\n      goto LAB_00013c01;\n    }" { (expression_statement "__gmpf_set_str(f,s._M_dataplus._M_p,10);" (call_expression "__gmpf_set_str(f,s._M_dataplus._M_p,10)" identifier (argument_list "(f,s._M_dataplus._M_p,10)" ( identifier , (field_expression "s._M_dataplus._M_p" (field_expression "s._M_dataplus" identifier . field_identifier) . field_identifier) , number_literal ))) ;) (goto_statement "goto LAB_00013c01;" goto statement_identifier ;) }))) (expression_statement "piVar12 = i + *(int *)(*(int *)i + -0xc);" (assignment_expression "piVar12 = i + *(int *)(*(int *)i + -0xc)" identifier = (binary_expression "i + *(int *)(*(int *)i + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)i + -0xc)" * (cast_expression "(int *)(*(int *)i + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)i + -0xc)" ( (binary_expression "*(int *)i + -0xc" (pointer_expression "*(int *)i" * (cast_expression "(int *)i" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))))) ;) }) (else_clause "else {\n    if ((*(uint *)(piVar12 + 0x14) & 2) == 0) goto LAB_00013be7;\n    if (ok != false) {\n      std::ios::clear((_Ios_Iostate)piVar12);\n      goto LAB_00013be7;\n    }\n  }" else (compound_statement "{\n    if ((*(uint *)(piVar12 + 0x14) & 2) == 0) goto LAB_00013be7;\n    if (ok != false) {\n      std::ios::clear((_Ios_Iostate)piVar12);\n      goto LAB_00013be7;\n    }\n  }" { (if_statement "if ((*(uint *)(piVar12 + 0x14) & 2) == 0) goto LAB_00013be7;" if (parenthesized_expression "((*(uint *)(piVar12 + 0x14) & 2) == 0)" ( (binary_expression "(*(uint *)(piVar12 + 0x14) & 2) == 0" (parenthesized_expression "(*(uint *)(piVar12 + 0x14) & 2)" ( (binary_expression "*(uint *)(piVar12 + 0x14) & 2" (pointer_expression "*(uint *)(piVar12 + 0x14)" * (cast_expression "(uint *)(piVar12 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 0x14)" ( (binary_expression "piVar12 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00013be7;" goto statement_identifier ;)) (if_statement "if (ok != false) {\n      std::ios::clear((_Ios_Iostate)piVar12);\n      goto LAB_00013be7;\n    }" if (parenthesized_expression "(ok != false)" ( (binary_expression "ok != false" identifier != false) )) (compound_statement "{\n      std::ios::clear((_Ios_Iostate)piVar12);\n      goto LAB_00013be7;\n    }" { (labeled_statement "std::ios::clear((_Ios_Iostate)piVar12);" statement_identifier : (ERROR ":" :) (labeled_statement "ios::clear((_Ios_Iostate)piVar12);" statement_identifier : (ERROR ":" :) (expression_statement "clear((_Ios_Iostate)piVar12);" (call_expression "clear((_Ios_Iostate)piVar12)" identifier (argument_list "((_Ios_Iostate)piVar12)" ( (cast_expression "(_Ios_Iostate)piVar12" ( (type_descriptor "_Ios_Iostate" type_identifier) ) identifier) ))) ;))) (goto_statement "goto LAB_00013be7;" goto statement_identifier ;) })) }))) (labeled_statement "std::ios::clear((_Ios_Iostate)piVar12);" statement_identifier : (ERROR ":" :) (labeled_statement "ios::clear((_Ios_Iostate)piVar12);" statement_identifier : (ERROR ":" :) (expression_statement "clear((_Ios_Iostate)piVar12);" (call_expression "clear((_Ios_Iostate)piVar12)" identifier (argument_list "((_Ios_Iostate)piVar12)" ( (cast_expression "(_Ios_Iostate)piVar12" ( (type_descriptor "_Ios_Iostate" type_identifier) ) identifier) ))) ;))) (labeled_statement "LAB_00013c01:\n  std::locale::~locale(&local_3c);" statement_identifier : (labeled_statement "std::locale::~locale(&local_3c);" statement_identifier : (ERROR ":" :) (labeled_statement "locale::~locale(&local_3c);" statement_identifier : (ERROR ":" :) (expression_statement "~locale(&local_3c);" (unary_expression "~locale(&local_3c)" ~ (call_expression "locale(&local_3c)" identifier (argument_list "(&local_3c)" ( (pointer_expression "&local_3c" & identifier) )))) ;)))) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)s._M_dataplus._M_p != paVar1) {\n    operator_delete(s._M_dataplus._M_p);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)s._M_dataplus._M_p != paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)s._M_dataplus._M_p != paVar1)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)s._M_dataplus._M_p != paVar1" (binary_expression "allocator<char>_>_9\n       *)s._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)s._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "s._M_dataplus._M_p" (field_expression "s._M_dataplus" identifier . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n    operator_delete(s._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(s._M_dataplus._M_p);" (call_expression "operator_delete(s._M_dataplus._M_p)" identifier (argument_list "(s._M_dataplus._M_p)" ( (field_expression "s._M_dataplus._M_p" (field_expression "s._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (if_statement "if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar3 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar3 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return i;" return identifier ;) }))
(translation_unit "istream * operator>>(istream *param_1,__mpf_struct *param_2)\n\n{\n  char *pcVar1;\n  byte bVar2;\n  lconv *plVar3;\n  numpunct *pnVar4;\n  uint uVar5;\n  ctype *pcVar6;\n  int *piVar7;\n  size_t sVar8;\n  char *pcVar9;\n  istream *piVar10;\n  undefined4 extraout_EDX;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  char *pcVar11;\n  byte *pbVar12;\n  byte local_3e;\n  bool local_3d;\n  locale local_3c [4];\n  char **local_38;\n  char *local_34;\n  char *local_30 [4];\n  int local_20;\n  \n  FUN_00013e0a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_3e = 0;\n  local_34 = (char *)0x0;\n  local_30[0] = (char *)((uint)local_30[0] & 0xffffff00);\n  local_3d = false;\n  local_38 = local_30;\n  plVar3 = localeconv();\n  pcVar11 = plVar3->decimal_point;\n  std::locale::locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));\n                    \n  pnVar4 = std::use_facet<std::numpunct<char>>(local_3c);\n  bVar2 = (**(code **)(*(int *)pnVar4 + 8))(pnVar4);\n  std::istream::get((char *)param_1);\n  if (((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0) {\n    pcVar6 = std::use_facet<std::ctype<char>>(local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);\n  }\n  if (local_3e == 0x2d) {\n    std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)param_1);\n  }\n  else if (local_3e == 0x2b) goto LAB_00013c67;\n  __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  if (local_3e == bVar2) {\n    pbVar12 = &local_3e;\n    std::istream::get((char *)param_1);\n    sVar8 = strlen(pcVar11);\n    if (0x7fffffffU - (int)local_34 < sVar8) {\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    \n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }\n    std::string::_M_append((char *)&local_38,(uint)pcVar11);\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }\n  pcVar11 = local_34;\n  bVar2 = local_3e;\n  if ((local_3d != false) && ((local_3e & 0xdf) == 0x45)) {\n    pcVar1 = local_34 + 1;\n    pcVar9 = (char *)0xf;\n    if (local_38 != local_30) {\n      pcVar9 = local_30[0];\n    }\n    if (pcVar9 < pcVar1) {\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }\n    *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n    pcVar11[(int)local_38 + 1] = '\0';\n    local_34 = pcVar1;\n    std::istream::get((char *)param_1);\n    pcVar11 = local_34;\n    bVar2 = local_3e;\n    local_3d = false;\n    if ((local_3e - 0x2b & 0xfd) == 0) {\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }\n  piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n  uVar5 = *(uint *)(piVar10 + 0x14);\n  if (uVar5 == 0) {\n    std::istream::putback((char)param_1);\nLAB_00013be7:\n    if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }\n    piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n    uVar5 = *(uint *)(piVar10 + 0x14);\n  }\n  else {\n    if ((uVar5 & 2) == 0) goto LAB_00013be7;\n    if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }\n  }\n  std::ios::clear(piVar10,uVar5 | 4);\nLAB_00013c01:\n  std::locale::~locale(local_3c);\n  if (local_38 != local_30) {\n    operator_delete(local_38);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00014700();\n  }\n  return param_1;\n}\n\n" (ERROR "istream * operator>>(istream *param_1,__mpf_struct *param_2)" (binary_expression "istream * operator>>(istream *param_1,__mpf_struct *param_2)" (binary_expression "istream * operator" identifier * identifier) >> (parenthesized_expression "(istream *param_1,__mpf_struct *param_2)" ( (comma_expression "istream *param_1,__mpf_struct *param_2" (binary_expression "istream *param_1" identifier * identifier) , (binary_expression "__mpf_struct *param_2" identifier * identifier)) )))) (compound_statement "{\n  char *pcVar1;\n  byte bVar2;\n  lconv *plVar3;\n  numpunct *pnVar4;\n  uint uVar5;\n  ctype *pcVar6;\n  int *piVar7;\n  size_t sVar8;\n  char *pcVar9;\n  istream *piVar10;\n  undefined4 extraout_EDX;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  char *pcVar11;\n  byte *pbVar12;\n  byte local_3e;\n  bool local_3d;\n  locale local_3c [4];\n  char **local_38;\n  char *local_34;\n  char *local_30 [4];\n  int local_20;\n  \n  FUN_00013e0a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_3e = 0;\n  local_34 = (char *)0x0;\n  local_30[0] = (char *)((uint)local_30[0] & 0xffffff00);\n  local_3d = false;\n  local_38 = local_30;\n  plVar3 = localeconv();\n  pcVar11 = plVar3->decimal_point;\n  std::locale::locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));\n                    \n  pnVar4 = std::use_facet<std::numpunct<char>>(local_3c);\n  bVar2 = (**(code **)(*(int *)pnVar4 + 8))(pnVar4);\n  std::istream::get((char *)param_1);\n  if (((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0) {\n    pcVar6 = std::use_facet<std::ctype<char>>(local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);\n  }\n  if (local_3e == 0x2d) {\n    std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)param_1);\n  }\n  else if (local_3e == 0x2b) goto LAB_00013c67;\n  __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  if (local_3e == bVar2) {\n    pbVar12 = &local_3e;\n    std::istream::get((char *)param_1);\n    sVar8 = strlen(pcVar11);\n    if (0x7fffffffU - (int)local_34 < sVar8) {\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    \n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }\n    std::string::_M_append((char *)&local_38,(uint)pcVar11);\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }\n  pcVar11 = local_34;\n  bVar2 = local_3e;\n  if ((local_3d != false) && ((local_3e & 0xdf) == 0x45)) {\n    pcVar1 = local_34 + 1;\n    pcVar9 = (char *)0xf;\n    if (local_38 != local_30) {\n      pcVar9 = local_30[0];\n    }\n    if (pcVar9 < pcVar1) {\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }\n    *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n    pcVar11[(int)local_38 + 1] = '\0';\n    local_34 = pcVar1;\n    std::istream::get((char *)param_1);\n    pcVar11 = local_34;\n    bVar2 = local_3e;\n    local_3d = false;\n    if ((local_3e - 0x2b & 0xfd) == 0) {\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }\n  piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n  uVar5 = *(uint *)(piVar10 + 0x14);\n  if (uVar5 == 0) {\n    std::istream::putback((char)param_1);\nLAB_00013be7:\n    if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }\n    piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n    uVar5 = *(uint *)(piVar10 + 0x14);\n  }\n  else {\n    if ((uVar5 & 2) == 0) goto LAB_00013be7;\n    if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }\n  }\n  std::ios::clear(piVar10,uVar5 | 4);\nLAB_00013c01:\n  std::locale::~locale(local_3c);\n  if (local_38 != local_30) {\n    operator_delete(local_38);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00014700();\n  }\n  return param_1;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "lconv *plVar3;" type_identifier (pointer_declarator "*plVar3" * identifier) ;) (declaration "numpunct *pnVar4;" type_identifier (pointer_declarator "*pnVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "ctype *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "istream *piVar10;" type_identifier (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "byte local_3e;" type_identifier identifier ;) (declaration "bool local_3d;" primitive_type identifier ;) (declaration "locale local_3c [4];" type_identifier (array_declarator "local_3c [4]" identifier [ number_literal ]) ;) (declaration "char **local_38;" primitive_type (pointer_declarator "**local_38" * (pointer_declarator "*local_38" * identifier)) ;) (declaration "char *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "char *local_30 [4];" primitive_type (pointer_declarator "*local_30 [4]" * (array_declarator "local_30 [4]" identifier [ number_literal ])) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "FUN_00013e0a();" (call_expression "FUN_00013e0a()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_3e = 0;" (assignment_expression "local_3e = 0" identifier = number_literal) ;) (expression_statement "local_34 = (char *)0x0;" (assignment_expression "local_34 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_30[0] = (char *)((uint)local_30[0] & 0xffffff00);" (assignment_expression "local_30[0] = (char *)((uint)local_30[0] & 0xffffff00)" (subscript_expression "local_30[0]" identifier [ number_literal ]) = (cast_expression "(char *)((uint)local_30[0] & 0xffffff00)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_30[0] & 0xffffff00)" ( (binary_expression "(uint)local_30[0] & 0xffffff00" (cast_expression "(uint)local_30[0]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_30[0]" identifier [ number_literal ])) & number_literal) )))) ;) (expression_statement "local_3d = false;" (assignment_expression "local_3d = false" identifier = false) ;) (expression_statement "local_38 = local_30;" (assignment_expression "local_38 = local_30" identifier = identifier) ;) (expression_statement "plVar3 = localeconv();" (assignment_expression "plVar3 = localeconv()" identifier = (call_expression "localeconv()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar11 = plVar3->decimal_point;" (assignment_expression "pcVar11 = plVar3->decimal_point" identifier = (field_expression "plVar3->decimal_point" identifier -> field_identifier)) ;) (labeled_statement "std::locale::locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));" statement_identifier : (ERROR ":" :) (labeled_statement "locale::locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));" statement_identifier : (ERROR ":" :) (expression_statement "locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));" (call_expression "locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c))" identifier (argument_list "(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c))" ( identifier , (cast_expression "(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c)" ( (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c" (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" * (cast_expression "(int *)(*(int *)param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)param_1 + -0xc)" ( (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) + number_literal) ))) ))) ;))) (expression_statement "pnVar4 = std::use_facet<std::numpunct<char>>(local_3c);" (binary_expression "pnVar4 = std::use_facet<std::numpunct<char>>(local_3c)" (binary_expression "pnVar4 = std::use_facet<std" (assignment_expression "pnVar4 = std" identifier = identifier) (ERROR "::use_facet" : : identifier) < identifier) (ERROR "::numpunct" : : identifier) < (binary_expression "char>>(local_3c)" identifier >> (parenthesized_expression "(local_3c)" ( identifier )))) ;) (expression_statement "bVar2 = (**(code **)(*(int *)pnVar4 + 8))(pnVar4);" (assignment_expression "bVar2 = (**(code **)(*(int *)pnVar4 + 8))(pnVar4)" identifier = (call_expression "(**(code **)(*(int *)pnVar4 + 8))(pnVar4)" (parenthesized_expression "(**(code **)(*(int *)pnVar4 + 8))" ( (pointer_expression "**(code **)(*(int *)pnVar4 + 8)" * (pointer_expression "*(code **)(*(int *)pnVar4 + 8)" * (cast_expression "(code **)(*(int *)pnVar4 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pnVar4 + 8)" ( (binary_expression "*(int *)pnVar4 + 8" (pointer_expression "*(int *)pnVar4" * (cast_expression "(int *)pnVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pnVar4)" ( identifier )))) ;) (labeled_statement "std::istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (if_statement "if (((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0) {\n    pcVar6 = std::use_facet<std::ctype<char>>(local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);\n  }" if (parenthesized_expression "(((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0)" ( (binary_expression "((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0" (parenthesized_expression "((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10)" ( (binary_expression "(byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10" (cast_expression "(byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd]" identifier [ (binary_expression "*(int *)(*(int *)param_1 + -0xc) + 0xd" (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" * (cast_expression "(int *)(*(int *)param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)param_1 + -0xc)" ( (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) ])) & number_literal) )) != number_literal) )) (compound_statement "{\n    pcVar6 = std::use_facet<std::ctype<char>>(local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);\n  }" { (expression_statement "pcVar6 = std::use_facet<std::ctype<char>>(local_3c);" (binary_expression "pcVar6 = std::use_facet<std::ctype<char>>(local_3c)" (binary_expression "pcVar6 = std::use_facet<std" (assignment_expression "pcVar6 = std" identifier = identifier) (ERROR "::use_facet" : : identifier) < identifier) (ERROR "::ctype" : : identifier) < (binary_expression "char>>(local_3c)" identifier >> (parenthesized_expression "(local_3c)" ( identifier )))) ;) (do_statement "do {\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);" do (compound_statement "{\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    }" { (if_statement "if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;" if (parenthesized_expression "((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0)" ( (binary_expression "(*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20)" ( (binary_expression "*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20" (pointer_expression "*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2)" * (cast_expression "(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2)" ( (binary_expression "*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2" (binary_expression "*(int *)(pcVar6 + 0x18) + 1" (pointer_expression "*(int *)(pcVar6 + 0x18)" * (cast_expression "(int *)(pcVar6 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + 0x18)" ( (binary_expression "pcVar6 + 0x18" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)local_3e * 2" (cast_expression "(uint)local_3e" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (ERROR "piVar7 = (int *)std::" (assignment_expression "piVar7 = (int *)std" identifier = (cast_expression "(int *)std" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) : :) (labeled_statement "istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) }) while (parenthesized_expression "((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0)" ( (binary_expression "(*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0" (parenthesized_expression "(*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5)" ( (binary_expression "*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5" (pointer_expression "*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14)" * (cast_expression "(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14)" ( (binary_expression "(int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14" (binary_expression "(int)piVar7 + *(int *)(*piVar7 + -0xc)" (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*piVar7 + -0xc)" * (cast_expression "(int *)(*piVar7 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar7 + -0xc)" ( (binary_expression "*piVar7 + -0xc" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) + number_literal) )))) & number_literal) )) == number_literal) )) ;) })) (if_statement "if (local_3e == 0x2d) {\n    std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)param_1);\n  }\n  else if (local_3e == 0x2b) goto LAB_00013c67;" if (parenthesized_expression "(local_3e == 0x2d)" ( (binary_expression "local_3e == 0x2d" identifier == number_literal) )) (compound_statement "{\n    std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)param_1);\n  }" { (labeled_statement "std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);" (call_expression "_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7)" identifier (argument_list "((uint)&local_38,0,local_34,unaff_EDI + 0x15d7)" ( (binary_expression "(uint)&local_38" (parenthesized_expression "(uint)" ( identifier )) & identifier) , number_literal , identifier , (binary_expression "unaff_EDI + 0x15d7" identifier + number_literal) ))) ;))) (labeled_statement "LAB_00013c67:\n    std::istream::get((char *)param_1);" statement_identifier : (labeled_statement "std::istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)))) }) (else_clause "else if (local_3e == 0x2b) goto LAB_00013c67;" else (if_statement "if (local_3e == 0x2b) goto LAB_00013c67;" if (parenthesized_expression "(local_3e == 0x2b)" ( (binary_expression "local_3e == 0x2b" identifier == number_literal) )) (goto_statement "goto LAB_00013c67;" goto statement_identifier ;)))) (expression_statement "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);" (call_expression "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" identifier (argument_list "((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" ( (cast_expression "(string *)&local_38" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_38" & identifier)) , identifier , (cast_expression "(char *)&local_3e" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_3e" & identifier)) , (pointer_expression "&local_3d" & identifier) , number_literal ))) ;) (if_statement "if (local_3e == bVar2) {\n    pbVar12 = &local_3e;\n    std::istream::get((char *)param_1);\n    sVar8 = strlen(pcVar11);\n    if (0x7fffffffU - (int)local_34 < sVar8) {\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    \n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }\n    std::string::_M_append((char *)&local_38,(uint)pcVar11);\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }" if (parenthesized_expression "(local_3e == bVar2)" ( (binary_expression "local_3e == bVar2" identifier == identifier) )) (compound_statement "{\n    pbVar12 = &local_3e;\n    std::istream::get((char *)param_1);\n    sVar8 = strlen(pcVar11);\n    if (0x7fffffffU - (int)local_34 < sVar8) {\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    \n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }\n    std::string::_M_append((char *)&local_38,(uint)pcVar11);\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }" { (expression_statement "pbVar12 = &local_3e;" (assignment_expression "pbVar12 = &local_3e" identifier = (pointer_expression "&local_3e" & identifier)) ;) (labeled_statement "std::istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (expression_statement "sVar8 = strlen(pcVar11);" (assignment_expression "sVar8 = strlen(pcVar11)" identifier = (call_expression "strlen(pcVar11)" identifier (argument_list "(pcVar11)" ( identifier )))) ;) (if_statement "if (0x7fffffffU - (int)local_34 < sVar8) {\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    \n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }" if (parenthesized_expression "(0x7fffffffU - (int)local_34 < sVar8)" ( (binary_expression "0x7fffffffU - (int)local_34 < sVar8" (binary_expression "0x7fffffffU - (int)local_34" number_literal - (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    \n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }" { (expression_statement "pcVar11 = (char *)(unaff_EDI + 0x15d9);" (assignment_expression "pcVar11 = (char *)(unaff_EDI + 0x15d9)" identifier = (cast_expression "(char *)(unaff_EDI + 0x15d9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x15d9)" ( (binary_expression "unaff_EDI + 0x15d9" identifier + number_literal) )))) ;) (labeled_statement "std::__throw_length_error(pcVar11);" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error(pcVar11);" (call_expression "__throw_length_error(pcVar11)" identifier (argument_list "(pcVar11)" ( identifier ))) ;)) (expression_statement "piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);" (assignment_expression "piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12)" identifier = (cast_expression "(istream *)entry(extraout_EDX,pcVar11,pbVar12)" ( (type_descriptor "istream *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "entry(extraout_EDX,pcVar11,pbVar12)" identifier (argument_list "(extraout_EDX,pcVar11,pbVar12)" ( identifier , identifier , identifier ))))) ;) (return_statement "return piVar10;" return identifier ;) })) (labeled_statement "std::string::_M_append((char *)&local_38,(uint)pcVar11);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((char *)&local_38,(uint)pcVar11);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((char *)&local_38,(uint)pcVar11);" (call_expression "_M_append((char *)&local_38,(uint)pcVar11)" identifier (argument_list "((char *)&local_38,(uint)pcVar11)" ( (cast_expression "(char *)&local_38" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_38" & identifier)) , (cast_expression "(uint)pcVar11" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;))) (expression_statement "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);" (call_expression "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" identifier (argument_list "((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" ( (cast_expression "(string *)&local_38" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_38" & identifier)) , identifier , (cast_expression "(char *)&local_3e" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_3e" & identifier)) , (pointer_expression "&local_3d" & identifier) , number_literal ))) ;) })) (expression_statement "pcVar11 = local_34;" (assignment_expression "pcVar11 = local_34" identifier = identifier) ;) (expression_statement "bVar2 = local_3e;" (assignment_expression "bVar2 = local_3e" identifier = identifier) ;) (if_statement "if ((local_3d != false) && ((local_3e & 0xdf) == 0x45)) {\n    pcVar1 = local_34 + 1;\n    pcVar9 = (char *)0xf;\n    if (local_38 != local_30) {\n      pcVar9 = local_30[0];\n    }\n    if (pcVar9 < pcVar1) {\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }\n    *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n    pcVar11[(int)local_38 + 1] = '\0';\n    local_34 = pcVar1;\n    std::istream::get((char *)param_1);\n    pcVar11 = local_34;\n    bVar2 = local_3e;\n    local_3d = false;\n    if ((local_3e - 0x2b & 0xfd) == 0) {\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }" if (parenthesized_expression "((local_3d != false) && ((local_3e & 0xdf) == 0x45))" ( (binary_expression "(local_3d != false) && ((local_3e & 0xdf) == 0x45)" (parenthesized_expression "(local_3d != false)" ( (binary_expression "local_3d != false" identifier != false) )) && (parenthesized_expression "((local_3e & 0xdf) == 0x45)" ( (binary_expression "(local_3e & 0xdf) == 0x45" (parenthesized_expression "(local_3e & 0xdf)" ( (binary_expression "local_3e & 0xdf" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    pcVar1 = local_34 + 1;\n    pcVar9 = (char *)0xf;\n    if (local_38 != local_30) {\n      pcVar9 = local_30[0];\n    }\n    if (pcVar9 < pcVar1) {\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }\n    *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n    pcVar11[(int)local_38 + 1] = '\0';\n    local_34 = pcVar1;\n    std::istream::get((char *)param_1);\n    pcVar11 = local_34;\n    bVar2 = local_3e;\n    local_3d = false;\n    if ((local_3e - 0x2b & 0xfd) == 0) {\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }" { (expression_statement "pcVar1 = local_34 + 1;" (assignment_expression "pcVar1 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;) (expression_statement "pcVar9 = (char *)0xf;" (assignment_expression "pcVar9 = (char *)0xf" identifier = (cast_expression "(char *)0xf" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_38 != local_30) {\n      pcVar9 = local_30[0];\n    }" if (parenthesized_expression "(local_38 != local_30)" ( (binary_expression "local_38 != local_30" identifier != identifier) )) (compound_statement "{\n      pcVar9 = local_30[0];\n    }" { (expression_statement "pcVar9 = local_30[0];" (assignment_expression "pcVar9 = local_30[0]" identifier = (subscript_expression "local_30[0]" identifier [ number_literal ])) ;) })) (if_statement "if (pcVar9 < pcVar1) {\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }" if (parenthesized_expression "(pcVar9 < pcVar1)" ( (binary_expression "pcVar9 < pcVar1" identifier < identifier) )) (compound_statement "{\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }" { (labeled_statement "std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" (call_expression "_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0)" identifier (argument_list "((uint)&local_38,(uint)local_34,(char *)0x0,0)" ( (binary_expression "(uint)&local_38" (parenthesized_expression "(uint)" ( identifier )) & identifier) , (cast_expression "(uint)local_34" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "*(byte *)((int)local_38 + (int)pcVar11) = bVar2;" (assignment_expression "*(byte *)((int)local_38 + (int)pcVar11) = bVar2" (pointer_expression "*(byte *)((int)local_38 + (int)pcVar11)" * (cast_expression "(byte *)((int)local_38 + (int)pcVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_38 + (int)pcVar11)" ( (binary_expression "(int)local_38 + (int)pcVar11" (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)pcVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) (expression_statement "pcVar11[(int)local_38 + 1] = '\0';" (assignment_expression "pcVar11[(int)local_38 + 1] = '\0'" (subscript_expression "pcVar11[(int)local_38 + 1]" identifier [ (binary_expression "(int)local_38 + 1" (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_34 = pcVar1;" (assignment_expression "local_34 = pcVar1" identifier = identifier) ;) (labeled_statement "std::istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (expression_statement "pcVar11 = local_34;" (assignment_expression "pcVar11 = local_34" identifier = identifier) ;) (expression_statement "bVar2 = local_3e;" (assignment_expression "bVar2 = local_3e" identifier = identifier) ;) (expression_statement "local_3d = false;" (assignment_expression "local_3d = false" identifier = false) ;) (if_statement "if ((local_3e - 0x2b & 0xfd) == 0) {\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }" if (parenthesized_expression "((local_3e - 0x2b & 0xfd) == 0)" ( (binary_expression "(local_3e - 0x2b & 0xfd) == 0" (parenthesized_expression "(local_3e - 0x2b & 0xfd)" ( (binary_expression "local_3e - 0x2b & 0xfd" (binary_expression "local_3e - 0x2b" identifier - number_literal) & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }" { (expression_statement "pcVar1 = local_34 + 1;" (assignment_expression "pcVar1 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;) (expression_statement "pcVar9 = (char *)0xf;" (assignment_expression "pcVar9 = (char *)0xf" identifier = (cast_expression "(char *)0xf" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }" if (parenthesized_expression "(local_38 != local_30)" ( (binary_expression "local_38 != local_30" identifier != identifier) )) (compound_statement "{\n        pcVar9 = local_30[0];\n      }" { (expression_statement "pcVar9 = local_30[0];" (assignment_expression "pcVar9 = local_30[0]" identifier = (subscript_expression "local_30[0]" identifier [ number_literal ])) ;) })) (if_statement "if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }" if (parenthesized_expression "(pcVar9 < pcVar1)" ( (binary_expression "pcVar9 < pcVar1" identifier < identifier) )) (compound_statement "{\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }" { (labeled_statement "std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" (call_expression "_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0)" identifier (argument_list "((uint)&local_38,(uint)local_34,(char *)0x0,0)" ( (binary_expression "(uint)&local_38" (parenthesized_expression "(uint)" ( identifier )) & identifier) , (cast_expression "(uint)local_34" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "*(byte *)((int)local_38 + (int)pcVar11) = bVar2;" (assignment_expression "*(byte *)((int)local_38 + (int)pcVar11) = bVar2" (pointer_expression "*(byte *)((int)local_38 + (int)pcVar11)" * (cast_expression "(byte *)((int)local_38 + (int)pcVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_38 + (int)pcVar11)" ( (binary_expression "(int)local_38 + (int)pcVar11" (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)pcVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) (expression_statement "pcVar11[(int)local_38 + 1] = '\0';" (assignment_expression "pcVar11[(int)local_38 + 1] = '\0'" (subscript_expression "pcVar11[(int)local_38 + 1]" identifier [ (binary_expression "(int)local_38 + 1" (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_34 = pcVar1;" (assignment_expression "local_34 = pcVar1" identifier = identifier) ;) (labeled_statement "std::istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::get((char *)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) })) (expression_statement "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);" (call_expression "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" identifier (argument_list "((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" ( (cast_expression "(string *)&local_38" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_38" & identifier)) , identifier , (cast_expression "(char *)&local_3e" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_3e" & identifier)) , (pointer_expression "&local_3d" & identifier) , number_literal ))) ;) })) (expression_statement "piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);" (assignment_expression "piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc)" identifier = (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" * (cast_expression "(int *)(*(int *)param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)param_1 + -0xc)" ( (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))))) ;) (expression_statement "uVar5 = *(uint *)(piVar10 + 0x14);" (assignment_expression "uVar5 = *(uint *)(piVar10 + 0x14)" identifier = (pointer_expression "*(uint *)(piVar10 + 0x14)" * (cast_expression "(uint *)(piVar10 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 0x14)" ( (binary_expression "piVar10 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (uVar5 == 0) {\n    std::istream::putback((char)param_1);\nLAB_00013be7:\n    if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }\n    piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n    uVar5 = *(uint *)(piVar10 + 0x14);\n  }\n  else {\n    if ((uVar5 & 2) == 0) goto LAB_00013be7;\n    if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }\n  }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    std::istream::putback((char)param_1);\nLAB_00013be7:\n    if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }\n    piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n    uVar5 = *(uint *)(piVar10 + 0x14);\n  }" { (labeled_statement "std::istream::putback((char)param_1);" statement_identifier : (ERROR ":" :) (labeled_statement "istream::putback((char)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "putback((char)param_1);" (call_expression "putback((char)param_1)" identifier (argument_list "((char)param_1)" ( (cast_expression "(char)param_1" ( (type_descriptor "char" primitive_type) ) identifier) ))) ;))) (labeled_statement "LAB_00013be7:\n    if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }" statement_identifier : (if_statement "if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }" if (parenthesized_expression "(local_3d != false)" ( (binary_expression "local_3d != false" identifier != false) )) (compound_statement "{\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }" { (expression_statement "__gmpf_set_str(param_2,local_38,10);" (call_expression "__gmpf_set_str(param_2,local_38,10)" identifier (argument_list "(param_2,local_38,10)" ( identifier , identifier , number_literal ))) ;) (goto_statement "goto LAB_00013c01;" goto statement_identifier ;) }))) (expression_statement "piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);" (assignment_expression "piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc)" identifier = (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" * (cast_expression "(int *)(*(int *)param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)param_1 + -0xc)" ( (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))))) ;) (expression_statement "uVar5 = *(uint *)(piVar10 + 0x14);" (assignment_expression "uVar5 = *(uint *)(piVar10 + 0x14)" identifier = (pointer_expression "*(uint *)(piVar10 + 0x14)" * (cast_expression "(uint *)(piVar10 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 0x14)" ( (binary_expression "piVar10 + 0x14" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    if ((uVar5 & 2) == 0) goto LAB_00013be7;\n    if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }\n  }" else (compound_statement "{\n    if ((uVar5 & 2) == 0) goto LAB_00013be7;\n    if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }\n  }" { (if_statement "if ((uVar5 & 2) == 0) goto LAB_00013be7;" if (parenthesized_expression "((uVar5 & 2) == 0)" ( (binary_expression "(uVar5 & 2) == 0" (parenthesized_expression "(uVar5 & 2)" ( (binary_expression "uVar5 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00013be7;" goto statement_identifier ;)) (if_statement "if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }" if (parenthesized_expression "(local_3d != false)" ( (binary_expression "local_3d != false" identifier != false) )) (compound_statement "{\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }" { (labeled_statement "std::ios::clear(piVar10,2);" statement_identifier : (ERROR ":" :) (labeled_statement "ios::clear(piVar10,2);" statement_identifier : (ERROR ":" :) (expression_statement "clear(piVar10,2);" (call_expression "clear(piVar10,2)" identifier (argument_list "(piVar10,2)" ( identifier , number_literal ))) ;))) (goto_statement "goto LAB_00013be7;" goto statement_identifier ;) })) }))) (labeled_statement "std::ios::clear(piVar10,uVar5 | 4);" statement_identifier : (ERROR ":" :) (labeled_statement "ios::clear(piVar10,uVar5 | 4);" statement_identifier : (ERROR ":" :) (expression_statement "clear(piVar10,uVar5 | 4);" (call_expression "clear(piVar10,uVar5 | 4)" identifier (argument_list "(piVar10,uVar5 | 4)" ( identifier , (binary_expression "uVar5 | 4" identifier | number_literal) ))) ;))) (labeled_statement "LAB_00013c01:\n  std::locale::~locale(local_3c);" statement_identifier : (labeled_statement "std::locale::~locale(local_3c);" statement_identifier : (ERROR ":" :) (labeled_statement "locale::~locale(local_3c);" statement_identifier : (ERROR ":" :) (expression_statement "~locale(local_3c);" (unary_expression "~locale(local_3c)" ~ (call_expression "locale(local_3c)" identifier (argument_list "(local_3c)" ( identifier )))) ;)))) (if_statement "if (local_38 != local_30) {\n    operator_delete(local_38);\n  }" if (parenthesized_expression "(local_38 != local_30)" ( (binary_expression "local_38 != local_30" identifier != identifier) )) (compound_statement "{\n    operator_delete(local_38);\n  }" { (expression_statement "operator_delete(local_38);" (call_expression "operator_delete(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) })) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00014700();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_00014700();\n  }" { (expression_statement "FUN_00014700();" (call_expression "FUN_00014700()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return param_1;" return identifier ;) }))
(translation_unit (ERROR (binary_expression (binary_expression IDENT * IDENT) >> (parenthesized_expression ( (comma_expression (binary_expression IDENT * IDENT) , (binary_expression IDENT * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (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 (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT -> field_identifier)) ;) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) + LIT) ))) ))) ;))) (expression_statement (binary_expression (binary_expression (assignment_expression IDENT = IDENT) (ERROR : : IDENT) < IDENT) (ERROR : : IDENT) < (binary_expression IDENT >> (parenthesized_expression ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) ))) ;))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) + LIT) ])) & LIT) )) != LIT) )) (compound_statement { (expression_statement (binary_expression (binary_expression (assignment_expression IDENT = IDENT) (ERROR : : IDENT) < IDENT) (ERROR : : IDENT) < (binary_expression IDENT >> (parenthesized_expression ( IDENT )))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) & LIT) )) == LIT) )) (break_statement break ;)) (ERROR (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) : :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) ))) ;)) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) + LIT) )))) & LIT) )) == LIT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( IDENT )) & IDENT) , LIT , IDENT , (binary_expression IDENT + LIT) ))) ;))) (labeled_statement statement_identifier : (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) ))) ;)))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)))) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , (pointer_expression & IDENT) , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) ))) ;))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))))) ;) (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;))) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , (pointer_expression & IDENT) , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != BOOL) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( IDENT )) & IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , LIT ))) ;))) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) ))) ;))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( IDENT )) & IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , LIT ))) ;))) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) ))) ;))) })) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , (pointer_expression & IDENT) , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != BOOL) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != BOOL) )) (compound_statement { (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;))) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT | LIT) ))) ;))) (labeled_statement statement_identifier : (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (unary_expression ~ (call_expression IDENT (argument_list ( IDENT )))) ;)))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return IDENT ;) }))
(ERROR "istream * operator>>(istream *param_1,__mpf_struct *param_2)" (binary_expression "istream * operator>>(istream *param_1,__mpf_struct *param_2)" (binary_expression "istream * operator" (identifier "istream") (* "*") (identifier "operator")) (>> ">>") (parenthesized_expression "(istream *param_1,__mpf_struct *param_2)" (( "(") (comma_expression "istream *param_1,__mpf_struct *param_2" (binary_expression "istream *param_1" (identifier "istream") (* "*") (identifier "param_1")) (, ",") (binary_expression "__mpf_struct *param_2" (identifier "__mpf_struct") (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  char *pcVar1;\n  byte bVar2;\n  lconv *plVar3;\n  numpunct *pnVar4;\n  uint uVar5;\n  ctype *pcVar6;\n  int *piVar7;\n  size_t sVar8;\n  char *pcVar9;\n  istream *piVar10;\n  undefined4 extraout_EDX;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  char *pcVar11;\n  byte *pbVar12;\n  byte local_3e;\n  bool local_3d;\n  locale local_3c [4];\n  char **local_38;\n  char *local_34;\n  char *local_30 [4];\n  int local_20;\n  \n  FUN_00013e0a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_3e = 0;\n  local_34 = (char *)0x0;\n  local_30[0] = (char *)((uint)local_30[0] & 0xffffff00);\n  local_3d = false;\n  local_38 = local_30;\n  plVar3 = localeconv();\n  pcVar11 = plVar3->decimal_point;\n  std::locale::locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));\n                    \n  pnVar4 = std::use_facet<std::numpunct<char>>(local_3c);\n  bVar2 = (**(code **)(*(int *)pnVar4 + 8))(pnVar4);\n  std::istream::get((char *)param_1);\n  if (((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0) {\n    pcVar6 = std::use_facet<std::ctype<char>>(local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);\n  }\n  if (local_3e == 0x2d) {\n    std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)param_1);\n  }\n  else if (local_3e == 0x2b) goto LAB_00013c67;\n  __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  if (local_3e == bVar2) {\n    pbVar12 = &local_3e;\n    std::istream::get((char *)param_1);\n    sVar8 = strlen(pcVar11);\n    if (0x7fffffffU - (int)local_34 < sVar8) {\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    \n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }\n    std::string::_M_append((char *)&local_38,(uint)pcVar11);\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }\n  pcVar11 = local_34;\n  bVar2 = local_3e;\n  if ((local_3d != false) && ((local_3e & 0xdf) == 0x45)) {\n    pcVar1 = local_34 + 1;\n    pcVar9 = (char *)0xf;\n    if (local_38 != local_30) {\n      pcVar9 = local_30[0];\n    }\n    if (pcVar9 < pcVar1) {\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }\n    *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n    pcVar11[(int)local_38 + 1] = '\0';\n    local_34 = pcVar1;\n    std::istream::get((char *)param_1);\n    pcVar11 = local_34;\n    bVar2 = local_3e;\n    local_3d = false;\n    if ((local_3e - 0x2b & 0xfd) == 0) {\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }\n  piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n  uVar5 = *(uint *)(piVar10 + 0x14);\n  if (uVar5 == 0) {\n    std::istream::putback((char)param_1);\nLAB_00013be7:\n    if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }\n    piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n    uVar5 = *(uint *)(piVar10 + 0x14);\n  }\n  else {\n    if ((uVar5 & 2) == 0) goto LAB_00013be7;\n    if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }\n  }\n  std::ios::clear(piVar10,uVar5 | 4);\nLAB_00013c01:\n  std::locale::~locale(local_3c);\n  if (local_38 != local_30) {\n    operator_delete(local_38);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00014700();\n  }\n  return param_1;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "lconv *plVar3;" (type_identifier "lconv") (pointer_declarator "*plVar3" (* "*") (identifier "plVar3")) (; ";")) (declaration "numpunct *pnVar4;" (type_identifier "numpunct") (pointer_declarator "*pnVar4" (* "*") (identifier "pnVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "ctype *pcVar6;" (type_identifier "ctype") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "size_t sVar8;" (primitive_type "size_t") (identifier "sVar8") (; ";")) (declaration "char *pcVar9;" (primitive_type "char") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (declaration "istream *piVar10;" (type_identifier "istream") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "undefined4 extraout_EDX;" (type_identifier "undefined4") (identifier "extraout_EDX") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "char *pcVar11;" (primitive_type "char") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "byte local_3e;" (type_identifier "byte") (identifier "local_3e") (; ";")) (declaration "bool local_3d;" (primitive_type "bool") (identifier "local_3d") (; ";")) (declaration "locale local_3c [4];" (type_identifier "locale") (array_declarator "local_3c [4]" (identifier "local_3c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "char **local_38;" (primitive_type "char") (pointer_declarator "**local_38" (* "*") (pointer_declarator "*local_38" (* "*") (identifier "local_38"))) (; ";")) (declaration "char *local_34;" (primitive_type "char") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "char *local_30 [4];" (primitive_type "char") (pointer_declarator "*local_30 [4]" (* "*") (array_declarator "local_30 [4]" (identifier "local_30") ([ "[") (number_literal "4") (] "]"))) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "FUN_00013e0a();" (call_expression "FUN_00013e0a()" (identifier "FUN_00013e0a") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_3e = 0;" (assignment_expression "local_3e = 0" (identifier "local_3e") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34 = (char *)0x0;" (assignment_expression "local_34 = (char *)0x0" (identifier "local_34") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_30[0] = (char *)((uint)local_30[0] & 0xffffff00);" (assignment_expression "local_30[0] = (char *)((uint)local_30[0] & 0xffffff00)" (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(char *)((uint)local_30[0] & 0xffffff00)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)local_30[0] & 0xffffff00)" (( "(") (binary_expression "(uint)local_30[0] & 0xffffff00" (cast_expression "(uint)local_30[0]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]"))) (& "&") (number_literal "0xffffff00")) () ")")))) (; ";")) (expression_statement "local_3d = false;" (assignment_expression "local_3d = false" (identifier "local_3d") (= "=") (false "false")) (; ";")) (expression_statement "local_38 = local_30;" (assignment_expression "local_38 = local_30" (identifier "local_38") (= "=") (identifier "local_30")) (; ";")) (expression_statement "plVar3 = localeconv();" (assignment_expression "plVar3 = localeconv()" (identifier "plVar3") (= "=") (call_expression "localeconv()" (identifier "localeconv") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar11 = plVar3->decimal_point;" (assignment_expression "pcVar11 = plVar3->decimal_point" (identifier "pcVar11") (= "=") (field_expression "plVar3->decimal_point" (identifier "plVar3") (-> "->") (field_identifier "decimal_point"))) (; ";")) (labeled_statement "std::locale::locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "locale::locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));" (statement_identifier "locale") (: ":") (ERROR ":" (: ":")) (expression_statement "locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));" (call_expression "locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c))" (identifier "locale") (argument_list "(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c))" (( "(") (identifier "local_3c") (, ",") (cast_expression "(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c)" (( "(") (type_descriptor "locale *" (type_identifier "locale") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c)" (( "(") (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c" (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc)" (identifier "param_1") (+ "+") (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" (* "*") (cast_expression "(int *)(*(int *)param_1 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)param_1 + -0xc)" (( "(") (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (+ "+") (number_literal "-0xc")) () ")"))))) (+ "+") (number_literal "0x6c")) () ")"))) () ")"))) (; ";")))) (expression_statement "pnVar4 = std::use_facet<std::numpunct<char>>(local_3c);" (binary_expression "pnVar4 = std::use_facet<std::numpunct<char>>(local_3c)" (binary_expression "pnVar4 = std::use_facet<std" (assignment_expression "pnVar4 = std" (identifier "pnVar4") (= "=") (identifier "std")) (ERROR "::use_facet" (: ":") (: ":") (identifier "use_facet")) (< "<") (identifier "std")) (ERROR "::numpunct" (: ":") (: ":") (identifier "numpunct")) (< "<") (binary_expression "char>>(local_3c)" (identifier "char") (>> ">>") (parenthesized_expression "(local_3c)" (( "(") (identifier "local_3c") () ")")))) (; ";")) (expression_statement "bVar2 = (**(code **)(*(int *)pnVar4 + 8))(pnVar4);" (assignment_expression "bVar2 = (**(code **)(*(int *)pnVar4 + 8))(pnVar4)" (identifier "bVar2") (= "=") (call_expression "(**(code **)(*(int *)pnVar4 + 8))(pnVar4)" (parenthesized_expression "(**(code **)(*(int *)pnVar4 + 8))" (( "(") (pointer_expression "**(code **)(*(int *)pnVar4 + 8)" (* "*") (pointer_expression "*(code **)(*(int *)pnVar4 + 8)" (* "*") (cast_expression "(code **)(*(int *)pnVar4 + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)pnVar4 + 8)" (( "(") (binary_expression "*(int *)pnVar4 + 8" (pointer_expression "*(int *)pnVar4" (* "*") (cast_expression "(int *)pnVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pnVar4"))) (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(pnVar4)" (( "(") (identifier "pnVar4") () ")")))) (; ";")) (labeled_statement "std::istream::get((char *)param_1);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "istream::get((char *)param_1);" (statement_identifier "istream") (: ":") (ERROR ":" (: ":")) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" (identifier "get") (argument_list "((char *)param_1)" (( "(") (cast_expression "(char *)param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")) () ")"))) (; ";")))) (if_statement "if (((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0) {\n    pcVar6 = std::use_facet<std::ctype<char>>(local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);\n  }" (if "if") (parenthesized_expression "(((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0)" (( "(") (binary_expression "((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0" (parenthesized_expression "((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10)" (( "(") (binary_expression "(byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10" (cast_expression "(byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd]" (identifier "param_1") ([ "[") (binary_expression "*(int *)(*(int *)param_1 + -0xc) + 0xd" (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" (* "*") (cast_expression "(int *)(*(int *)param_1 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)param_1 + -0xc)" (( "(") (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (+ "+") (number_literal "-0xc")) () ")")))) (+ "+") (number_literal "0xd")) (] "]"))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    pcVar6 = std::use_facet<std::ctype<char>>(local_3c);\n    do {\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);\n  }" ({ "{") (expression_statement "pcVar6 = std::use_facet<std::ctype<char>>(local_3c);" (binary_expression "pcVar6 = std::use_facet<std::ctype<char>>(local_3c)" (binary_expression "pcVar6 = std::use_facet<std" (assignment_expression "pcVar6 = std" (identifier "pcVar6") (= "=") (identifier "std")) (ERROR "::use_facet" (: ":") (: ":") (identifier "use_facet")) (< "<") (identifier "std")) (ERROR "::ctype" (: ":") (: ":") (identifier "ctype")) (< "<") (binary_expression "char>>(local_3c)" (identifier "char") (>> ">>") (parenthesized_expression "(local_3c)" (( "(") (identifier "local_3c") () ")")))) (; ";")) (do_statement "do {\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);" (do "do") (compound_statement "{\n      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;\n      piVar7 = (int *)std::istream::get((char *)param_1);\n    }" ({ "{") (if_statement "if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;" (if "if") (parenthesized_expression "((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20)" (( "(") (binary_expression "*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20" (pointer_expression "*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2)" (* "*") (cast_expression "(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2)" (( "(") (binary_expression "*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2" (binary_expression "*(int *)(pcVar6 + 0x18) + 1" (pointer_expression "*(int *)(pcVar6 + 0x18)" (* "*") (cast_expression "(int *)(pcVar6 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar6 + 0x18)" (( "(") (binary_expression "pcVar6 + 0x18" (identifier "pcVar6") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "1")) (+ "+") (binary_expression "(uint)local_3e * 2" (cast_expression "(uint)local_3e" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_3e")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (ERROR "piVar7 = (int *)std::" (assignment_expression "piVar7 = (int *)std" (identifier "piVar7") (= "=") (cast_expression "(int *)std" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "std"))) (: ":") (: ":")) (labeled_statement "istream::get((char *)param_1);" (statement_identifier "istream") (: ":") (ERROR ":" (: ":")) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" (identifier "get") (argument_list "((char *)param_1)" (( "(") (cast_expression "(char *)param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")) () ")"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0)" (( "(") (binary_expression "(*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0" (parenthesized_expression "(*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5)" (( "(") (binary_expression "*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5" (pointer_expression "*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14)" (* "*") (cast_expression "(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14)" (( "(") (binary_expression "(int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14" (binary_expression "(int)piVar7 + *(int *)(*piVar7 + -0xc)" (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7")) (+ "+") (pointer_expression "*(int *)(*piVar7 + -0xc)" (* "*") (cast_expression "(int *)(*piVar7 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar7 + -0xc)" (( "(") (binary_expression "*piVar7 + -0xc" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (+ "+") (number_literal "-0xc")) () ")"))))) (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "5")) () ")")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (if_statement "if (local_3e == 0x2d) {\n    std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)param_1);\n  }\n  else if (local_3e == 0x2b) goto LAB_00013c67;" (if "if") (parenthesized_expression "(local_3e == 0x2d)" (( "(") (binary_expression "local_3e == 0x2d" (identifier "local_3e") (== "==") (number_literal "0x2d")) () ")")) (compound_statement "{\n    std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);\nLAB_00013c67:\n    std::istream::get((char *)param_1);\n  }" ({ "{") (labeled_statement "std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);" (call_expression "_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7)" (identifier "_M_replace") (argument_list "((uint)&local_38,0,local_34,unaff_EDI + 0x15d7)" (( "(") (binary_expression "(uint)&local_38" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (& "&") (identifier "local_38")) (, ",") (number_literal "0") (, ",") (identifier "local_34") (, ",") (binary_expression "unaff_EDI + 0x15d7" (identifier "unaff_EDI") (+ "+") (number_literal "0x15d7")) () ")"))) (; ";")))) (labeled_statement "LAB_00013c67:\n    std::istream::get((char *)param_1);" (statement_identifier "LAB_00013c67") (: ":") (labeled_statement "std::istream::get((char *)param_1);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "istream::get((char *)param_1);" (statement_identifier "istream") (: ":") (ERROR ":" (: ":")) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" (identifier "get") (argument_list "((char *)param_1)" (( "(") (cast_expression "(char *)param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")) () ")"))) (; ";"))))) (} "}")) (else_clause "else if (local_3e == 0x2b) goto LAB_00013c67;" (else "else") (if_statement "if (local_3e == 0x2b) goto LAB_00013c67;" (if "if") (parenthesized_expression "(local_3e == 0x2b)" (( "(") (binary_expression "local_3e == 0x2b" (identifier "local_3e") (== "==") (number_literal "0x2b")) () ")")) (goto_statement "goto LAB_00013c67;" (goto "goto") (statement_identifier "LAB_00013c67") (; ";"))))) (expression_statement "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);" (call_expression "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" (identifier "__gmp_istream_set_digits") (argument_list "((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" (( "(") (cast_expression "(string *)&local_38" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_38" (& "&") (identifier "local_38"))) (, ",") (identifier "param_1") (, ",") (cast_expression "(char *)&local_3e" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_3e" (& "&") (identifier "local_3e"))) (, ",") (pointer_expression "&local_3d" (& "&") (identifier "local_3d")) (, ",") (number_literal "10") () ")"))) (; ";")) (if_statement "if (local_3e == bVar2) {\n    pbVar12 = &local_3e;\n    std::istream::get((char *)param_1);\n    sVar8 = strlen(pcVar11);\n    if (0x7fffffffU - (int)local_34 < sVar8) {\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    \n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }\n    std::string::_M_append((char *)&local_38,(uint)pcVar11);\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }" (if "if") (parenthesized_expression "(local_3e == bVar2)" (( "(") (binary_expression "local_3e == bVar2" (identifier "local_3e") (== "==") (identifier "bVar2")) () ")")) (compound_statement "{\n    pbVar12 = &local_3e;\n    std::istream::get((char *)param_1);\n    sVar8 = strlen(pcVar11);\n    if (0x7fffffffU - (int)local_34 < sVar8) {\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    \n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }\n    std::string::_M_append((char *)&local_38,(uint)pcVar11);\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }" ({ "{") (expression_statement "pbVar12 = &local_3e;" (assignment_expression "pbVar12 = &local_3e" (identifier "pbVar12") (= "=") (pointer_expression "&local_3e" (& "&") (identifier "local_3e"))) (; ";")) (labeled_statement "std::istream::get((char *)param_1);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "istream::get((char *)param_1);" (statement_identifier "istream") (: ":") (ERROR ":" (: ":")) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" (identifier "get") (argument_list "((char *)param_1)" (( "(") (cast_expression "(char *)param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")) () ")"))) (; ";")))) (expression_statement "sVar8 = strlen(pcVar11);" (assignment_expression "sVar8 = strlen(pcVar11)" (identifier "sVar8") (= "=") (call_expression "strlen(pcVar11)" (identifier "strlen") (argument_list "(pcVar11)" (( "(") (identifier "pcVar11") () ")")))) (; ";")) (if_statement "if (0x7fffffffU - (int)local_34 < sVar8) {\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    \n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }" (if "if") (parenthesized_expression "(0x7fffffffU - (int)local_34 < sVar8)" (( "(") (binary_expression "0x7fffffffU - (int)local_34 < sVar8" (binary_expression "0x7fffffffU - (int)local_34" (number_literal "0x7fffffffU") (- "-") (cast_expression "(int)local_34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_34"))) (< "<") (identifier "sVar8")) () ")")) (compound_statement "{\n      pcVar11 = (char *)(unaff_EDI + 0x15d9);\n      std::__throw_length_error(pcVar11);\n                    \n      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);\n      return piVar10;\n    }" ({ "{") (expression_statement "pcVar11 = (char *)(unaff_EDI + 0x15d9);" (assignment_expression "pcVar11 = (char *)(unaff_EDI + 0x15d9)" (identifier "pcVar11") (= "=") (cast_expression "(char *)(unaff_EDI + 0x15d9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x15d9)" (( "(") (binary_expression "unaff_EDI + 0x15d9" (identifier "unaff_EDI") (+ "+") (number_literal "0x15d9")) () ")")))) (; ";")) (labeled_statement "std::__throw_length_error(pcVar11);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (expression_statement "__throw_length_error(pcVar11);" (call_expression "__throw_length_error(pcVar11)" (identifier "__throw_length_error") (argument_list "(pcVar11)" (( "(") (identifier "pcVar11") () ")"))) (; ";"))) (expression_statement "piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);" (assignment_expression "piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12)" (identifier "piVar10") (= "=") (cast_expression "(istream *)entry(extraout_EDX,pcVar11,pbVar12)" (( "(") (type_descriptor "istream *" (type_identifier "istream") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "entry(extraout_EDX,pcVar11,pbVar12)" (identifier "entry") (argument_list "(extraout_EDX,pcVar11,pbVar12)" (( "(") (identifier "extraout_EDX") (, ",") (identifier "pcVar11") (, ",") (identifier "pbVar12") () ")"))))) (; ";")) (return_statement "return piVar10;" (return "return") (identifier "piVar10") (; ";")) (} "}"))) (labeled_statement "std::string::_M_append((char *)&local_38,(uint)pcVar11);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_append((char *)&local_38,(uint)pcVar11);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_append((char *)&local_38,(uint)pcVar11);" (call_expression "_M_append((char *)&local_38,(uint)pcVar11)" (identifier "_M_append") (argument_list "((char *)&local_38,(uint)pcVar11)" (( "(") (cast_expression "(char *)&local_38" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_38" (& "&") (identifier "local_38"))) (, ",") (cast_expression "(uint)pcVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar11")) () ")"))) (; ";")))) (expression_statement "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);" (call_expression "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" (identifier "__gmp_istream_set_digits") (argument_list "((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" (( "(") (cast_expression "(string *)&local_38" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_38" (& "&") (identifier "local_38"))) (, ",") (identifier "param_1") (, ",") (cast_expression "(char *)&local_3e" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_3e" (& "&") (identifier "local_3e"))) (, ",") (pointer_expression "&local_3d" (& "&") (identifier "local_3d")) (, ",") (number_literal "10") () ")"))) (; ";")) (} "}"))) (expression_statement "pcVar11 = local_34;" (assignment_expression "pcVar11 = local_34" (identifier "pcVar11") (= "=") (identifier "local_34")) (; ";")) (expression_statement "bVar2 = local_3e;" (assignment_expression "bVar2 = local_3e" (identifier "bVar2") (= "=") (identifier "local_3e")) (; ";")) (if_statement "if ((local_3d != false) && ((local_3e & 0xdf) == 0x45)) {\n    pcVar1 = local_34 + 1;\n    pcVar9 = (char *)0xf;\n    if (local_38 != local_30) {\n      pcVar9 = local_30[0];\n    }\n    if (pcVar9 < pcVar1) {\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }\n    *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n    pcVar11[(int)local_38 + 1] = '\0';\n    local_34 = pcVar1;\n    std::istream::get((char *)param_1);\n    pcVar11 = local_34;\n    bVar2 = local_3e;\n    local_3d = false;\n    if ((local_3e - 0x2b & 0xfd) == 0) {\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }" (if "if") (parenthesized_expression "((local_3d != false) && ((local_3e & 0xdf) == 0x45))" (( "(") (binary_expression "(local_3d != false) && ((local_3e & 0xdf) == 0x45)" (parenthesized_expression "(local_3d != false)" (( "(") (binary_expression "local_3d != false" (identifier "local_3d") (!= "!=") (false "false")) () ")")) (&& "&&") (parenthesized_expression "((local_3e & 0xdf) == 0x45)" (( "(") (binary_expression "(local_3e & 0xdf) == 0x45" (parenthesized_expression "(local_3e & 0xdf)" (( "(") (binary_expression "local_3e & 0xdf" (identifier "local_3e") (& "&") (number_literal "0xdf")) () ")")) (== "==") (number_literal "0x45")) () ")"))) () ")")) (compound_statement "{\n    pcVar1 = local_34 + 1;\n    pcVar9 = (char *)0xf;\n    if (local_38 != local_30) {\n      pcVar9 = local_30[0];\n    }\n    if (pcVar9 < pcVar1) {\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }\n    *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n    pcVar11[(int)local_38 + 1] = '\0';\n    local_34 = pcVar1;\n    std::istream::get((char *)param_1);\n    pcVar11 = local_34;\n    bVar2 = local_3e;\n    local_3d = false;\n    if ((local_3e - 0x2b & 0xfd) == 0) {\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }\n    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);\n  }" ({ "{") (expression_statement "pcVar1 = local_34 + 1;" (assignment_expression "pcVar1 = local_34 + 1" (identifier "pcVar1") (= "=") (binary_expression "local_34 + 1" (identifier "local_34") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar9 = (char *)0xf;" (assignment_expression "pcVar9 = (char *)0xf" (identifier "pcVar9") (= "=") (cast_expression "(char *)0xf" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xf"))) (; ";")) (if_statement "if (local_38 != local_30) {\n      pcVar9 = local_30[0];\n    }" (if "if") (parenthesized_expression "(local_38 != local_30)" (( "(") (binary_expression "local_38 != local_30" (identifier "local_38") (!= "!=") (identifier "local_30")) () ")")) (compound_statement "{\n      pcVar9 = local_30[0];\n    }" ({ "{") (expression_statement "pcVar9 = local_30[0];" (assignment_expression "pcVar9 = local_30[0]" (identifier "pcVar9") (= "=") (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (if_statement "if (pcVar9 < pcVar1) {\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }" (if "if") (parenthesized_expression "(pcVar9 < pcVar1)" (( "(") (binary_expression "pcVar9 < pcVar1" (identifier "pcVar9") (< "<") (identifier "pcVar1")) () ")")) (compound_statement "{\n      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n    }" ({ "{") (labeled_statement "std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" (call_expression "_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0)" (identifier "_M_mutate") (argument_list "((uint)&local_38,(uint)local_34,(char *)0x0,0)" (( "(") (binary_expression "(uint)&local_38" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (& "&") (identifier "local_38")) (, ",") (cast_expression "(uint)local_34" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_34")) (, ",") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (number_literal "0") () ")"))) (; ";")))) (} "}"))) (expression_statement "*(byte *)((int)local_38 + (int)pcVar11) = bVar2;" (assignment_expression "*(byte *)((int)local_38 + (int)pcVar11) = bVar2" (pointer_expression "*(byte *)((int)local_38 + (int)pcVar11)" (* "*") (cast_expression "(byte *)((int)local_38 + (int)pcVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_38 + (int)pcVar11)" (( "(") (binary_expression "(int)local_38 + (int)pcVar11" (cast_expression "(int)local_38" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_38")) (+ "+") (cast_expression "(int)pcVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar11"))) () ")")))) (= "=") (identifier "bVar2")) (; ";")) (expression_statement "pcVar11[(int)local_38 + 1] = '\0';" (assignment_expression "pcVar11[(int)local_38 + 1] = '\0'" (subscript_expression "pcVar11[(int)local_38 + 1]" (identifier "pcVar11") ([ "[") (binary_expression "(int)local_38 + 1" (cast_expression "(int)local_38" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_38")) (+ "+") (number_literal "1")) (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_34 = pcVar1;" (assignment_expression "local_34 = pcVar1" (identifier "local_34") (= "=") (identifier "pcVar1")) (; ";")) (labeled_statement "std::istream::get((char *)param_1);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "istream::get((char *)param_1);" (statement_identifier "istream") (: ":") (ERROR ":" (: ":")) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" (identifier "get") (argument_list "((char *)param_1)" (( "(") (cast_expression "(char *)param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")) () ")"))) (; ";")))) (expression_statement "pcVar11 = local_34;" (assignment_expression "pcVar11 = local_34" (identifier "pcVar11") (= "=") (identifier "local_34")) (; ";")) (expression_statement "bVar2 = local_3e;" (assignment_expression "bVar2 = local_3e" (identifier "bVar2") (= "=") (identifier "local_3e")) (; ";")) (expression_statement "local_3d = false;" (assignment_expression "local_3d = false" (identifier "local_3d") (= "=") (false "false")) (; ";")) (if_statement "if ((local_3e - 0x2b & 0xfd) == 0) {\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }" (if "if") (parenthesized_expression "((local_3e - 0x2b & 0xfd) == 0)" (( "(") (binary_expression "(local_3e - 0x2b & 0xfd) == 0" (parenthesized_expression "(local_3e - 0x2b & 0xfd)" (( "(") (binary_expression "local_3e - 0x2b & 0xfd" (binary_expression "local_3e - 0x2b" (identifier "local_3e") (- "-") (number_literal "0x2b")) (& "&") (number_literal "0xfd")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar1 = local_34 + 1;\n      pcVar9 = (char *)0xf;\n      if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }\n      if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }\n      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;\n      pcVar11[(int)local_38 + 1] = '\0';\n      local_34 = pcVar1;\n      std::istream::get((char *)param_1);\n    }" ({ "{") (expression_statement "pcVar1 = local_34 + 1;" (assignment_expression "pcVar1 = local_34 + 1" (identifier "pcVar1") (= "=") (binary_expression "local_34 + 1" (identifier "local_34") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar9 = (char *)0xf;" (assignment_expression "pcVar9 = (char *)0xf" (identifier "pcVar9") (= "=") (cast_expression "(char *)0xf" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xf"))) (; ";")) (if_statement "if (local_38 != local_30) {\n        pcVar9 = local_30[0];\n      }" (if "if") (parenthesized_expression "(local_38 != local_30)" (( "(") (binary_expression "local_38 != local_30" (identifier "local_38") (!= "!=") (identifier "local_30")) () ")")) (compound_statement "{\n        pcVar9 = local_30[0];\n      }" ({ "{") (expression_statement "pcVar9 = local_30[0];" (assignment_expression "pcVar9 = local_30[0]" (identifier "pcVar9") (= "=") (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (if_statement "if (pcVar9 < pcVar1) {\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }" (if "if") (parenthesized_expression "(pcVar9 < pcVar1)" (( "(") (binary_expression "pcVar9 < pcVar1" (identifier "pcVar9") (< "<") (identifier "pcVar1")) () ")")) (compound_statement "{\n        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);\n      }" ({ "{") (labeled_statement "std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);" (call_expression "_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0)" (identifier "_M_mutate") (argument_list "((uint)&local_38,(uint)local_34,(char *)0x0,0)" (( "(") (binary_expression "(uint)&local_38" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (& "&") (identifier "local_38")) (, ",") (cast_expression "(uint)local_34" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_34")) (, ",") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (number_literal "0") () ")"))) (; ";")))) (} "}"))) (expression_statement "*(byte *)((int)local_38 + (int)pcVar11) = bVar2;" (assignment_expression "*(byte *)((int)local_38 + (int)pcVar11) = bVar2" (pointer_expression "*(byte *)((int)local_38 + (int)pcVar11)" (* "*") (cast_expression "(byte *)((int)local_38 + (int)pcVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_38 + (int)pcVar11)" (( "(") (binary_expression "(int)local_38 + (int)pcVar11" (cast_expression "(int)local_38" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_38")) (+ "+") (cast_expression "(int)pcVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar11"))) () ")")))) (= "=") (identifier "bVar2")) (; ";")) (expression_statement "pcVar11[(int)local_38 + 1] = '\0';" (assignment_expression "pcVar11[(int)local_38 + 1] = '\0'" (subscript_expression "pcVar11[(int)local_38 + 1]" (identifier "pcVar11") ([ "[") (binary_expression "(int)local_38 + 1" (cast_expression "(int)local_38" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_38")) (+ "+") (number_literal "1")) (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_34 = pcVar1;" (assignment_expression "local_34 = pcVar1" (identifier "local_34") (= "=") (identifier "pcVar1")) (; ";")) (labeled_statement "std::istream::get((char *)param_1);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "istream::get((char *)param_1);" (statement_identifier "istream") (: ":") (ERROR ":" (: ":")) (expression_statement "get((char *)param_1);" (call_expression "get((char *)param_1)" (identifier "get") (argument_list "((char *)param_1)" (( "(") (cast_expression "(char *)param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")) () ")"))) (; ";")))) (} "}"))) (expression_statement "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);" (call_expression "__gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" (identifier "__gmp_istream_set_digits") (argument_list "((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10)" (( "(") (cast_expression "(string *)&local_38" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_38" (& "&") (identifier "local_38"))) (, ",") (identifier "param_1") (, ",") (cast_expression "(char *)&local_3e" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_3e" (& "&") (identifier "local_3e"))) (, ",") (pointer_expression "&local_3d" (& "&") (identifier "local_3d")) (, ",") (number_literal "10") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);" (assignment_expression "piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc)" (identifier "piVar10") (= "=") (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc)" (identifier "param_1") (+ "+") (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" (* "*") (cast_expression "(int *)(*(int *)param_1 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)param_1 + -0xc)" (( "(") (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (+ "+") (number_literal "-0xc")) () ")")))))) (; ";")) (expression_statement "uVar5 = *(uint *)(piVar10 + 0x14);" (assignment_expression "uVar5 = *(uint *)(piVar10 + 0x14)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(piVar10 + 0x14)" (* "*") (cast_expression "(uint *)(piVar10 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar10 + 0x14)" (( "(") (binary_expression "piVar10 + 0x14" (identifier "piVar10") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (uVar5 == 0) {\n    std::istream::putback((char)param_1);\nLAB_00013be7:\n    if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }\n    piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n    uVar5 = *(uint *)(piVar10 + 0x14);\n  }\n  else {\n    if ((uVar5 & 2) == 0) goto LAB_00013be7;\n    if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }\n  }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    std::istream::putback((char)param_1);\nLAB_00013be7:\n    if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }\n    piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);\n    uVar5 = *(uint *)(piVar10 + 0x14);\n  }" ({ "{") (labeled_statement "std::istream::putback((char)param_1);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "istream::putback((char)param_1);" (statement_identifier "istream") (: ":") (ERROR ":" (: ":")) (expression_statement "putback((char)param_1);" (call_expression "putback((char)param_1)" (identifier "putback") (argument_list "((char)param_1)" (( "(") (cast_expression "(char)param_1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_1")) () ")"))) (; ";")))) (labeled_statement "LAB_00013be7:\n    if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }" (statement_identifier "LAB_00013be7") (: ":") (if_statement "if (local_3d != false) {\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }" (if "if") (parenthesized_expression "(local_3d != false)" (( "(") (binary_expression "local_3d != false" (identifier "local_3d") (!= "!=") (false "false")) () ")")) (compound_statement "{\n      __gmpf_set_str(param_2,local_38,10);\n      goto LAB_00013c01;\n    }" ({ "{") (expression_statement "__gmpf_set_str(param_2,local_38,10);" (call_expression "__gmpf_set_str(param_2,local_38,10)" (identifier "__gmpf_set_str") (argument_list "(param_2,local_38,10)" (( "(") (identifier "param_2") (, ",") (identifier "local_38") (, ",") (number_literal "10") () ")"))) (; ";")) (goto_statement "goto LAB_00013c01;" (goto "goto") (statement_identifier "LAB_00013c01") (; ";")) (} "}")))) (expression_statement "piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);" (assignment_expression "piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc)" (identifier "piVar10") (= "=") (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc)" (identifier "param_1") (+ "+") (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" (* "*") (cast_expression "(int *)(*(int *)param_1 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)param_1 + -0xc)" (( "(") (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (+ "+") (number_literal "-0xc")) () ")")))))) (; ";")) (expression_statement "uVar5 = *(uint *)(piVar10 + 0x14);" (assignment_expression "uVar5 = *(uint *)(piVar10 + 0x14)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(piVar10 + 0x14)" (* "*") (cast_expression "(uint *)(piVar10 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar10 + 0x14)" (( "(") (binary_expression "piVar10 + 0x14" (identifier "piVar10") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    if ((uVar5 & 2) == 0) goto LAB_00013be7;\n    if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }\n  }" (else "else") (compound_statement "{\n    if ((uVar5 & 2) == 0) goto LAB_00013be7;\n    if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }\n  }" ({ "{") (if_statement "if ((uVar5 & 2) == 0) goto LAB_00013be7;" (if "if") (parenthesized_expression "((uVar5 & 2) == 0)" (( "(") (binary_expression "(uVar5 & 2) == 0" (parenthesized_expression "(uVar5 & 2)" (( "(") (binary_expression "uVar5 & 2" (identifier "uVar5") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00013be7;" (goto "goto") (statement_identifier "LAB_00013be7") (; ";"))) (if_statement "if (local_3d != false) {\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }" (if "if") (parenthesized_expression "(local_3d != false)" (( "(") (binary_expression "local_3d != false" (identifier "local_3d") (!= "!=") (false "false")) () ")")) (compound_statement "{\n      std::ios::clear(piVar10,2);\n      goto LAB_00013be7;\n    }" ({ "{") (labeled_statement "std::ios::clear(piVar10,2);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "ios::clear(piVar10,2);" (statement_identifier "ios") (: ":") (ERROR ":" (: ":")) (expression_statement "clear(piVar10,2);" (call_expression "clear(piVar10,2)" (identifier "clear") (argument_list "(piVar10,2)" (( "(") (identifier "piVar10") (, ",") (number_literal "2") () ")"))) (; ";")))) (goto_statement "goto LAB_00013be7;" (goto "goto") (statement_identifier "LAB_00013be7") (; ";")) (} "}"))) (} "}")))) (labeled_statement "std::ios::clear(piVar10,uVar5 | 4);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "ios::clear(piVar10,uVar5 | 4);" (statement_identifier "ios") (: ":") (ERROR ":" (: ":")) (expression_statement "clear(piVar10,uVar5 | 4);" (call_expression "clear(piVar10,uVar5 | 4)" (identifier "clear") (argument_list "(piVar10,uVar5 | 4)" (( "(") (identifier "piVar10") (, ",") (binary_expression "uVar5 | 4" (identifier "uVar5") (| "|") (number_literal "4")) () ")"))) (; ";")))) (labeled_statement "LAB_00013c01:\n  std::locale::~locale(local_3c);" (statement_identifier "LAB_00013c01") (: ":") (labeled_statement "std::locale::~locale(local_3c);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "locale::~locale(local_3c);" (statement_identifier "locale") (: ":") (ERROR ":" (: ":")) (expression_statement "~locale(local_3c);" (unary_expression "~locale(local_3c)" (~ "~") (call_expression "locale(local_3c)" (identifier "locale") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")")))) (; ";"))))) (if_statement "if (local_38 != local_30) {\n    operator_delete(local_38);\n  }" (if "if") (parenthesized_expression "(local_38 != local_30)" (( "(") (binary_expression "local_38 != local_30" (identifier "local_38") (!= "!=") (identifier "local_30")) () ")")) (compound_statement "{\n    operator_delete(local_38);\n  }" ({ "{") (expression_statement "operator_delete(local_38);" (call_expression "operator_delete(local_38)" (identifier "operator_delete") (argument_list "(local_38)" (( "(") (identifier "local_38") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00014700();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_00014700();\n  }" ({ "{") (expression_statement "FUN_00014700();" (call_expression "FUN_00014700()" (identifier "FUN_00014700") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))

type_7 * operator>>(type_7 *var_9,mpf_ptr f)

{
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_5;
  type_1 var_25;
  int var_33;
  char *__s;
  type_2 var_27;
  char var_18;
  type_3 *plVar6;
  type_4 *pnVar7;
  type_5 *var_12;
  int *piVar9;
  size_t var_20;
  type_6 var_24;
  type_7 *var_28;
  type_7 *extraout_EDX;
  int var_16;
  int var_7;
  type_8 *p_Var13;
  char var_13;
  bool var_23;
  type_9 local_3c;
  type_10 var_15;
  
  var_6();
  var_33 = *(int *)(var_7 + 0x14);
  var_5 = &var_15.field_2;
  var_13 = '\0';
  var_15._M_string_length = 0;
  var_15.field_2._M_allocated_capacity = var_15.field_2._M_allocated_capacity & 0xffffff00;
  var_23 = false;
  var_15._M_dataplus._M_p = (type_11)var_5;
  plVar6 = var_8();
  __s = plVar6->decimal_point;
  std::locale::type_9(&local_3c,(type_9 *)(var_9 + *(int *)(*(int *)var_9 + -0xc) + 0x6c));
                    /* try { // try from 00013a90 to 00013e02 has its CatchHandler @ 00013e03 */
  pnVar7 = var_10::use_facet<var_10::type_4<var_2>>(&local_3c);
  var_18 = (**(type_12 **)(*(int *)pnVar7 + 8))(pnVar7);
  std::istream::var_11((char *)var_9);
  if (((type_13)var_9[*(int *)(*(int *)var_9 + -0xc) + 0xd] & 0x10) != 0) {
    var_12 = var_10::use_facet<var_10::type_5<var_2>>(&local_3c);
    do {
      if ((*(type_13 *)(*(int *)(var_12 + 0x18) + 1 + (type_1)(type_13)var_13 * 2) & 0x20) == 0) break;
      piVar9 = (int *)var_10::istream::var_11((char *)var_9);
    } while ((*(type_13 *)((int)piVar9 + *(int *)(*piVar9 + -0xc) + 0x14) & 5) == 0);
  }
  if (var_13 == '-') {
    std::string::var_14((type_1)&var_15,0,(char *)var_15._M_string_length,var_16 + 0x15d7);
LAB_00013c67:
    std::istream::var_11((char *)var_9);
  }
  else if (var_13 == '+') goto LAB_00013c67;
  var_17(&var_15,var_9,&var_13,&var_23,10);
  if (var_13 == var_18) {
    std::istream::var_11((char *)var_9);
    var_20 = var_19(__s);
    if (0x7fffffff - var_15._M_string_length < var_20) {
      p_Var13 = (type_8 *)(var_16 + 0x15d9);
      std::var_21((char *)p_Var13);
                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */
      var_28 = (type_7 *)operator>>(extraout_EDX,p_Var13);
      return var_28;
    }
    std::string::var_22((char *)&var_15,(type_1)__s);
    var_17(&var_15,var_9,&var_13,&var_23,10);
  }
  var_27 = var_15._M_string_length;
  var_18 = var_13;
  if ((var_23 != false) && ((var_13 & 0xdfU) == 0x45)) {
    var_25 = var_15._M_string_length + 1;
    var_24 = 0xf;
    if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
         *)var_15._M_dataplus._M_p != var_5) {
      var_24 = var_15.field_2._M_allocated_capacity;
    }
    if (var_24 < var_25) {
      std::string::var_26((type_1)&var_15,var_15._M_string_length,(char *)0x0,0);
    }
    var_15._M_dataplus._M_p[var_27] = var_18;
    var_15._M_dataplus._M_p[var_27 + 1] = '\0';
    var_15._M_string_length = var_25;
    std::istream::var_11((char *)var_9);
    var_27 = var_15._M_string_length;
    var_18 = var_13;
    var_23 = false;
    if ((var_13 - 0x2bU & 0xfd) == 0) {
      var_25 = var_15._M_string_length + 1;
      var_24 = 0xf;
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)var_15._M_dataplus._M_p != var_5) {
        var_24 = var_15.field_2._M_allocated_capacity;
      }
      if (var_24 < var_25) {
        std::string::var_26((type_1)&var_15,var_15._M_string_length,(char *)0x0,0);
      }
      var_15._M_dataplus._M_p[var_27] = var_18;
      var_15._M_dataplus._M_p[var_27 + 1] = '\0';
      var_15._M_string_length = var_25;
      std::istream::var_11((char *)var_9);
    }
    var_17(&var_15,var_9,&var_13,&var_23,10);
  }
  var_28 = var_9 + *(int *)(*(int *)var_9 + -0xc);
  if (*(type_1 *)(var_28 + 0x14) == 0) {
    std::istream::var_29((char)var_9);
LAB_00013be7:
    if (var_23 != false) {
      var_30(f,var_15._M_dataplus._M_p,10);
      goto LAB_00013c01;
    }
    var_28 = var_9 + *(int *)(*(int *)var_9 + -0xc);
  }
  else {
    if ((*(type_1 *)(var_28 + 0x14) & 2) == 0) goto LAB_00013be7;
    if (var_23 != false) {
      std::ios::var_31((type_14)var_28);
      goto LAB_00013be7;
    }
  }
  std::ios::var_31((type_14)var_28);
LAB_00013c01:
  std::locale::~type_9(&local_3c);
  if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
       *)var_15._M_dataplus._M_p != var_5) {
    var_32(var_15._M_dataplus._M_p);
  }
  if (var_33 != *(int *)(var_7 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_34();
  }
  return var_9;
}


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

/* TEMPNAMEPLACEHOLDERVALUE(std::istream&, __mpf_struct*) */

istream * MASKED(istream *param_1,__mpf_struct *param_2)

{
  char *pcVar1;
  byte bVar2;
  lconv *plVar3;
  numpunct *pnVar4;
  uint uVar5;
  ctype *pcVar6;
  int *piVar7;
  size_t sVar8;
  char *pcVar9;
  istream *piVar10;
  undefined4 extraout_EDX;
  int unaff_EDI;
  int in_GS_OFFSET;
  char *pcVar11;
  byte *pbVar12;
  byte local_3e;
  bool local_3d;
  locale local_3c [4];
  char **local_38;
  char *local_34;
  char *local_30 [4];
  int local_20;
  
  FUN_00013e0a();
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_3e = 0;
  local_34 = (char *)0x0;
  local_30[0] = (char *)((uint)local_30[0] & 0xffffff00);
  local_3d = false;
  local_38 = local_30;
  plVar3 = localeconv();
  pcVar11 = plVar3->decimal_point;
  std::locale::locale(local_3c,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));
                    /* try { // try from 00013a90 to 00013e02 has its CatchHandler @ 00013e03 */
  pnVar4 = std::use_facet<std::numpunct<char>>(local_3c);
  bVar2 = (**(code **)(*(int *)pnVar4 + 8))(pnVar4);
  std::istream::get((char *)param_1);
  if (((byte)param_1[*(int *)(*(int *)param_1 + -0xc) + 0xd] & 0x10) != 0) {
    pcVar6 = std::use_facet<std::ctype<char>>(local_3c);
    do {
      if ((*(byte *)(*(int *)(pcVar6 + 0x18) + 1 + (uint)local_3e * 2) & 0x20) == 0) break;
      piVar7 = (int *)std::istream::get((char *)param_1);
    } while ((*(byte *)((int)piVar7 + *(int *)(*piVar7 + -0xc) + 0x14) & 5) == 0);
  }
  if (local_3e == 0x2d) {
    std::string::_M_replace((uint)&local_38,0,local_34,unaff_EDI + 0x15d7);
LAB_00013c67:
    std::istream::get((char *)param_1);
  }
  else if (local_3e == 0x2b) goto LAB_00013c67;
  __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);
  if (local_3e == bVar2) {
    pbVar12 = &local_3e;
    std::istream::get((char *)param_1);
    sVar8 = strlen(pcVar11);
    if (0x7fffffffU - (int)local_34 < sVar8) {
      pcVar11 = (char *)(unaff_EDI + 0x15d9);
      std::__throw_length_error(pcVar11);
                    /* catch() { ... } // from try @ 00013a90 with catch @ 00013e03 */
      piVar10 = (istream *)entry(extraout_EDX,pcVar11,pbVar12);
      return piVar10;
    }
    std::string::_M_append((char *)&local_38,(uint)pcVar11);
    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);
  }
  pcVar11 = local_34;
  bVar2 = local_3e;
  if ((local_3d != false) && ((local_3e & 0xdf) == 0x45)) {
    pcVar1 = local_34 + 1;
    pcVar9 = (char *)0xf;
    if (local_38 != local_30) {
      pcVar9 = local_30[0];
    }
    if (pcVar9 < pcVar1) {
      std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);
    }
    *(byte *)((int)local_38 + (int)pcVar11) = bVar2;
    pcVar11[(int)local_38 + 1] = '\0';
    local_34 = pcVar1;
    std::istream::get((char *)param_1);
    pcVar11 = local_34;
    bVar2 = local_3e;
    local_3d = false;
    if ((local_3e - 0x2b & 0xfd) == 0) {
      pcVar1 = local_34 + 1;
      pcVar9 = (char *)0xf;
      if (local_38 != local_30) {
        pcVar9 = local_30[0];
      }
      if (pcVar9 < pcVar1) {
        std::string::_M_mutate((uint)&local_38,(uint)local_34,(char *)0x0,0);
      }
      *(byte *)((int)local_38 + (int)pcVar11) = bVar2;
      pcVar11[(int)local_38 + 1] = '\0';
      local_34 = pcVar1;
      std::istream::get((char *)param_1);
    }
    __gmp_istream_set_digits((string *)&local_38,param_1,(char *)&local_3e,&local_3d,10);
  }
  piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);
  uVar5 = *(uint *)(piVar10 + 0x14);
  if (uVar5 == 0) {
    std::istream::putback((char)param_1);
LAB_00013be7:
    if (local_3d != false) {
      __gmpf_set_str(param_2,local_38,10);
      goto LAB_00013c01;
    }
    piVar10 = param_1 + *(int *)(*(int *)param_1 + -0xc);
    uVar5 = *(uint *)(piVar10 + 0x14);
  }
  else {
    if ((uVar5 & 2) == 0) goto LAB_00013be7;
    if (local_3d != false) {
      std::ios::clear(piVar10,2);
      goto LAB_00013be7;
    }
  }
  std::ios::clear(piVar10,uVar5 | 4);
LAB_00013c01:
  std::locale::~locale(local_3c);
  if (local_38 != local_30) {
    operator_delete(local_38);
  }
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_00014700();
  }
  return param_1;
}

