
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* std::wistream& std::TEMPNAMEPLACEHOLDERVALUE(std::wistream&, wchar_t*) */

wistream * std::operator>>(wistream *param_1,wchar_t *param_2)

{
  wchar_t *pwVar1;
  int *piVar2;
  int *piVar3;
  char cVar4;
  ctype *pcVar5;
  _Ios_Iostate _Var6;
  int iVar7;
  wchar_t wVar8;
  int iVar9;
  int iVar10;
  int local_30;
  sentry local_21;
  locale local_20 [16];
  
  wistream::sentry::sentry(&local_21,param_1,false);
  if (local_21 == (sentry)0x0) {
    iVar9 = *(int *)param_1;
    _Var6 = _S_failbit;
  }
  else {
    iVar9 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);
    if (iVar9 < 1) {
      iVar9 = 0x7fffffff;
    }
    locale::locale(local_20,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));
                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */
    pcVar5 = use_facet<std::ctype<wchar_t>>(local_20);
    locale::~locale(local_20);
    piVar2 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);
    if ((wchar_t *)piVar2[2] < (wchar_t *)piVar2[3]) {
      wVar8 = *(wchar_t *)piVar2[2];
    }
    else {
                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */
      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);
    }
    iVar9 = iVar9 + -1;
    iVar10 = 0;
    while (iVar10 != iVar9) {
      while( true ) {
        if (wVar8 == L'\xffffffff') goto LAB_001a9348;
                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */
        cVar4 = (**(code **)(*(int *)pcVar5 + 8))(pcVar5,0x2000,wVar8);
        local_30 = iVar10;
        if (cVar4 != '\0') goto LAB_001a9221;
        pwVar1 = param_2 + 1;
        iVar10 = iVar10 + 1;
        piVar3 = (int *)piVar2[2];
        *param_2 = wVar8;
        if (piVar3 < (int *)piVar2[3]) {
          iVar7 = *piVar3;
          piVar2[2] = (int)(piVar3 + 1);
        }
        else {
                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */
          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);
        }
        if (iVar7 == -1) {
          *pwVar1 = L'\0';
          iVar9 = *(int *)param_1;
          *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;
          _Var6 = _S_eofbit;
          goto LAB_001a92aa;
        }
        param_2 = pwVar1;
        if ((wchar_t *)piVar2[3] <= (wchar_t *)piVar2[2]) break;
        wVar8 = *(wchar_t *)piVar2[2];
        if (iVar10 == iVar9) goto LAB_001a9218;
      }
      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);
    }
LAB_001a9218:
    local_30 = iVar9;
    if (wVar8 == L'\xffffffff') {
LAB_001a9348:
      *param_2 = L'\0';
      iVar9 = *(int *)param_1;
      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;
      _Var6 = (-(uint)(iVar10 == 0) & 4) + _S_eofbit;
    }
    else {
LAB_001a9221:
      *param_2 = L'\0';
      iVar9 = *(int *)param_1;
      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;
      if (local_30 != 0) {
        return param_1;
      }
      _Var6 = _S_failbit;
    }
  }
LAB_001a92aa:
  wios::clear((wios *)(param_1 + *(int *)(iVar9 + -0xc)),
              _Var6 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar9 + -0xc)) + 0x14));
  return param_1;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

int * FUN_001a9110(int *param_1,int *param_2)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  char cVar4;
  int *piVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int local_30;
  char local_21;
  undefined1 local_20 [16];
  
  FUN_001a7460(&local_21,param_1,0);
  if (local_21 == '\0') {
    iVar8 = *param_1;
    uVar6 = 4;
  }
  else {
    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);
    if (iVar8 < 1) {
      iVar8 = 0x7fffffff;
    }
    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);
                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */
    piVar5 = (int *)FUN_001d5bc0(local_20);
    FUN_00182f00(local_20);
    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);
    if ((int *)piVar2[2] < (int *)piVar2[3]) {
      iVar7 = *(int *)piVar2[2];
    }
    else {
                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */
      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);
    }
    iVar8 = iVar8 + -1;
    iVar9 = 0;
    while (iVar9 != iVar8) {
      while( true ) {
        if (iVar7 == -1) goto LAB_001a9348;
                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */
        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);
        local_30 = iVar9;
        if (cVar4 != '\0') goto LAB_001a9221;
        piVar1 = param_2 + 1;
        iVar9 = iVar9 + 1;
        piVar3 = (int *)piVar2[2];
        *param_2 = iVar7;
        if (piVar3 < (int *)piVar2[3]) {
          iVar7 = *piVar3;
          piVar2[2] = (int)(piVar3 + 1);
        }
        else {
                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */
          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);
        }
        if (iVar7 == -1) {
          *piVar1 = 0;
          iVar8 = *param_1;
          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;
          uVar6 = 2;
          goto LAB_001a92aa;
        }
        param_2 = piVar1;
        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;
        iVar7 = *(int *)piVar2[2];
        if (iVar9 == iVar8) goto LAB_001a9218;
      }
      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);
    }
LAB_001a9218:
    local_30 = iVar8;
    if (iVar7 == -1) {
LAB_001a9348:
      *param_2 = 0;
      iVar8 = *param_1;
      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;
      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;
    }
    else {
LAB_001a9221:
      *param_2 = 0;
      iVar8 = *param_1;
      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;
      if (local_30 != 0) {
        return param_1;
      }
      uVar6 = 4;
    }
  }
LAB_001a92aa:
  iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);
  FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14));
  return param_1;
}


CALL 0x0004fb76
ADD EAX,0x158eeb
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
MOV EDI,EAX
MOV EBX,EDI
SUB ESP,0x30
MOV dword ptr [EBP + -0x34],EAX
LEA EAX,[EBP + -0x1d]
PUSH 0x0
PUSH dword ptr [EBP + 0x8]
PUSH EAX
CALL 0x001a7460
ADD ESP,0x10
CMP byte ptr [EBP + -0x1d],0x0
JZ 0x001a92a0
MOV ESI,dword ptr [EBP + 0x8]
MOV EDX,0x7fffffff
MOV EBX,dword ptr [EBP + -0x34]
MOV EAX,dword ptr [ESI]
ADD ESI,dword ptr [EAX + -0xc]
MOV EDI,dword ptr [ESI + 0x8]
MOV EAX,ESI
LEA ESI,[EBP + -0x1c]
TEST EDI,EDI
CMOVLE EDI,EDX
SUB ESP,0x8
ADD EAX,0x6c
PUSH EAX
PUSH ESI
CALL 0x00182730
MOV EBX,dword ptr [EBP + -0x34]
MOV dword ptr [ESP],ESI
CALL 0x001d5bc0
MOV EBX,dword ptr [EBP + -0x34]
MOV dword ptr [ESP],ESI
MOV dword ptr [EBP + -0x30],EAX
CALL 0x00182f00
MOV EAX,dword ptr [EBP + 0x8]
MOV ESI,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + -0xc]
MOV EBX,dword ptr [ESI + EAX*0x1 + 0x7c]
MOV EAX,dword ptr [EBX + 0x8]
CMP dword ptr [EBX + 0xc],EAX
JBE 0x001a9328
MOV ESI,dword ptr [EAX]
LEA EAX,[EDI + -0x1]
XOR EDI,EDI
MOV dword ptr [EBP + -0x2c],EAX
CMP EDI,dword ptr [EBP + -0x2c]
JZ 0x001a9218
CMP ESI,-0x1
JZ 0x001a9348
MOV ECX,dword ptr [EBP + -0x30]
SUB ESP,0x4
MOV EAX,dword ptr [ECX]
PUSH ESI
PUSH 0x2000
PUSH ECX
CALL dword ptr [EAX + 0x8]
ADD ESP,0x10
TEST AL,AL
JNZ 0x001a9340
ADD dword ptr [EBP + 0xc],0x4
MOV EAX,dword ptr [EBP + 0xc]
ADD EDI,0x1
MOV EDX,dword ptr [EBX + 0x8]
MOV dword ptr [EAX + -0x4],ESI
CMP EDX,dword ptr [EBX + 0xc]
JNC 0x001a92d0
MOV EAX,dword ptr [EDX]
ADD EDX,0x4
MOV dword ptr [EBX + 0x8],EDX
CMP EAX,-0x1
JZ 0x001a92e5
MOV EAX,dword ptr [EBX + 0x8]
CMP EAX,dword ptr [EBX + 0xc]
JNC 0x001a9310
MOV ESI,dword ptr [EAX]
CMP EDI,dword ptr [EBP + -0x2c]
JNZ 0x001a91b5
CMP ESI,-0x1
JZ 0x001a9348
MOV EAX,dword ptr [EBP + 0xc]
MOV EDI,dword ptr [EBP + 0x8]
MOV dword ptr [EAX],0x0
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EAX]
MOV EAX,dword ptr [EDX + -0xc]
MOV dword ptr [EDI + EAX*0x1 + 0x8],0x0
MOV EAX,dword ptr [EBP + -0x2c]
TEST EAX,EAX
JNZ 0x001a92c3
MOV EAX,0x4
JMP 0x001a92aa
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EAX]
MOV EAX,0x4
MOV EDI,dword ptr [EBP + 0x8]
ADD EDI,dword ptr [EDX + -0xc]
SUB ESP,0x8
OR EAX,dword ptr [EDI + 0x14]
MOV EBX,dword ptr [EBP + -0x34]
PUSH EAX
PUSH EDI
CALL 0x001ab090
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x8]
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBX]
SUB ESP,0xc
PUSH EBX
CALL dword ptr [EAX + 0x28]
ADD ESP,0x10
CMP EAX,-0x1
JNZ 0x001a9205
MOV EAX,dword ptr [EBP + 0xc]
MOV EDI,dword ptr [EBP + 0x8]
MOV dword ptr [EAX],0x0
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EAX]
MOV EAX,dword ptr [EDX + -0xc]
MOV dword ptr [EDI + EAX*0x1 + 0x8],0x0
MOV EAX,0x2
JMP 0x001a92aa
MOV EAX,dword ptr [EBX]
SUB ESP,0xc
PUSH EBX
CALL dword ptr [EAX + 0x24]
MOV ESI,EAX
ADD ESP,0x10
JMP 0x001a91b0
MOV EAX,dword ptr [EBX]
SUB ESP,0xc
PUSH EBX
CALL dword ptr [EAX + 0x24]
MOV ESI,EAX
ADD ESP,0x10
JMP 0x001a91a8
MOV dword ptr [EBP + -0x2c],EDI
JMP 0x001a9221
MOV EAX,dword ptr [EBP + 0xc]
MOV ECX,dword ptr [EBP + 0x8]
CMP EDI,0x1
MOV dword ptr [EAX],0x0
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EAX]
MOV EAX,dword ptr [EDX + -0xc]
MOV dword ptr [ECX + EAX*0x1 + 0x8],0x0
SBB EAX,EAX
AND EAX,0x4
ADD EAX,0x2
JMP 0x001a92aa
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nint * FUN_001a9110(int *param_1,int *param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  char cVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int local_30;\n  char local_21;\n  undefined1 local_20 [16];\n  \n  FUN_001a7460(&local_21,param_1,0);\n  if (local_21 == '\0') {\n    iVar8 = *param_1;\n    uVar6 = 4;\n  }\n  else {\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */\n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }\nLAB_001a92aa:\n  iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);\n  FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14));\n  return param_1;\n}\n\n" comment (function_definition "int * FUN_001a9110(int *param_1,int *param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  char cVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int local_30;\n  char local_21;\n  undefined1 local_20 [16];\n  \n  FUN_001a7460(&local_21,param_1,0);\n  if (local_21 == '\0') {\n    iVar8 = *param_1;\n    uVar6 = 4;\n  }\n  else {\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */\n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }\nLAB_001a92aa:\n  iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);\n  FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14));\n  return param_1;\n}" primitive_type (pointer_declarator "* FUN_001a9110(int *param_1,int *param_2)" * (function_declarator "FUN_001a9110(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  char cVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int local_30;\n  char local_21;\n  undefined1 local_20 [16];\n  \n  FUN_001a7460(&local_21,param_1,0);\n  if (local_21 == '\0') {\n    iVar8 = *param_1;\n    uVar6 = 4;\n  }\n  else {\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */\n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }\nLAB_001a92aa:\n  iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);\n  FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14));\n  return param_1;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "char local_21;" primitive_type identifier ;) (declaration "undefined1 local_20 [16];" type_identifier (array_declarator "local_20 [16]" identifier [ number_literal ]) ;) (expression_statement "FUN_001a7460(&local_21,param_1,0);" (call_expression "FUN_001a7460(&local_21,param_1,0)" identifier (argument_list "(&local_21,param_1,0)" ( (pointer_expression "&local_21" & identifier) , identifier , number_literal ))) ;) (if_statement "if (local_21 == '\0') {\n    iVar8 = *param_1;\n    uVar6 = 4;\n  }\n  else {\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */\n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }" if (parenthesized_expression "(local_21 == '\0')" ( (binary_expression "local_21 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar8 = *param_1;\n    uVar6 = 4;\n  }" { (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" identifier = number_literal) ;) }) (else_clause "else {\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */\n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }" else (compound_statement "{\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */\n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }" { (expression_statement "iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);" (assignment_expression "iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8)" identifier = (pointer_expression "*(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8)" * (cast_expression "(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + *(int *)(*param_1 + -0xc) + 8)" ( (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc) + 8" (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*param_1 + -0xc)" * (cast_expression "(int *)(*param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + -0xc)" ( (binary_expression "*param_1 + -0xc" (pointer_expression "*param_1" * identifier) + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }" if (parenthesized_expression "(iVar8 < 1)" ( (binary_expression "iVar8 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar8 = 0x7fffffff;\n    }" { (expression_statement "iVar8 = 0x7fffffff;" (assignment_expression "iVar8 = 0x7fffffff" identifier = number_literal) ;) })) (expression_statement "FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);" (call_expression "FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c)" identifier (argument_list "(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c)" ( identifier , (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c" (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*param_1 + -0xc)" * (cast_expression "(int *)(*param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + -0xc)" ( (binary_expression "*param_1 + -0xc" (pointer_expression "*param_1" * identifier) + number_literal) ))))) + number_literal) ))) ;) comment (expression_statement "piVar5 = (int *)FUN_001d5bc0(local_20);" (assignment_expression "piVar5 = (int *)FUN_001d5bc0(local_20)" identifier = (cast_expression "(int *)FUN_001d5bc0(local_20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001d5bc0(local_20)" identifier (argument_list "(local_20)" ( identifier ))))) ;) (expression_statement "FUN_00182f00(local_20);" (call_expression "FUN_00182f00(local_20)" identifier (argument_list "(local_20)" ( identifier ))) ;) (expression_statement "piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);" (assignment_expression "piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c)" identifier = (pointer_expression "*(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c)" * (cast_expression "(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c)" ( (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c" (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*param_1 + -0xc)" * (cast_expression "(int *)(*param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + -0xc)" ( (binary_expression "*param_1 + -0xc" (pointer_expression "*param_1" * identifier) + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" if (parenthesized_expression "((int *)piVar2[2] < (int *)piVar2[3])" ( (binary_expression "(int *)piVar2[2] < (int *)piVar2[3]" (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ])) < (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar7 = *(int *)piVar2[2];\n    }" { (expression_statement "iVar7 = *(int *)piVar2[2];" (assignment_expression "iVar7 = *(int *)piVar2[2]" identifier = (pointer_expression "*(int *)piVar2[2]" * (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" else (compound_statement "{\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" { comment (expression_statement "iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);" (assignment_expression "iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2)" identifier = (call_expression "(**(code **)(*piVar2 + 0x24))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x24))" ( (pointer_expression "**(code **)(*piVar2 + 0x24)" * (pointer_expression "*(code **)(*piVar2 + 0x24)" * (cast_expression "(code **)(*piVar2 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x24)" ( (binary_expression "*piVar2 + 0x24" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier )))) ;) }))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (while_statement "while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" while (parenthesized_expression "(iVar9 != iVar8)" ( (binary_expression "iVar9 != iVar8" identifier != identifier) )) (compound_statement "{\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" { (while_statement "while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        if (iVar7 == -1) goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }" { (if_statement "if (iVar7 == -1) goto LAB_001a9348;" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (goto_statement "goto LAB_001a9348;" goto statement_identifier ;)) comment (expression_statement "cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);" (assignment_expression "cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7)" identifier = (call_expression "(**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7)" (parenthesized_expression "(**(code **)(*piVar5 + 8))" ( (pointer_expression "**(code **)(*piVar5 + 8)" * (pointer_expression "*(code **)(*piVar5 + 8)" * (cast_expression "(code **)(*piVar5 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 8)" ( (binary_expression "*piVar5 + 8" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,0x2000,iVar7)" ( identifier , number_literal , identifier )))) ;) (expression_statement "local_30 = iVar9;" (assignment_expression "local_30 = iVar9" identifier = identifier) ;) (if_statement "if (cVar4 != '\0') goto LAB_001a9221;" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_001a9221;" goto statement_identifier ;)) (expression_statement "piVar1 = param_2 + 1;" (assignment_expression "piVar1 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) (expression_statement "*param_2 = iVar7;" (assignment_expression "*param_2 = iVar7" (pointer_expression "*param_2" * identifier) = identifier) ;) (if_statement "if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }" if (parenthesized_expression "(piVar3 < (int *)piVar2[3])" ( (binary_expression "piVar3 < (int *)piVar2[3]" identifier < (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }" { (expression_statement "iVar7 = *piVar3;" (assignment_expression "iVar7 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "piVar2[2] = (int)(piVar3 + 1);" (assignment_expression "piVar2[2] = (int)(piVar3 + 1)" (subscript_expression "piVar2[2]" identifier [ number_literal ]) = (cast_expression "(int)(piVar3 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar3 + 1)" ( (binary_expression "piVar3 + 1" identifier + number_literal) )))) ;) }) (else_clause "else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }" else (compound_statement "{\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }" { comment (expression_statement "iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);" (assignment_expression "iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2)" identifier = (call_expression "(**(code **)(*piVar2 + 0x28))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x28))" ( (pointer_expression "**(code **)(*piVar2 + 0x28)" * (pointer_expression "*(code **)(*piVar2 + 0x28)" * (cast_expression "(code **)(*piVar2 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x28)" ( (binary_expression "*piVar2 + 0x28" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier )))) ;) }))) (if_statement "if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (compound_statement "{\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }" { (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" * (cast_expression "(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" ( (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc) + 8" (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(iVar8 + -0xc)" * (cast_expression "(int *)(iVar8 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -0xc)" ( (binary_expression "iVar8 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (expression_statement "uVar6 = 2;" (assignment_expression "uVar6 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_001a92aa;" goto statement_identifier ;) })) (expression_statement "param_2 = piVar1;" (assignment_expression "param_2 = piVar1" identifier = identifier) ;) (if_statement "if ((int *)piVar2[3] <= (int *)piVar2[2]) break;" if (parenthesized_expression "((int *)piVar2[3] <= (int *)piVar2[2])" ( (binary_expression "(int *)piVar2[3] <= (int *)piVar2[2]" (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ])) <= (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = *(int *)piVar2[2];" (assignment_expression "iVar7 = *(int *)piVar2[2]" identifier = (pointer_expression "*(int *)piVar2[2]" * (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ])))) ;) (if_statement "if (iVar9 == iVar8) goto LAB_001a9218;" if (parenthesized_expression "(iVar9 == iVar8)" ( (binary_expression "iVar9 == iVar8" identifier == identifier) )) (goto_statement "goto LAB_001a9218;" goto statement_identifier ;)) })) (expression_statement "iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);" (assignment_expression "iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2)" identifier = (call_expression "(**(code **)(*piVar2 + 0x24))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x24))" ( (pointer_expression "**(code **)(*piVar2 + 0x24)" * (pointer_expression "*(code **)(*piVar2 + 0x24)" * (cast_expression "(code **)(*piVar2 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x24)" ( (binary_expression "*piVar2 + 0x24" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier )))) ;) })) (labeled_statement "LAB_001a9218:\n    local_30 = iVar8;" statement_identifier : (expression_statement "local_30 = iVar8;" (assignment_expression "local_30 = iVar8" identifier = identifier) ;)) (if_statement "if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (compound_statement "{\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }" { (labeled_statement "LAB_001a9348:\n      *param_2 = 0;" statement_identifier : (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;)) (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" * (cast_expression "(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" ( (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc) + 8" (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(iVar8 + -0xc)" * (cast_expression "(int *)(iVar8 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -0xc)" ( (binary_expression "iVar8 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (expression_statement "uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;" (assignment_expression "uVar6 = (-(uint)(iVar9 == 0) & 4) + 2" identifier = (binary_expression "(-(uint)(iVar9 == 0) & 4) + 2" (parenthesized_expression "(-(uint)(iVar9 == 0) & 4)" ( (binary_expression "-(uint)(iVar9 == 0) & 4" (unary_expression "-(uint)(iVar9 == 0)" - (call_expression "(uint)(iVar9 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )))) & number_literal) )) + number_literal)) ;) }) (else_clause "else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }" else (compound_statement "{\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }" { (labeled_statement "LAB_001a9221:\n      *param_2 = 0;" statement_identifier : (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;)) (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" * (cast_expression "(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" ( (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc) + 8" (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(iVar8 + -0xc)" * (cast_expression "(int *)(iVar8 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -0xc)" ( (binary_expression "iVar8 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (if_statement "if (local_30 != 0) {\n        return param_1;\n      }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (compound_statement "{\n        return param_1;\n      }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" identifier = number_literal) ;) }))) }))) (labeled_statement "LAB_001a92aa:\n  iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);" statement_identifier : (expression_statement "iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);" (assignment_expression "iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc)" identifier = (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(iVar8 + -0xc)" * (cast_expression "(int *)(iVar8 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -0xc)" ( (binary_expression "iVar8 + -0xc" identifier + number_literal) )))))) ;)) (expression_statement "FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14));" (call_expression "FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14))" identifier (argument_list "(iVar8,uVar6 | *(uint *)(iVar8 + 0x14))" ( identifier , (binary_expression "uVar6 | *(uint *)(iVar8 + 0x14)" identifier | (pointer_expression "*(uint *)(iVar8 + 0x14)" * (cast_expression "(uint *)(iVar8 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) ))))) ))) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* std::wistream& std::TEMPNAMEPLACEHOLDERVALUE(std::wistream&, wchar_t*) */\n\nwistream * std::operator>>(wistream *param_1,wchar_t *param_2)\n\n{\n  wchar_t *pwVar1;\n  int *piVar2;\n  int *piVar3;\n  char cVar4;\n  ctype *pcVar5;\n  _Ios_Iostate _Var6;\n  int iVar7;\n  wchar_t wVar8;\n  int iVar9;\n  int iVar10;\n  int local_30;\n  sentry local_21;\n  locale local_20 [16];\n  \n  wistream::sentry::sentry(&local_21,param_1,false);\n  if (local_21 == (sentry)0x0) {\n    iVar9 = *(int *)param_1;\n    _Var6 = _S_failbit;\n  }\n  else {\n    iVar9 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar9 < 1) {\n      iVar9 = 0x7fffffff;\n    }\n    locale::locale(local_20,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));\n                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */\n    pcVar5 = use_facet<std::ctype<wchar_t>>(local_20);\n    locale::~locale(local_20);\n    piVar2 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((wchar_t *)piVar2[2] < (wchar_t *)piVar2[3]) {\n      wVar8 = *(wchar_t *)piVar2[2];\n    }\n    else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar9 = iVar9 + -1;\n    iVar10 = 0;\n    while (iVar10 != iVar9) {\n      while( true ) {\n        if (wVar8 == L'\xffffffff') goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*(int *)pcVar5 + 8))(pcVar5,0x2000,wVar8);\n        local_30 = iVar10;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        pwVar1 = param_2 + 1;\n        iVar10 = iVar10 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = wVar8;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *pwVar1 = L'\0';\n          iVar9 = *(int *)param_1;\n          *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n          _Var6 = _S_eofbit;\n          goto LAB_001a92aa;\n        }\n        param_2 = pwVar1;\n        if ((wchar_t *)piVar2[3] <= (wchar_t *)piVar2[2]) break;\n        wVar8 = *(wchar_t *)piVar2[2];\n        if (iVar10 == iVar9) goto LAB_001a9218;\n      }\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar9;\n    if (wVar8 == L'\xffffffff') {\nLAB_001a9348:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      _Var6 = (-(uint)(iVar10 == 0) & 4) + _S_eofbit;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      _Var6 = _S_failbit;\n    }\n  }\nLAB_001a92aa:\n  wios::clear((wios *)(param_1 + *(int *)(iVar9 + -0xc)),\n              _Var6 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar9 + -0xc)) + 0x14));\n  return param_1;\n}\n\n" comment comment comment (ERROR "wistream * std::operator>>(wistream *param_1,wchar_t *param_2)" (binary_expression "wistream * std::operator>>(wistream *param_1,wchar_t *param_2)" (binary_expression "wistream * std" identifier * identifier) (ERROR "::operator" : : identifier) >> (parenthesized_expression "(wistream *param_1,wchar_t *param_2)" ( (comma_expression "wistream *param_1,wchar_t *param_2" (binary_expression "wistream *param_1" identifier * identifier) , (binary_expression "wchar_t *param_2" identifier * identifier)) )))) (compound_statement "{\n  wchar_t *pwVar1;\n  int *piVar2;\n  int *piVar3;\n  char cVar4;\n  ctype *pcVar5;\n  _Ios_Iostate _Var6;\n  int iVar7;\n  wchar_t wVar8;\n  int iVar9;\n  int iVar10;\n  int local_30;\n  sentry local_21;\n  locale local_20 [16];\n  \n  wistream::sentry::sentry(&local_21,param_1,false);\n  if (local_21 == (sentry)0x0) {\n    iVar9 = *(int *)param_1;\n    _Var6 = _S_failbit;\n  }\n  else {\n    iVar9 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar9 < 1) {\n      iVar9 = 0x7fffffff;\n    }\n    locale::locale(local_20,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));\n                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */\n    pcVar5 = use_facet<std::ctype<wchar_t>>(local_20);\n    locale::~locale(local_20);\n    piVar2 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((wchar_t *)piVar2[2] < (wchar_t *)piVar2[3]) {\n      wVar8 = *(wchar_t *)piVar2[2];\n    }\n    else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar9 = iVar9 + -1;\n    iVar10 = 0;\n    while (iVar10 != iVar9) {\n      while( true ) {\n        if (wVar8 == L'\xffffffff') goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*(int *)pcVar5 + 8))(pcVar5,0x2000,wVar8);\n        local_30 = iVar10;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        pwVar1 = param_2 + 1;\n        iVar10 = iVar10 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = wVar8;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *pwVar1 = L'\0';\n          iVar9 = *(int *)param_1;\n          *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n          _Var6 = _S_eofbit;\n          goto LAB_001a92aa;\n        }\n        param_2 = pwVar1;\n        if ((wchar_t *)piVar2[3] <= (wchar_t *)piVar2[2]) break;\n        wVar8 = *(wchar_t *)piVar2[2];\n        if (iVar10 == iVar9) goto LAB_001a9218;\n      }\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar9;\n    if (wVar8 == L'\xffffffff') {\nLAB_001a9348:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      _Var6 = (-(uint)(iVar10 == 0) & 4) + _S_eofbit;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      _Var6 = _S_failbit;\n    }\n  }\nLAB_001a92aa:\n  wios::clear((wios *)(param_1 + *(int *)(iVar9 + -0xc)),\n              _Var6 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar9 + -0xc)) + 0x14));\n  return param_1;\n}" { (declaration "wchar_t *pwVar1;" type_identifier (pointer_declarator "*pwVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "ctype *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "_Ios_Iostate _Var6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "wchar_t wVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "sentry local_21;" type_identifier identifier ;) (declaration "locale local_20 [16];" type_identifier (array_declarator "local_20 [16]" identifier [ number_literal ]) ;) (labeled_statement "wistream::sentry::sentry(&local_21,param_1,false);" statement_identifier : (ERROR ":" :) (labeled_statement "sentry::sentry(&local_21,param_1,false);" statement_identifier : (ERROR ":" :) (expression_statement "sentry(&local_21,param_1,false);" (call_expression "sentry(&local_21,param_1,false)" identifier (argument_list "(&local_21,param_1,false)" ( (pointer_expression "&local_21" & identifier) , identifier , false ))) ;))) (if_statement "if (local_21 == (sentry)0x0) {\n    iVar9 = *(int *)param_1;\n    _Var6 = _S_failbit;\n  }\n  else {\n    iVar9 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar9 < 1) {\n      iVar9 = 0x7fffffff;\n    }\n    locale::locale(local_20,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));\n                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */\n    pcVar5 = use_facet<std::ctype<wchar_t>>(local_20);\n    locale::~locale(local_20);\n    piVar2 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((wchar_t *)piVar2[2] < (wchar_t *)piVar2[3]) {\n      wVar8 = *(wchar_t *)piVar2[2];\n    }\n    else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar9 = iVar9 + -1;\n    iVar10 = 0;\n    while (iVar10 != iVar9) {\n      while( true ) {\n        if (wVar8 == L'\xffffffff') goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*(int *)pcVar5 + 8))(pcVar5,0x2000,wVar8);\n        local_30 = iVar10;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        pwVar1 = param_2 + 1;\n        iVar10 = iVar10 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = wVar8;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *pwVar1 = L'\0';\n          iVar9 = *(int *)param_1;\n          *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n          _Var6 = _S_eofbit;\n          goto LAB_001a92aa;\n        }\n        param_2 = pwVar1;\n        if ((wchar_t *)piVar2[3] <= (wchar_t *)piVar2[2]) break;\n        wVar8 = *(wchar_t *)piVar2[2];\n        if (iVar10 == iVar9) goto LAB_001a9218;\n      }\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar9;\n    if (wVar8 == L'\xffffffff') {\nLAB_001a9348:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      _Var6 = (-(uint)(iVar10 == 0) & 4) + _S_eofbit;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      _Var6 = _S_failbit;\n    }\n  }" if (parenthesized_expression "(local_21 == (sentry)0x0)" ( (binary_expression "local_21 == (sentry)0x0" identifier == (cast_expression "(sentry)0x0" ( (type_descriptor "sentry" type_identifier) ) number_literal)) )) (compound_statement "{\n    iVar9 = *(int *)param_1;\n    _Var6 = _S_failbit;\n  }" { (expression_statement "iVar9 = *(int *)param_1;" (assignment_expression "iVar9 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "_Var6 = _S_failbit;" (assignment_expression "_Var6 = _S_failbit" identifier = identifier) ;) }) (else_clause "else {\n    iVar9 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar9 < 1) {\n      iVar9 = 0x7fffffff;\n    }\n    locale::locale(local_20,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));\n                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */\n    pcVar5 = use_facet<std::ctype<wchar_t>>(local_20);\n    locale::~locale(local_20);\n    piVar2 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((wchar_t *)piVar2[2] < (wchar_t *)piVar2[3]) {\n      wVar8 = *(wchar_t *)piVar2[2];\n    }\n    else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar9 = iVar9 + -1;\n    iVar10 = 0;\n    while (iVar10 != iVar9) {\n      while( true ) {\n        if (wVar8 == L'\xffffffff') goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*(int *)pcVar5 + 8))(pcVar5,0x2000,wVar8);\n        local_30 = iVar10;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        pwVar1 = param_2 + 1;\n        iVar10 = iVar10 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = wVar8;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *pwVar1 = L'\0';\n          iVar9 = *(int *)param_1;\n          *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n          _Var6 = _S_eofbit;\n          goto LAB_001a92aa;\n        }\n        param_2 = pwVar1;\n        if ((wchar_t *)piVar2[3] <= (wchar_t *)piVar2[2]) break;\n        wVar8 = *(wchar_t *)piVar2[2];\n        if (iVar10 == iVar9) goto LAB_001a9218;\n      }\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar9;\n    if (wVar8 == L'\xffffffff') {\nLAB_001a9348:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      _Var6 = (-(uint)(iVar10 == 0) & 4) + _S_eofbit;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      _Var6 = _S_failbit;\n    }\n  }" else (compound_statement "{\n    iVar9 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar9 < 1) {\n      iVar9 = 0x7fffffff;\n    }\n    locale::locale(local_20,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));\n                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */\n    pcVar5 = use_facet<std::ctype<wchar_t>>(local_20);\n    locale::~locale(local_20);\n    piVar2 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((wchar_t *)piVar2[2] < (wchar_t *)piVar2[3]) {\n      wVar8 = *(wchar_t *)piVar2[2];\n    }\n    else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar9 = iVar9 + -1;\n    iVar10 = 0;\n    while (iVar10 != iVar9) {\n      while( true ) {\n        if (wVar8 == L'\xffffffff') goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*(int *)pcVar5 + 8))(pcVar5,0x2000,wVar8);\n        local_30 = iVar10;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        pwVar1 = param_2 + 1;\n        iVar10 = iVar10 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = wVar8;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *pwVar1 = L'\0';\n          iVar9 = *(int *)param_1;\n          *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n          _Var6 = _S_eofbit;\n          goto LAB_001a92aa;\n        }\n        param_2 = pwVar1;\n        if ((wchar_t *)piVar2[3] <= (wchar_t *)piVar2[2]) break;\n        wVar8 = *(wchar_t *)piVar2[2];\n        if (iVar10 == iVar9) goto LAB_001a9218;\n      }\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar9;\n    if (wVar8 == L'\xffffffff') {\nLAB_001a9348:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      _Var6 = (-(uint)(iVar10 == 0) & 4) + _S_eofbit;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      _Var6 = _S_failbit;\n    }\n  }" { (expression_statement "iVar9 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);" (assignment_expression "iVar9 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" identifier = (pointer_expression "*(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" * (cast_expression "(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 8" (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) ))))) ;) (if_statement "if (iVar9 < 1) {\n      iVar9 = 0x7fffffff;\n    }" if (parenthesized_expression "(iVar9 < 1)" ( (binary_expression "iVar9 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar9 = 0x7fffffff;\n    }" { (expression_statement "iVar9 = 0x7fffffff;" (assignment_expression "iVar9 = 0x7fffffff" identifier = number_literal) ;) })) (labeled_statement "locale::locale(local_20,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));" statement_identifier : (ERROR ":" :) (expression_statement "locale(local_20,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c));" (call_expression "locale(local_20,(locale *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c))" identifier (argument_list "(local_20,(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 "pcVar5 = use_facet<std::ctype<wchar_t>>(local_20);" (binary_expression "pcVar5 = use_facet<std::ctype<wchar_t>>(local_20)" (assignment_expression "pcVar5 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::ctype" : : identifier) < (binary_expression "wchar_t>>(local_20)" identifier >> (parenthesized_expression "(local_20)" ( identifier )))) ;) (labeled_statement "locale::~locale(local_20);" statement_identifier : (ERROR ":" :) (expression_statement "~locale(local_20);" (unary_expression "~locale(local_20)" ~ (call_expression "locale(local_20)" identifier (argument_list "(local_20)" ( identifier )))) ;)) (expression_statement "piVar2 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);" (assignment_expression "piVar2 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" identifier = (pointer_expression "*(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" * (cast_expression "(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" ( (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c" (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) ))))) ;) (if_statement "if ((wchar_t *)piVar2[2] < (wchar_t *)piVar2[3]) {\n      wVar8 = *(wchar_t *)piVar2[2];\n    }\n    else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" if (parenthesized_expression "((wchar_t *)piVar2[2] < (wchar_t *)piVar2[3])" ( (binary_expression "(wchar_t *)piVar2[2] < (wchar_t *)piVar2[3]" (cast_expression "(wchar_t *)piVar2[2]" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ])) < (cast_expression "(wchar_t *)piVar2[3]" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      wVar8 = *(wchar_t *)piVar2[2];\n    }" { (expression_statement "wVar8 = *(wchar_t *)piVar2[2];" (assignment_expression "wVar8 = *(wchar_t *)piVar2[2]" identifier = (pointer_expression "*(wchar_t *)piVar2[2]" * (cast_expression "(wchar_t *)piVar2[2]" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" else (compound_statement "{\n                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" { comment (expression_statement "wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);" (assignment_expression "wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2)" identifier = (call_expression "(**(code **)(*piVar2 + 0x24))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x24))" ( (pointer_expression "**(code **)(*piVar2 + 0x24)" * (pointer_expression "*(code **)(*piVar2 + 0x24)" * (cast_expression "(code **)(*piVar2 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x24)" ( (binary_expression "*piVar2 + 0x24" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier )))) ;) }))) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (while_statement "while (iVar10 != iVar9) {\n      while( true ) {\n        if (wVar8 == L'\xffffffff') goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*(int *)pcVar5 + 8))(pcVar5,0x2000,wVar8);\n        local_30 = iVar10;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        pwVar1 = param_2 + 1;\n        iVar10 = iVar10 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = wVar8;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *pwVar1 = L'\0';\n          iVar9 = *(int *)param_1;\n          *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n          _Var6 = _S_eofbit;\n          goto LAB_001a92aa;\n        }\n        param_2 = pwVar1;\n        if ((wchar_t *)piVar2[3] <= (wchar_t *)piVar2[2]) break;\n        wVar8 = *(wchar_t *)piVar2[2];\n        if (iVar10 == iVar9) goto LAB_001a9218;\n      }\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" while (parenthesized_expression "(iVar10 != iVar9)" ( (binary_expression "iVar10 != iVar9" identifier != identifier) )) (compound_statement "{\n      while( true ) {\n        if (wVar8 == L'\xffffffff') goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*(int *)pcVar5 + 8))(pcVar5,0x2000,wVar8);\n        local_30 = iVar10;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        pwVar1 = param_2 + 1;\n        iVar10 = iVar10 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = wVar8;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *pwVar1 = L'\0';\n          iVar9 = *(int *)param_1;\n          *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n          _Var6 = _S_eofbit;\n          goto LAB_001a92aa;\n        }\n        param_2 = pwVar1;\n        if ((wchar_t *)piVar2[3] <= (wchar_t *)piVar2[2]) break;\n        wVar8 = *(wchar_t *)piVar2[2];\n        if (iVar10 == iVar9) goto LAB_001a9218;\n      }\n      wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" { (while_statement "while( true ) {\n        if (wVar8 == L'\xffffffff') goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*(int *)pcVar5 + 8))(pcVar5,0x2000,wVar8);\n        local_30 = iVar10;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        pwVar1 = param_2 + 1;\n        iVar10 = iVar10 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = wVar8;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *pwVar1 = L'\0';\n          iVar9 = *(int *)param_1;\n          *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n          _Var6 = _S_eofbit;\n          goto LAB_001a92aa;\n        }\n        param_2 = pwVar1;\n        if ((wchar_t *)piVar2[3] <= (wchar_t *)piVar2[2]) break;\n        wVar8 = *(wchar_t *)piVar2[2];\n        if (iVar10 == iVar9) goto LAB_001a9218;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        if (wVar8 == L'\xffffffff') goto LAB_001a9348;\n                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */\n        cVar4 = (**(code **)(*(int *)pcVar5 + 8))(pcVar5,0x2000,wVar8);\n        local_30 = iVar10;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        pwVar1 = param_2 + 1;\n        iVar10 = iVar10 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = wVar8;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *pwVar1 = L'\0';\n          iVar9 = *(int *)param_1;\n          *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n          _Var6 = _S_eofbit;\n          goto LAB_001a92aa;\n        }\n        param_2 = pwVar1;\n        if ((wchar_t *)piVar2[3] <= (wchar_t *)piVar2[2]) break;\n        wVar8 = *(wchar_t *)piVar2[2];\n        if (iVar10 == iVar9) goto LAB_001a9218;\n      }" { (if_statement "if (wVar8 == L'\xffffffff') goto LAB_001a9348;" if (parenthesized_expression "(wVar8 == L'\xffffffff')" ( (binary_expression "wVar8 == L'\xffffffff'" identifier == (char_literal "L'\xffffffff'" L' escape_sequence character character character character ')) )) (goto_statement "goto LAB_001a9348;" goto statement_identifier ;)) comment (expression_statement "cVar4 = (**(code **)(*(int *)pcVar5 + 8))(pcVar5,0x2000,wVar8);" (assignment_expression "cVar4 = (**(code **)(*(int *)pcVar5 + 8))(pcVar5,0x2000,wVar8)" identifier = (call_expression "(**(code **)(*(int *)pcVar5 + 8))(pcVar5,0x2000,wVar8)" (parenthesized_expression "(**(code **)(*(int *)pcVar5 + 8))" ( (pointer_expression "**(code **)(*(int *)pcVar5 + 8)" * (pointer_expression "*(code **)(*(int *)pcVar5 + 8)" * (cast_expression "(code **)(*(int *)pcVar5 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pcVar5 + 8)" ( (binary_expression "*(int *)pcVar5 + 8" (pointer_expression "*(int *)pcVar5" * (cast_expression "(int *)pcVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pcVar5,0x2000,wVar8)" ( identifier , number_literal , identifier )))) ;) (expression_statement "local_30 = iVar10;" (assignment_expression "local_30 = iVar10" identifier = identifier) ;) (if_statement "if (cVar4 != '\0') goto LAB_001a9221;" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_001a9221;" goto statement_identifier ;)) (expression_statement "pwVar1 = param_2 + 1;" (assignment_expression "pwVar1 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) (expression_statement "*param_2 = wVar8;" (assignment_expression "*param_2 = wVar8" (pointer_expression "*param_2" * identifier) = identifier) ;) (if_statement "if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }" if (parenthesized_expression "(piVar3 < (int *)piVar2[3])" ( (binary_expression "piVar3 < (int *)piVar2[3]" identifier < (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }" { (expression_statement "iVar7 = *piVar3;" (assignment_expression "iVar7 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "piVar2[2] = (int)(piVar3 + 1);" (assignment_expression "piVar2[2] = (int)(piVar3 + 1)" (subscript_expression "piVar2[2]" identifier [ number_literal ]) = (cast_expression "(int)(piVar3 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar3 + 1)" ( (binary_expression "piVar3 + 1" identifier + number_literal) )))) ;) }) (else_clause "else {\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }" else (compound_statement "{\n                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */\n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }" { comment (expression_statement "iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);" (assignment_expression "iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2)" identifier = (call_expression "(**(code **)(*piVar2 + 0x28))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x28))" ( (pointer_expression "**(code **)(*piVar2 + 0x28)" * (pointer_expression "*(code **)(*piVar2 + 0x28)" * (cast_expression "(code **)(*piVar2 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x28)" ( (binary_expression "*piVar2 + 0x28" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier )))) ;) }))) (if_statement "if (iVar7 == -1) {\n          *pwVar1 = L'\0';\n          iVar9 = *(int *)param_1;\n          *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n          _Var6 = _S_eofbit;\n          goto LAB_001a92aa;\n        }" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (compound_statement "{\n          *pwVar1 = L'\0';\n          iVar9 = *(int *)param_1;\n          *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n          _Var6 = _S_eofbit;\n          goto LAB_001a92aa;\n        }" { (expression_statement "*pwVar1 = L'\0';" (assignment_expression "*pwVar1 = L'\0'" (pointer_expression "*pwVar1" * identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "iVar9 = *(int *)param_1;" (assignment_expression "iVar9 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8)" * (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar9 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(iVar9 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar9 + -0xc)" identifier + (pointer_expression "*(int *)(iVar9 + -0xc)" * (cast_expression "(int *)(iVar9 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -0xc)" ( (binary_expression "iVar9 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (expression_statement "_Var6 = _S_eofbit;" (assignment_expression "_Var6 = _S_eofbit" identifier = identifier) ;) (goto_statement "goto LAB_001a92aa;" goto statement_identifier ;) })) (expression_statement "param_2 = pwVar1;" (assignment_expression "param_2 = pwVar1" identifier = identifier) ;) (if_statement "if ((wchar_t *)piVar2[3] <= (wchar_t *)piVar2[2]) break;" if (parenthesized_expression "((wchar_t *)piVar2[3] <= (wchar_t *)piVar2[2])" ( (binary_expression "(wchar_t *)piVar2[3] <= (wchar_t *)piVar2[2]" (cast_expression "(wchar_t *)piVar2[3]" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ])) <= (cast_expression "(wchar_t *)piVar2[2]" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) )) (break_statement "break;" break ;)) (expression_statement "wVar8 = *(wchar_t *)piVar2[2];" (assignment_expression "wVar8 = *(wchar_t *)piVar2[2]" identifier = (pointer_expression "*(wchar_t *)piVar2[2]" * (cast_expression "(wchar_t *)piVar2[2]" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ])))) ;) (if_statement "if (iVar10 == iVar9) goto LAB_001a9218;" if (parenthesized_expression "(iVar10 == iVar9)" ( (binary_expression "iVar10 == iVar9" identifier == identifier) )) (goto_statement "goto LAB_001a9218;" goto statement_identifier ;)) })) (expression_statement "wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2);" (assignment_expression "wVar8 = (**(code **)(*piVar2 + 0x24))(piVar2)" identifier = (call_expression "(**(code **)(*piVar2 + 0x24))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x24))" ( (pointer_expression "**(code **)(*piVar2 + 0x24)" * (pointer_expression "*(code **)(*piVar2 + 0x24)" * (cast_expression "(code **)(*piVar2 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x24)" ( (binary_expression "*piVar2 + 0x24" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier )))) ;) })) (labeled_statement "LAB_001a9218:\n    local_30 = iVar9;" statement_identifier : (expression_statement "local_30 = iVar9;" (assignment_expression "local_30 = iVar9" identifier = identifier) ;)) (if_statement "if (wVar8 == L'\xffffffff') {\nLAB_001a9348:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      _Var6 = (-(uint)(iVar10 == 0) & 4) + _S_eofbit;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      _Var6 = _S_failbit;\n    }" if (parenthesized_expression "(wVar8 == L'\xffffffff')" ( (binary_expression "wVar8 == L'\xffffffff'" identifier == (char_literal "L'\xffffffff'" L' escape_sequence character character character character ')) )) (compound_statement "{\nLAB_001a9348:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      _Var6 = (-(uint)(iVar10 == 0) & 4) + _S_eofbit;\n    }" { (labeled_statement "LAB_001a9348:\n      *param_2 = L'\0';" statement_identifier : (expression_statement "*param_2 = L'\0';" (assignment_expression "*param_2 = L'\0'" (pointer_expression "*param_2" * identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;)) (expression_statement "iVar9 = *(int *)param_1;" (assignment_expression "iVar9 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8)" * (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar9 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(iVar9 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar9 + -0xc)" identifier + (pointer_expression "*(int *)(iVar9 + -0xc)" * (cast_expression "(int *)(iVar9 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -0xc)" ( (binary_expression "iVar9 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (expression_statement "_Var6 = (-(uint)(iVar10 == 0) & 4) + _S_eofbit;" (assignment_expression "_Var6 = (-(uint)(iVar10 == 0) & 4) + _S_eofbit" identifier = (binary_expression "(-(uint)(iVar10 == 0) & 4) + _S_eofbit" (parenthesized_expression "(-(uint)(iVar10 == 0) & 4)" ( (binary_expression "-(uint)(iVar10 == 0) & 4" (unary_expression "-(uint)(iVar10 == 0)" - (call_expression "(uint)(iVar10 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )))) & number_literal) )) + identifier)) ;) }) (else_clause "else {\nLAB_001a9221:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      _Var6 = _S_failbit;\n    }" else (compound_statement "{\nLAB_001a9221:\n      *param_2 = L'\0';\n      iVar9 = *(int *)param_1;\n      *(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      _Var6 = _S_failbit;\n    }" { (labeled_statement "LAB_001a9221:\n      *param_2 = L'\0';" statement_identifier : (expression_statement "*param_2 = L'\0';" (assignment_expression "*param_2 = L'\0'" (pointer_expression "*param_2" * identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;)) (expression_statement "iVar9 = *(int *)param_1;" (assignment_expression "iVar9 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8)" * (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar9 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar9 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(iVar9 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar9 + -0xc)" identifier + (pointer_expression "*(int *)(iVar9 + -0xc)" * (cast_expression "(int *)(iVar9 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -0xc)" ( (binary_expression "iVar9 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (if_statement "if (local_30 != 0) {\n        return param_1;\n      }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (compound_statement "{\n        return param_1;\n      }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "_Var6 = _S_failbit;" (assignment_expression "_Var6 = _S_failbit" identifier = identifier) ;) }))) }))) (labeled_statement "LAB_001a92aa:\n  wios::clear((wios *)(param_1 + *(int *)(iVar9 + -0xc)),\n              _Var6 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar9 + -0xc)) + 0x14));" statement_identifier : (labeled_statement "wios::clear((wios *)(param_1 + *(int *)(iVar9 + -0xc)),\n              _Var6 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar9 + -0xc)) + 0x14));" statement_identifier : (ERROR ":" :) (expression_statement "clear((wios *)(param_1 + *(int *)(iVar9 + -0xc)),\n              _Var6 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar9 + -0xc)) + 0x14));" (call_expression "clear((wios *)(param_1 + *(int *)(iVar9 + -0xc)),\n              _Var6 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar9 + -0xc)) + 0x14))" identifier (argument_list "((wios *)(param_1 + *(int *)(iVar9 + -0xc)),\n              _Var6 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar9 + -0xc)) + 0x14))" ( (cast_expression "(wios *)(param_1 + *(int *)(iVar9 + -0xc))" ( (type_descriptor "wios *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar9 + -0xc))" ( (binary_expression "param_1 + *(int *)(iVar9 + -0xc)" identifier + (pointer_expression "*(int *)(iVar9 + -0xc)" * (cast_expression "(int *)(iVar9 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -0xc)" ( (binary_expression "iVar9 + -0xc" identifier + number_literal) ))))) ))) , (binary_expression "_Var6 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar9 + -0xc)) + 0x14)" identifier | (pointer_expression "*(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar9 + -0xc)) + 0x14)" * (cast_expression "(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar9 + -0xc)) + 0x14)" ( (type_descriptor "_Ios_Iostate *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((wios *)(param_1 + *(int *)(iVar9 + -0xc)) + 0x14)" ( (binary_expression "(wios *)(param_1 + *(int *)(iVar9 + -0xc)) + 0x14" (cast_expression "(wios *)(param_1 + *(int *)(iVar9 + -0xc))" ( (type_descriptor "wios *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar9 + -0xc))" ( (binary_expression "param_1 + *(int *)(iVar9 + -0xc)" identifier + (pointer_expression "*(int *)(iVar9 + -0xc)" * (cast_expression "(int *)(iVar9 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -0xc)" ( (binary_expression "iVar9 + -0xc" identifier + number_literal) ))))) ))) + number_literal) ))))) ))) ;))) (return_statement "return param_1;" return identifier ;) }))
(translation_unit "int * FUN_001a9110(int *param_1,int *param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  char cVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int local_30;\n  char local_21;\n  undefined1 local_20 [16];\n  \n  FUN_001a7460(&local_21,param_1,0);\n  if (local_21 == '\0') {\n    iVar8 = *param_1;\n    uVar6 = 4;\n  }\n  else {\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    \n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }\nLAB_001a92aa:\n  iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);\n  FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14));\n  return param_1;\n}\n\n" (function_definition "int * FUN_001a9110(int *param_1,int *param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  char cVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int local_30;\n  char local_21;\n  undefined1 local_20 [16];\n  \n  FUN_001a7460(&local_21,param_1,0);\n  if (local_21 == '\0') {\n    iVar8 = *param_1;\n    uVar6 = 4;\n  }\n  else {\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    \n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }\nLAB_001a92aa:\n  iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);\n  FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14));\n  return param_1;\n}" primitive_type (pointer_declarator "* FUN_001a9110(int *param_1,int *param_2)" * (function_declarator "FUN_001a9110(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  char cVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int local_30;\n  char local_21;\n  undefined1 local_20 [16];\n  \n  FUN_001a7460(&local_21,param_1,0);\n  if (local_21 == '\0') {\n    iVar8 = *param_1;\n    uVar6 = 4;\n  }\n  else {\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    \n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }\nLAB_001a92aa:\n  iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);\n  FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14));\n  return param_1;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "char local_21;" primitive_type identifier ;) (declaration "undefined1 local_20 [16];" type_identifier (array_declarator "local_20 [16]" identifier [ number_literal ]) ;) (expression_statement "FUN_001a7460(&local_21,param_1,0);" (call_expression "FUN_001a7460(&local_21,param_1,0)" identifier (argument_list "(&local_21,param_1,0)" ( (pointer_expression "&local_21" & identifier) , identifier , number_literal ))) ;) (if_statement "if (local_21 == '\0') {\n    iVar8 = *param_1;\n    uVar6 = 4;\n  }\n  else {\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    \n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }" if (parenthesized_expression "(local_21 == '\0')" ( (binary_expression "local_21 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar8 = *param_1;\n    uVar6 = 4;\n  }" { (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" identifier = number_literal) ;) }) (else_clause "else {\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    \n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }" else (compound_statement "{\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    \n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }" { (expression_statement "iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);" (assignment_expression "iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8)" identifier = (pointer_expression "*(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8)" * (cast_expression "(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + *(int *)(*param_1 + -0xc) + 8)" ( (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc) + 8" (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*param_1 + -0xc)" * (cast_expression "(int *)(*param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + -0xc)" ( (binary_expression "*param_1 + -0xc" (pointer_expression "*param_1" * identifier) + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }" if (parenthesized_expression "(iVar8 < 1)" ( (binary_expression "iVar8 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar8 = 0x7fffffff;\n    }" { (expression_statement "iVar8 = 0x7fffffff;" (assignment_expression "iVar8 = 0x7fffffff" identifier = number_literal) ;) })) (expression_statement "FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);" (call_expression "FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c)" identifier (argument_list "(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c)" ( identifier , (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c" (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*param_1 + -0xc)" * (cast_expression "(int *)(*param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + -0xc)" ( (binary_expression "*param_1 + -0xc" (pointer_expression "*param_1" * identifier) + number_literal) ))))) + number_literal) ))) ;) (expression_statement "piVar5 = (int *)FUN_001d5bc0(local_20);" (assignment_expression "piVar5 = (int *)FUN_001d5bc0(local_20)" identifier = (cast_expression "(int *)FUN_001d5bc0(local_20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001d5bc0(local_20)" identifier (argument_list "(local_20)" ( identifier ))))) ;) (expression_statement "FUN_00182f00(local_20);" (call_expression "FUN_00182f00(local_20)" identifier (argument_list "(local_20)" ( identifier ))) ;) (expression_statement "piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);" (assignment_expression "piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c)" identifier = (pointer_expression "*(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c)" * (cast_expression "(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c)" ( (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c" (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*param_1 + -0xc)" * (cast_expression "(int *)(*param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + -0xc)" ( (binary_expression "*param_1 + -0xc" (pointer_expression "*param_1" * identifier) + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" if (parenthesized_expression "((int *)piVar2[2] < (int *)piVar2[3])" ( (binary_expression "(int *)piVar2[2] < (int *)piVar2[3]" (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ])) < (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar7 = *(int *)piVar2[2];\n    }" { (expression_statement "iVar7 = *(int *)piVar2[2];" (assignment_expression "iVar7 = *(int *)piVar2[2]" identifier = (pointer_expression "*(int *)piVar2[2]" * (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" else (compound_statement "{\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" { (expression_statement "iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);" (assignment_expression "iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2)" identifier = (call_expression "(**(code **)(*piVar2 + 0x24))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x24))" ( (pointer_expression "**(code **)(*piVar2 + 0x24)" * (pointer_expression "*(code **)(*piVar2 + 0x24)" * (cast_expression "(code **)(*piVar2 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x24)" ( (binary_expression "*piVar2 + 0x24" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier )))) ;) }))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (while_statement "while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" while (parenthesized_expression "(iVar9 != iVar8)" ( (binary_expression "iVar9 != iVar8" identifier != identifier) )) (compound_statement "{\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" { (while_statement "while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }" { (if_statement "if (iVar7 == -1) goto LAB_001a9348;" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (goto_statement "goto LAB_001a9348;" goto statement_identifier ;)) (expression_statement "cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);" (assignment_expression "cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7)" identifier = (call_expression "(**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7)" (parenthesized_expression "(**(code **)(*piVar5 + 8))" ( (pointer_expression "**(code **)(*piVar5 + 8)" * (pointer_expression "*(code **)(*piVar5 + 8)" * (cast_expression "(code **)(*piVar5 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 8)" ( (binary_expression "*piVar5 + 8" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,0x2000,iVar7)" ( identifier , number_literal , identifier )))) ;) (expression_statement "local_30 = iVar9;" (assignment_expression "local_30 = iVar9" identifier = identifier) ;) (if_statement "if (cVar4 != '\0') goto LAB_001a9221;" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_001a9221;" goto statement_identifier ;)) (expression_statement "piVar1 = param_2 + 1;" (assignment_expression "piVar1 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) (expression_statement "*param_2 = iVar7;" (assignment_expression "*param_2 = iVar7" (pointer_expression "*param_2" * identifier) = identifier) ;) (if_statement "if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }" if (parenthesized_expression "(piVar3 < (int *)piVar2[3])" ( (binary_expression "piVar3 < (int *)piVar2[3]" identifier < (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }" { (expression_statement "iVar7 = *piVar3;" (assignment_expression "iVar7 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "piVar2[2] = (int)(piVar3 + 1);" (assignment_expression "piVar2[2] = (int)(piVar3 + 1)" (subscript_expression "piVar2[2]" identifier [ number_literal ]) = (cast_expression "(int)(piVar3 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar3 + 1)" ( (binary_expression "piVar3 + 1" identifier + number_literal) )))) ;) }) (else_clause "else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }" else (compound_statement "{\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }" { (expression_statement "iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);" (assignment_expression "iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2)" identifier = (call_expression "(**(code **)(*piVar2 + 0x28))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x28))" ( (pointer_expression "**(code **)(*piVar2 + 0x28)" * (pointer_expression "*(code **)(*piVar2 + 0x28)" * (cast_expression "(code **)(*piVar2 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x28)" ( (binary_expression "*piVar2 + 0x28" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier )))) ;) }))) (if_statement "if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (compound_statement "{\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }" { (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" * (cast_expression "(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" ( (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc) + 8" (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(iVar8 + -0xc)" * (cast_expression "(int *)(iVar8 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -0xc)" ( (binary_expression "iVar8 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (expression_statement "uVar6 = 2;" (assignment_expression "uVar6 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_001a92aa;" goto statement_identifier ;) })) (expression_statement "param_2 = piVar1;" (assignment_expression "param_2 = piVar1" identifier = identifier) ;) (if_statement "if ((int *)piVar2[3] <= (int *)piVar2[2]) break;" if (parenthesized_expression "((int *)piVar2[3] <= (int *)piVar2[2])" ( (binary_expression "(int *)piVar2[3] <= (int *)piVar2[2]" (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ])) <= (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = *(int *)piVar2[2];" (assignment_expression "iVar7 = *(int *)piVar2[2]" identifier = (pointer_expression "*(int *)piVar2[2]" * (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ])))) ;) (if_statement "if (iVar9 == iVar8) goto LAB_001a9218;" if (parenthesized_expression "(iVar9 == iVar8)" ( (binary_expression "iVar9 == iVar8" identifier == identifier) )) (goto_statement "goto LAB_001a9218;" goto statement_identifier ;)) })) (expression_statement "iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);" (assignment_expression "iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2)" identifier = (call_expression "(**(code **)(*piVar2 + 0x24))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x24))" ( (pointer_expression "**(code **)(*piVar2 + 0x24)" * (pointer_expression "*(code **)(*piVar2 + 0x24)" * (cast_expression "(code **)(*piVar2 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x24)" ( (binary_expression "*piVar2 + 0x24" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier )))) ;) })) (labeled_statement "LAB_001a9218:\n    local_30 = iVar8;" statement_identifier : (expression_statement "local_30 = iVar8;" (assignment_expression "local_30 = iVar8" identifier = identifier) ;)) (if_statement "if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (compound_statement "{\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }" { (labeled_statement "LAB_001a9348:\n      *param_2 = 0;" statement_identifier : (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;)) (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" * (cast_expression "(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" ( (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc) + 8" (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(iVar8 + -0xc)" * (cast_expression "(int *)(iVar8 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -0xc)" ( (binary_expression "iVar8 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (expression_statement "uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;" (assignment_expression "uVar6 = (-(uint)(iVar9 == 0) & 4) + 2" identifier = (binary_expression "(-(uint)(iVar9 == 0) & 4) + 2" (parenthesized_expression "(-(uint)(iVar9 == 0) & 4)" ( (binary_expression "-(uint)(iVar9 == 0) & 4" (unary_expression "-(uint)(iVar9 == 0)" - (call_expression "(uint)(iVar9 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )))) & number_literal) )) + number_literal)) ;) }) (else_clause "else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }" else (compound_statement "{\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }" { (labeled_statement "LAB_001a9221:\n      *param_2 = 0;" statement_identifier : (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;)) (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" * (cast_expression "(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" ( (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc) + 8" (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(iVar8 + -0xc)" * (cast_expression "(int *)(iVar8 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -0xc)" ( (binary_expression "iVar8 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (if_statement "if (local_30 != 0) {\n        return param_1;\n      }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (compound_statement "{\n        return param_1;\n      }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" identifier = number_literal) ;) }))) }))) (labeled_statement "LAB_001a92aa:\n  iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);" statement_identifier : (expression_statement "iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);" (assignment_expression "iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc)" identifier = (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(iVar8 + -0xc)" * (cast_expression "(int *)(iVar8 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -0xc)" ( (binary_expression "iVar8 + -0xc" identifier + number_literal) )))))) ;)) (expression_statement "FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14));" (call_expression "FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14))" identifier (argument_list "(iVar8,uVar6 | *(uint *)(iVar8 + 0x14))" ( identifier , (binary_expression "uVar6 | *(uint *)(iVar8 + 0x14)" identifier | (pointer_expression "*(uint *)(iVar8 + 0x14)" * (cast_expression "(uint *)(iVar8 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) ))))) ))) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (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) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (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 * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (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 * IDENT) + LIT) ))))) )) (argument_list ( IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }) (else_clause else (compound_statement { (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 * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_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 IDENT + LIT) ))))) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (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 * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_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 IDENT + LIT) ))))) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) & LIT) )) + LIT)) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_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 IDENT + LIT) ))))) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) ;) (return_statement return IDENT ;) })))
(function_definition "int * FUN_001a9110(int *param_1,int *param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  char cVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int local_30;\n  char local_21;\n  undefined1 local_20 [16];\n  \n  FUN_001a7460(&local_21,param_1,0);\n  if (local_21 == '\0') {\n    iVar8 = *param_1;\n    uVar6 = 4;\n  }\n  else {\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    \n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }\nLAB_001a92aa:\n  iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);\n  FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14));\n  return param_1;\n}" (primitive_type "int") (pointer_declarator "* FUN_001a9110(int *param_1,int *param_2)" (* "*") (function_declarator "FUN_001a9110(int *param_1,int *param_2)" (identifier "FUN_001a9110") (parameter_list "(int *param_1,int *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  char cVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int local_30;\n  char local_21;\n  undefined1 local_20 [16];\n  \n  FUN_001a7460(&local_21,param_1,0);\n  if (local_21 == '\0') {\n    iVar8 = *param_1;\n    uVar6 = 4;\n  }\n  else {\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    \n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }\nLAB_001a92aa:\n  iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);\n  FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14));\n  return param_1;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "char local_21;" (primitive_type "char") (identifier "local_21") (; ";")) (declaration "undefined1 local_20 [16];" (type_identifier "undefined1") (array_declarator "local_20 [16]" (identifier "local_20") ([ "[") (number_literal "16") (] "]")) (; ";")) (expression_statement "FUN_001a7460(&local_21,param_1,0);" (call_expression "FUN_001a7460(&local_21,param_1,0)" (identifier "FUN_001a7460") (argument_list "(&local_21,param_1,0)" (( "(") (pointer_expression "&local_21" (& "&") (identifier "local_21")) (, ",") (identifier "param_1") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (local_21 == '\0') {\n    iVar8 = *param_1;\n    uVar6 = 4;\n  }\n  else {\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    \n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }" (if "if") (parenthesized_expression "(local_21 == '\0')" (( "(") (binary_expression "local_21 == '\0'" (identifier "local_21") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar8 = *param_1;\n    uVar6 = 4;\n  }" ({ "{") (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" (identifier "iVar8") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" (identifier "uVar6") (= "=") (number_literal "4")) (; ";")) (} "}")) (else_clause "else {\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    \n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }" (else "else") (compound_statement "{\n    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);\n    if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }\n    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);\n                    \n    piVar5 = (int *)FUN_001d5bc0(local_20);\n    FUN_00182f00(local_20);\n    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);\n    if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\n    iVar8 = iVar8 + -1;\n    iVar9 = 0;\n    while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }\nLAB_001a9218:\n    local_30 = iVar8;\n    if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }\n  }" ({ "{") (expression_statement "iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);" (assignment_expression "iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8)" (* "*") (cast_expression "(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + *(int *)(*param_1 + -0xc) + 8)" (( "(") (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc) + 8" (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc)" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (pointer_expression "*(int *)(*param_1 + -0xc)" (* "*") (cast_expression "(int *)(*param_1 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + -0xc)" (( "(") (binary_expression "*param_1 + -0xc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "-0xc")) () ")"))))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar8 < 1) {\n      iVar8 = 0x7fffffff;\n    }" (if "if") (parenthesized_expression "(iVar8 < 1)" (( "(") (binary_expression "iVar8 < 1" (identifier "iVar8") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      iVar8 = 0x7fffffff;\n    }" ({ "{") (expression_statement "iVar8 = 0x7fffffff;" (assignment_expression "iVar8 = 0x7fffffff" (identifier "iVar8") (= "=") (number_literal "0x7fffffff")) (; ";")) (} "}"))) (expression_statement "FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);" (call_expression "FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c)" (identifier "FUN_00182730") (argument_list "(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c)" (( "(") (identifier "local_20") (, ",") (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c" (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc)" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (pointer_expression "*(int *)(*param_1 + -0xc)" (* "*") (cast_expression "(int *)(*param_1 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + -0xc)" (( "(") (binary_expression "*param_1 + -0xc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "-0xc")) () ")"))))) (+ "+") (number_literal "0x6c")) () ")"))) (; ";")) (expression_statement "piVar5 = (int *)FUN_001d5bc0(local_20);" (assignment_expression "piVar5 = (int *)FUN_001d5bc0(local_20)" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_001d5bc0(local_20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001d5bc0(local_20)" (identifier "FUN_001d5bc0") (argument_list "(local_20)" (( "(") (identifier "local_20") () ")"))))) (; ";")) (expression_statement "FUN_00182f00(local_20);" (call_expression "FUN_00182f00(local_20)" (identifier "FUN_00182f00") (argument_list "(local_20)" (( "(") (identifier "local_20") () ")"))) (; ";")) (expression_statement "piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);" (assignment_expression "piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c)" (* "*") (cast_expression "(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c)" (( "(") (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c" (binary_expression "(int)param_1 + *(int *)(*param_1 + -0xc)" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (pointer_expression "*(int *)(*param_1 + -0xc)" (* "*") (cast_expression "(int *)(*param_1 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + -0xc)" (( "(") (binary_expression "*param_1 + -0xc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "-0xc")) () ")"))))) (+ "+") (number_literal "0x7c")) () ")"))))) (; ";")) (if_statement "if ((int *)piVar2[2] < (int *)piVar2[3]) {\n      iVar7 = *(int *)piVar2[2];\n    }\n    else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" (if "if") (parenthesized_expression "((int *)piVar2[2] < (int *)piVar2[3])" (( "(") (binary_expression "(int *)piVar2[2] < (int *)piVar2[3]" (cast_expression "(int *)piVar2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(int *)piVar2[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      iVar7 = *(int *)piVar2[2];\n    }" ({ "{") (expression_statement "iVar7 = *(int *)piVar2[2];" (assignment_expression "iVar7 = *(int *)piVar2[2]" (identifier "iVar7") (= "=") (pointer_expression "*(int *)piVar2[2]" (* "*") (cast_expression "(int *)piVar2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" (else "else") (compound_statement "{\n                    \n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" ({ "{") (expression_statement "iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);" (assignment_expression "iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2)" (identifier "iVar7") (= "=") (call_expression "(**(code **)(*piVar2 + 0x24))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x24))" (( "(") (pointer_expression "**(code **)(*piVar2 + 0x24)" (* "*") (pointer_expression "*(code **)(*piVar2 + 0x24)" (* "*") (cast_expression "(code **)(*piVar2 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 0x24)" (( "(") (binary_expression "*piVar2 + 0x24" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(piVar2)" (( "(") (identifier "piVar2") () ")")))) (; ";")) (} "}")))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (while_statement "while (iVar9 != iVar8) {\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" (while "while") (parenthesized_expression "(iVar9 != iVar8)" (( "(") (binary_expression "iVar9 != iVar8" (identifier "iVar9") (!= "!=") (identifier "iVar8")) () ")")) (compound_statement "{\n      while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }\n      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);\n    }" ({ "{") (while_statement "while( true ) {\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        if (iVar7 == -1) goto LAB_001a9348;\n                    \n        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);\n        local_30 = iVar9;\n        if (cVar4 != '\0') goto LAB_001a9221;\n        piVar1 = param_2 + 1;\n        iVar9 = iVar9 + 1;\n        piVar3 = (int *)piVar2[2];\n        *param_2 = iVar7;\n        if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }\n        if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }\n        param_2 = piVar1;\n        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;\n        iVar7 = *(int *)piVar2[2];\n        if (iVar9 == iVar8) goto LAB_001a9218;\n      }" ({ "{") (if_statement "if (iVar7 == -1) goto LAB_001a9348;" (if "if") (parenthesized_expression "(iVar7 == -1)" (( "(") (binary_expression "iVar7 == -1" (identifier "iVar7") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_001a9348;" (goto "goto") (statement_identifier "LAB_001a9348") (; ";"))) (expression_statement "cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);" (assignment_expression "cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7)" (identifier "cVar4") (= "=") (call_expression "(**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7)" (parenthesized_expression "(**(code **)(*piVar5 + 8))" (( "(") (pointer_expression "**(code **)(*piVar5 + 8)" (* "*") (pointer_expression "*(code **)(*piVar5 + 8)" (* "*") (cast_expression "(code **)(*piVar5 + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 8)" (( "(") (binary_expression "*piVar5 + 8" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(piVar5,0x2000,iVar7)" (( "(") (identifier "piVar5") (, ",") (number_literal "0x2000") (, ",") (identifier "iVar7") () ")")))) (; ";")) (expression_statement "local_30 = iVar9;" (assignment_expression "local_30 = iVar9" (identifier "local_30") (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (cVar4 != '\0') goto LAB_001a9221;" (if "if") (parenthesized_expression "(cVar4 != '\0')" (( "(") (binary_expression "cVar4 != '\0'" (identifier "cVar4") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_001a9221;" (goto "goto") (statement_identifier "LAB_001a9221") (; ";"))) (expression_statement "piVar1 = param_2 + 1;" (assignment_expression "piVar1 = param_2 + 1" (identifier "piVar1") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" (identifier "piVar3") (= "=") (cast_expression "(int *)piVar2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "*param_2 = iVar7;" (assignment_expression "*param_2 = iVar7" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar7")) (; ";")) (if_statement "if (piVar3 < (int *)piVar2[3]) {\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }\n        else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }" (if "if") (parenthesized_expression "(piVar3 < (int *)piVar2[3])" (( "(") (binary_expression "piVar3 < (int *)piVar2[3]" (identifier "piVar3") (< "<") (cast_expression "(int *)piVar2[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n          iVar7 = *piVar3;\n          piVar2[2] = (int)(piVar3 + 1);\n        }" ({ "{") (expression_statement "iVar7 = *piVar3;" (assignment_expression "iVar7 = *piVar3" (identifier "iVar7") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "piVar2[2] = (int)(piVar3 + 1);" (assignment_expression "piVar2[2] = (int)(piVar3 + 1)" (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)(piVar3 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(piVar3 + 1)" (( "(") (binary_expression "piVar3 + 1" (identifier "piVar3") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }" (else "else") (compound_statement "{\n                    \n          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);\n        }" ({ "{") (expression_statement "iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);" (assignment_expression "iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2)" (identifier "iVar7") (= "=") (call_expression "(**(code **)(*piVar2 + 0x28))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x28))" (( "(") (pointer_expression "**(code **)(*piVar2 + 0x28)" (* "*") (pointer_expression "*(code **)(*piVar2 + 0x28)" (* "*") (cast_expression "(code **)(*piVar2 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 0x28)" (( "(") (binary_expression "*piVar2 + 0x28" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(piVar2)" (( "(") (identifier "piVar2") () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar7 == -1) {\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }" (if "if") (parenthesized_expression "(iVar7 == -1)" (( "(") (binary_expression "iVar7 == -1" (identifier "iVar7") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          *piVar1 = 0;\n          iVar8 = *param_1;\n          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n          uVar6 = 2;\n          goto LAB_001a92aa;\n        }" ({ "{") (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" (identifier "iVar8") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" (* "*") (cast_expression "(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" (( "(") (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc) + 8" (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc)" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (pointer_expression "*(int *)(iVar8 + -0xc)" (* "*") (cast_expression "(int *)(iVar8 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + -0xc)" (( "(") (binary_expression "iVar8 + -0xc" (identifier "iVar8") (+ "+") (number_literal "-0xc")) () ")"))))) (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar6 = 2;" (assignment_expression "uVar6 = 2" (identifier "uVar6") (= "=") (number_literal "2")) (; ";")) (goto_statement "goto LAB_001a92aa;" (goto "goto") (statement_identifier "LAB_001a92aa") (; ";")) (} "}"))) (expression_statement "param_2 = piVar1;" (assignment_expression "param_2 = piVar1" (identifier "param_2") (= "=") (identifier "piVar1")) (; ";")) (if_statement "if ((int *)piVar2[3] <= (int *)piVar2[2]) break;" (if "if") (parenthesized_expression "((int *)piVar2[3] <= (int *)piVar2[2])" (( "(") (binary_expression "(int *)piVar2[3] <= (int *)piVar2[2]" (cast_expression "(int *)piVar2[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(int *)piVar2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar7 = *(int *)piVar2[2];" (assignment_expression "iVar7 = *(int *)piVar2[2]" (identifier "iVar7") (= "=") (pointer_expression "*(int *)piVar2[2]" (* "*") (cast_expression "(int *)piVar2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (if_statement "if (iVar9 == iVar8) goto LAB_001a9218;" (if "if") (parenthesized_expression "(iVar9 == iVar8)" (( "(") (binary_expression "iVar9 == iVar8" (identifier "iVar9") (== "==") (identifier "iVar8")) () ")")) (goto_statement "goto LAB_001a9218;" (goto "goto") (statement_identifier "LAB_001a9218") (; ";"))) (} "}"))) (expression_statement "iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);" (assignment_expression "iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2)" (identifier "iVar7") (= "=") (call_expression "(**(code **)(*piVar2 + 0x24))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x24))" (( "(") (pointer_expression "**(code **)(*piVar2 + 0x24)" (* "*") (pointer_expression "*(code **)(*piVar2 + 0x24)" (* "*") (cast_expression "(code **)(*piVar2 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 0x24)" (( "(") (binary_expression "*piVar2 + 0x24" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(piVar2)" (( "(") (identifier "piVar2") () ")")))) (; ";")) (} "}"))) (labeled_statement "LAB_001a9218:\n    local_30 = iVar8;" (statement_identifier "LAB_001a9218") (: ":") (expression_statement "local_30 = iVar8;" (assignment_expression "local_30 = iVar8" (identifier "local_30") (= "=") (identifier "iVar8")) (; ";"))) (if_statement "if (iVar7 == -1) {\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }\n    else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }" (if "if") (parenthesized_expression "(iVar7 == -1)" (( "(") (binary_expression "iVar7 == -1" (identifier "iVar7") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\nLAB_001a9348:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;\n    }" ({ "{") (labeled_statement "LAB_001a9348:\n      *param_2 = 0;" (statement_identifier "LAB_001a9348") (: ":") (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" (identifier "iVar8") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" (* "*") (cast_expression "(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" (( "(") (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc) + 8" (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc)" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (pointer_expression "*(int *)(iVar8 + -0xc)" (* "*") (cast_expression "(int *)(iVar8 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + -0xc)" (( "(") (binary_expression "iVar8 + -0xc" (identifier "iVar8") (+ "+") (number_literal "-0xc")) () ")"))))) (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;" (assignment_expression "uVar6 = (-(uint)(iVar9 == 0) & 4) + 2" (identifier "uVar6") (= "=") (binary_expression "(-(uint)(iVar9 == 0) & 4) + 2" (parenthesized_expression "(-(uint)(iVar9 == 0) & 4)" (( "(") (binary_expression "-(uint)(iVar9 == 0) & 4" (unary_expression "-(uint)(iVar9 == 0)" (- "-") (call_expression "(uint)(iVar9 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "4")) () ")")) (+ "+") (number_literal "2"))) (; ";")) (} "}")) (else_clause "else {\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }" (else "else") (compound_statement "{\nLAB_001a9221:\n      *param_2 = 0;\n      iVar8 = *param_1;\n      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;\n      if (local_30 != 0) {\n        return param_1;\n      }\n      uVar6 = 4;\n    }" ({ "{") (labeled_statement "LAB_001a9221:\n      *param_2 = 0;" (statement_identifier "LAB_001a9221") (: ":") (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" (identifier "iVar8") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" (* "*") (cast_expression "(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + *(int *)(iVar8 + -0xc) + 8)" (( "(") (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc) + 8" (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc)" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (pointer_expression "*(int *)(iVar8 + -0xc)" (* "*") (cast_expression "(int *)(iVar8 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + -0xc)" (( "(") (binary_expression "iVar8 + -0xc" (identifier "iVar8") (+ "+") (number_literal "-0xc")) () ")"))))) (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_30 != 0) {\n        return param_1;\n      }" (if "if") (parenthesized_expression "(local_30 != 0)" (( "(") (binary_expression "local_30 != 0" (identifier "local_30") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return param_1;\n      }" ({ "{") (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" (identifier "uVar6") (= "=") (number_literal "4")) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_001a92aa:\n  iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);" (statement_identifier "LAB_001a92aa") (: ":") (expression_statement "iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);" (assignment_expression "iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc)" (identifier "iVar8") (= "=") (binary_expression "(int)param_1 + *(int *)(iVar8 + -0xc)" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (pointer_expression "*(int *)(iVar8 + -0xc)" (* "*") (cast_expression "(int *)(iVar8 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + -0xc)" (( "(") (binary_expression "iVar8 + -0xc" (identifier "iVar8") (+ "+") (number_literal "-0xc")) () ")")))))) (; ";"))) (expression_statement "FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14));" (call_expression "FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14))" (identifier "FUN_001ab090") (argument_list "(iVar8,uVar6 | *(uint *)(iVar8 + 0x14))" (( "(") (identifier "iVar8") (, ",") (binary_expression "uVar6 | *(uint *)(iVar8 + 0x14)" (identifier "uVar6") (| "|") (pointer_expression "*(uint *)(iVar8 + 0x14)" (* "*") (cast_expression "(uint *)(iVar8 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")"))))) () ")"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* std::wistream& std::TEMPNAMEPLACEHOLDERVALUE(std::wistream&, wchar_t*) */

wistream * var_5::operator>>(wistream *var_2,type_1 *var_9)

{
  type_1 *pwVar1;
  int *piVar2;
  int *var_10;
  char var_8;
  type_2 *pcVar5;
  type_3 var_15;
  int var_11;
  type_1 var_7;
  int var_3;
  int var_6;
  int var_13;
  type_4 var_1;
  type_5 local_20 [16];
  
  wistream::sentry::type_4(&var_1,var_2,false);
  if (var_1 == (type_4)0x0) {
    var_3 = *(int *)var_2;
    var_15 = _S_failbit;
  }
  else {
    var_3 = *(int *)(var_2 + *(int *)(*(int *)var_2 + -0xc) + 8);
    if (var_3 < 1) {
      var_3 = 0x7fffffff;
    }
    locale::type_5(local_20,(type_5 *)(var_2 + *(int *)(*(int *)var_2 + -0xc) + 0x6c));
                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */
    pcVar5 = var_4<var_5::type_2<type_1>>(local_20);
    locale::~type_5(local_20);
    piVar2 = *(int **)(var_2 + *(int *)(*(int *)var_2 + -0xc) + 0x7c);
    if ((type_1 *)piVar2[2] < (type_1 *)piVar2[3]) {
      var_7 = *(type_1 *)piVar2[2];
    }
    else {
                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */
      var_7 = (**(type_6 **)(*piVar2 + 0x24))(piVar2);
    }
    var_3 = var_3 + -1;
    var_6 = 0;
    while (var_6 != var_3) {
      while( true ) {
        if (var_7 == L'\xffffffff') goto LAB_001a9348;
                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */
        var_8 = (**(type_6 **)(*(int *)pcVar5 + 8))(pcVar5,0x2000,var_7);
        var_13 = var_6;
        if (var_8 != '\0') goto LAB_001a9221;
        pwVar1 = var_9 + 1;
        var_6 = var_6 + 1;
        var_10 = (int *)piVar2[2];
        *var_9 = var_7;
        if (var_10 < (int *)piVar2[3]) {
          var_11 = *var_10;
          piVar2[2] = (int)(var_10 + 1);
        }
        else {
                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */
          var_11 = (**(type_6 **)(*piVar2 + 0x28))(piVar2);
        }
        if (var_11 == -1) {
          *pwVar1 = L'\0';
          var_3 = *(int *)var_2;
          *(type_7 *)(var_2 + *(int *)(var_3 + -0xc) + 8) = 0;
          var_15 = var_12;
          goto LAB_001a92aa;
        }
        var_9 = pwVar1;
        if ((type_1 *)piVar2[3] <= (type_1 *)piVar2[2]) break;
        var_7 = *(type_1 *)piVar2[2];
        if (var_6 == var_3) goto LAB_001a9218;
      }
      var_7 = (**(type_6 **)(*piVar2 + 0x24))(piVar2);
    }
LAB_001a9218:
    var_13 = var_3;
    if (var_7 == L'\xffffffff') {
LAB_001a9348:
      *var_9 = L'\0';
      var_3 = *(int *)var_2;
      *(type_7 *)(var_2 + *(int *)(var_3 + -0xc) + 8) = 0;
      var_15 = (-(uint)(var_6 == 0) & 4) + var_12;
    }
    else {
LAB_001a9221:
      *var_9 = L'\0';
      var_3 = *(int *)var_2;
      *(type_7 *)(var_2 + *(int *)(var_3 + -0xc) + 8) = 0;
      if (var_13 != 0) {
        return var_2;
      }
      var_15 = _S_failbit;
    }
  }
LAB_001a92aa:
  wios::var_14((type_8 *)(var_2 + *(int *)(var_3 + -0xc)),
              var_15 | *(type_3 *)((type_8 *)(var_2 + *(int *)(var_3 + -0xc)) + 0x14));
  return var_2;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

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

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  char cVar4;
  int *piVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int local_30;
  char local_21;
  undefined1 local_20 [16];
  
  FUN_001a7460(&local_21,param_1,0);
  if (local_21 == '\0') {
    iVar8 = *param_1;
    uVar6 = 4;
  }
  else {
    iVar8 = *(int *)((int)param_1 + *(int *)(*param_1 + -0xc) + 8);
    if (iVar8 < 1) {
      iVar8 = 0x7fffffff;
    }
    FUN_00182730(local_20,(int)param_1 + *(int *)(*param_1 + -0xc) + 0x6c);
                    /* try { // try from 001a9175 to 001a9179 has its CatchHandler @ 001a937b */
    piVar5 = (int *)FUN_001d5bc0(local_20);
    FUN_00182f00(local_20);
    piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + -0xc) + 0x7c);
    if ((int *)piVar2[2] < (int *)piVar2[3]) {
      iVar7 = *(int *)piVar2[2];
    }
    else {
                    /* try { // try from 001a932e to 001a9330 has its CatchHandler @ 001a9379 */
      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);
    }
    iVar8 = iVar8 + -1;
    iVar9 = 0;
    while (iVar9 != iVar8) {
      while( true ) {
        if (iVar7 == -1) goto LAB_001a9348;
                    /* try { // try from 001a91cd to 001a91cf has its CatchHandler @ 001a9374 */
        cVar4 = (**(code **)(*piVar5 + 8))(piVar5,0x2000,iVar7);
        local_30 = iVar9;
        if (cVar4 != '\0') goto LAB_001a9221;
        piVar1 = param_2 + 1;
        iVar9 = iVar9 + 1;
        piVar3 = (int *)piVar2[2];
        *param_2 = iVar7;
        if (piVar3 < (int *)piVar2[3]) {
          iVar7 = *piVar3;
          piVar2[2] = (int)(piVar3 + 1);
        }
        else {
                    /* try { // try from 001a92d6 to 001a9318 has its CatchHandler @ 001a9374 */
          iVar7 = (**(code **)(*piVar2 + 0x28))(piVar2);
        }
        if (iVar7 == -1) {
          *piVar1 = 0;
          iVar8 = *param_1;
          *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;
          uVar6 = 2;
          goto LAB_001a92aa;
        }
        param_2 = piVar1;
        if ((int *)piVar2[3] <= (int *)piVar2[2]) break;
        iVar7 = *(int *)piVar2[2];
        if (iVar9 == iVar8) goto LAB_001a9218;
      }
      iVar7 = (**(code **)(*piVar2 + 0x24))(piVar2);
    }
LAB_001a9218:
    local_30 = iVar8;
    if (iVar7 == -1) {
LAB_001a9348:
      *param_2 = 0;
      iVar8 = *param_1;
      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;
      uVar6 = (-(uint)(iVar9 == 0) & 4) + 2;
    }
    else {
LAB_001a9221:
      *param_2 = 0;
      iVar8 = *param_1;
      *(undefined4 *)((int)param_1 + *(int *)(iVar8 + -0xc) + 8) = 0;
      if (local_30 != 0) {
        return param_1;
      }
      uVar6 = 4;
    }
  }
LAB_001a92aa:
  iVar8 = (int)param_1 + *(int *)(iVar8 + -0xc);
  FUN_001ab090(iVar8,uVar6 | *(uint *)(iVar8 + 0x14));
  return param_1;
}

