
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int __regparm3 nextc(_Bool check_for_bad)

{
  int iVar1;
  uint uVar2;
  char *pcVar3;
  size_t sVar4;
  int iVar5;
  int iVar6;
  char *__s;
  size_t __n;
  int in_GS_OFFSET;
  bool bVar7;
  mbstate_t tmp_state;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if (gawk_mb_cur_max < 2) {
    do {
      if (lexeof != false) goto LAB_0001d4c6;
      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {
        uVar2 = (uint)*lexptr;
        if ((check_for_bad) || (*lexptr == '\0')) {
          check_bad_char(uVar2);
          uVar2 = (uint)(byte)*lexptr;
        }
        lexptr = lexptr + 1;
        uVar2 = uVar2 & 0xff;
        goto LAB_0001d4cb;
      }
      pcVar3 = get_src_buf();
    } while (pcVar3 != (char *)0x0);
  }
  else {
    do {
      __s = lexptr;
      pcVar3 = lexend;
      if (lexeof != false) goto LAB_0001d4c6;
      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {
        iVar6 = cur_ring_idx + 1;
        if (cur_ring_idx == 0x7f) {
          iVar6 = 0;
        }
        cur_ring_idx = iVar6;
        if (cur_char_ring[iVar6] != '\0') goto LAB_0001d5ea;
        __n = 0;
        goto LAB_0001d589;
      }
      pcVar3 = get_src_buf();
    } while (pcVar3 != (char *)0x0);
  }
  uVar2 = 0xfffff830;
LAB_0001d4cb:
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return uVar2;
  while( true ) {
    bVar7 = iVar6 != 0x7f;
    cur_char_ring[iVar6] = (char)__n;
    iVar5 = iVar6 + 1;
    iVar6 = 0;
    if (bVar7) {
      iVar6 = iVar5;
    }
    if (pcVar3 <= __s + __n) break;
LAB_0001d589:
    tmp_state.__value = cur_mbstate.__value;
    tmp_state.__count = cur_mbstate.__count;
    __n = __n + 1;
    sVar4 = mbrtowc((wchar_t *)0x0,__s,__n,(mbstate_t *)&tmp_state);
    if (0xfffffffc < sVar4 - 2) {
      cur_char_ring[iVar6] = '\x01';
      break;
    }
    if (sVar4 != 0xfffffffe) {
      cur_char_ring[iVar6] = (char)sVar4;
      break;
    }
  }
  cur_mbstate.__count = tmp_state.__count;
  iVar5 = iVar6 + 1;
  cur_mbstate.__value = tmp_state.__value;
  if (iVar6 == 0x7f) {
    iVar5 = 0;
  }
  cur_char_ring[iVar5] = '\0';
LAB_0001d5ea:
  uVar2 = (uint)*__s;
  if ((check_for_bad) || (*__s == '\0')) {
    check_bad_char(uVar2);
    uVar2 = (uint)(byte)*lexptr;
    __s = lexptr;
  }
  lexptr = __s + 1;
  uVar2 = uVar2 & 0xff;
  goto LAB_0001d4cb;
LAB_0001d4c6:
  uVar2 = 0xfffffc18;
  goto LAB_0001d4cb;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

uint __regparm3 FUN_0001d470(char param_1)

{
  byte *pbVar1;
  byte bVar2;
  uint uVar3;
  int iVar4;
  size_t sVar5;
  int iVar6;
  byte *__s;
  size_t __n;
  int in_GS_OFFSET;
  bool bVar7;
  mbstate_t local_28;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x1d479;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (DAT_000c49c0 < 2) {
    do {
      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;
      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {
        bVar2 = *DAT_000c0f20;
        if ((param_1 != '\0') || (bVar2 == 0)) {
          FUN_0001b680();
          bVar2 = *DAT_000c0f20;
        }
        DAT_000c0f20 = DAT_000c0f20 + 1;
        uVar3 = (uint)bVar2;
        goto LAB_0001d4cb;
      }
      iVar4 = FUN_0001cc70();
    } while (iVar4 != 0);
  }
  else {
    do {
      __s = DAT_000c0f20;
      pbVar1 = DAT_000c0f1c;
      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;
      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {
        iVar4 = DAT_000c0db4 + 1;
        if (DAT_000c0db4 == 0x7f) {
          iVar4 = 0;
        }
        DAT_000c0db4 = iVar4;
        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;
        __n = 0;
        goto LAB_0001d589;
      }
      iVar4 = FUN_0001cc70();
    } while (iVar4 != 0);
  }
  uVar3 = 0xfffff830;
LAB_0001d4cb:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_00087be0();
  }
  return uVar3;
  while( true ) {
    bVar7 = iVar4 != 0x7f;
    (&DAT_000c0dc0)[iVar4] = (char)__n;
    iVar6 = iVar4 + 1;
    iVar4 = 0;
    if (bVar7) {
      iVar4 = iVar6;
    }
    if (pbVar1 <= __s + __n) break;
LAB_0001d589:
    local_28.__value = DAT_000c0e44;
    local_28.__count = DAT_000c0e40;
    __n = __n + 1;
    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);
    if (0xfffffffc < sVar5 - 2) {
      (&DAT_000c0dc0)[iVar4] = 1;
      break;
    }
    if (sVar5 != 0xfffffffe) {
      (&DAT_000c0dc0)[iVar4] = (char)sVar5;
      break;
    }
  }
  DAT_000c0e40 = local_28.__count;
  iVar6 = iVar4 + 1;
  DAT_000c0e44 = local_28.__value;
  if (iVar4 == 0x7f) {
    iVar6 = 0;
  }
  (&DAT_000c0dc0)[iVar6] = 0;
LAB_0001d5ea:
  bVar2 = *__s;
  if ((param_1 != '\0') || (bVar2 == 0)) {
    FUN_0001b680();
    bVar2 = *DAT_000c0f20;
    __s = DAT_000c0f20;
  }
  DAT_000c0f20 = __s + 1;
  uVar3 = (uint)bVar2;
  goto LAB_0001d4cb;
LAB_0001d4c6:
  uVar3 = 0xfffffc18;
  goto LAB_0001d4cb;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00016f50
ADD EBX,0xa186b
SUB ESP,0x2c
MOV dword ptr [ESP + 0x4],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x1c],EAX
XOR EAX,EAX
LEA EAX,[EBX + 0x5cdc]
CMP dword ptr [EAX],0x1
JG 0x0001d4bd
JMP 0x0001d507
MOV ESI,dword ptr [EBX + 0x223c]
TEST ESI,ESI
JZ 0x0001d4b4
MOV EDI,dword ptr [EBX + 0x2238]
CMP ESI,EDI
JC 0x0001d520
CALL 0x0001cc70
TEST EAX,EAX
JZ 0x0001d518
CMP byte ptr [EBX + 0x222c],0x0
JZ 0x0001d4a0
MOV EAX,0xfffffc18
MOV ECX,dword ptr [ESP + 0x1c]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x0001d659
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,dword ptr [EBX + 0x223c]
TEST EDX,EDX
JZ 0x0001d4fe
CMP EDX,dword ptr [EBX + 0x2238]
JC 0x0001d620
CALL 0x0001cc70
TEST EAX,EAX
JZ 0x0001d518
CMP byte ptr [EBX + 0x222c],0x0
JZ 0x0001d4e8
JMP 0x0001d4c6
MOV EAX,0xfffff830
JMP 0x0001d4cb
MOV EAX,dword ptr [EBX + 0x20d0]
LEA EBP,[EAX + 0x1]
CMP EAX,0x7f
MOV EAX,0x0
CMOVZ EBP,EAX
CMP byte ptr [EBX + EBP*0x1 + 0x20dc],0x0
MOV dword ptr [EBX + 0x20d0],EBP
JNZ 0x0001d5ea
LEA EAX,[ESP + 0x14]
XOR ECX,ECX
MOV dword ptr [ESP + 0xc],EDI
MOV EDI,ECX
MOV dword ptr [ESP + 0x8],EAX
JMP 0x0001d589
CMP EAX,-0x2
JNZ 0x0001d64d
MOV EAX,EDI
CMP EBP,0x7f
MOV byte ptr [EBX + EBP*0x1 + 0x20dc],AL
LEA EAX,[EBP + 0x1]
MOV EBP,0x0
CMOVNZ EBP,EAX
LEA EAX,[ESI + EDI*0x1]
CMP dword ptr [ESP + 0xc],EAX
JBE 0x0001d5c0
MOV EDX,dword ptr [EBX + 0x2160]
MOV EAX,dword ptr [EBX + 0x215c]
ADD EDI,0x1
MOV dword ptr [ESP + 0x18],EDX
MOV dword ptr [ESP + 0x14],EAX
PUSH dword ptr [ESP + 0x8]
PUSH EDI
PUSH ESI
PUSH 0x0
CALL 0x000140f0
LEA EDX,[EAX + -0x2]
ADD ESP,0x10
CMP EDX,-0x4
JBE 0x0001d560
MOV byte ptr [EBX + EBP*0x1 + 0x20dc],0x1
MOV EAX,dword ptr [ESP + 0x14]
MOV EDX,dword ptr [ESP + 0x18]
CMP EBP,0x7f
MOV dword ptr [EBX + 0x215c],EAX
LEA EAX,[EBP + 0x1]
MOV dword ptr [EBX + 0x2160],EDX
MOV EDX,0x0
CMOVZ EAX,EDX
MOV byte ptr [EBX + EAX*0x1 + 0x20dc],0x0
CMP byte ptr [ESP + 0x4],0x0
MOVSX EAX,byte ptr [ESI]
JNZ 0x0001d5f8
TEST AL,AL
JNZ 0x0001d606
CALL 0x0001b680
MOV ESI,dword ptr [EBX + 0x223c]
MOVZX EAX,byte ptr [ESI]
ADD ESI,0x1
MOVZX EAX,AL
MOV dword ptr [EBX + 0x223c],ESI
JMP 0x0001d4cb
CMP byte ptr [ESP + 0x4],0x0
MOVSX EAX,byte ptr [EDX]
JNZ 0x0001d62e
TEST AL,AL
JNZ 0x0001d63c
CALL 0x0001b680
MOV EDX,dword ptr [EBX + 0x223c]
MOVZX EAX,byte ptr [EDX]
ADD EDX,0x1
MOVZX EAX,AL
MOV dword ptr [EBX + 0x223c],EDX
JMP 0x0001d4cb
MOV byte ptr [EBX + EBP*0x1 + 0x20dc],AL
JMP 0x0001d5c0
CALL 0x00087be0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nuint __regparm3 FUN_0001d470(char param_1)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  size_t sVar5;\n  int iVar6;\n  byte *__s;\n  size_t __n;\n  int in_GS_OFFSET;\n  bool bVar7;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d479;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (DAT_000c49c0 < 2) {\n    do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  else {\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  uVar3 = 0xfffff830;\nLAB_0001d4cb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00087be0();\n  }\n  return uVar3;\n  while( true ) {\n    bVar7 = iVar4 != 0x7f;\n    (&DAT_000c0dc0)[iVar4] = (char)__n;\n    iVar6 = iVar4 + 1;\n    iVar4 = 0;\n    if (bVar7) {\n      iVar4 = iVar6;\n    }\n    if (pbVar1 <= __s + __n) break;\nLAB_0001d589:\n    local_28.__value = DAT_000c0e44;\n    local_28.__count = DAT_000c0e40;\n    __n = __n + 1;\n    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);\n    if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }\n    if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }\n  }\n  DAT_000c0e40 = local_28.__count;\n  iVar6 = iVar4 + 1;\n  DAT_000c0e44 = local_28.__value;\n  if (iVar4 == 0x7f) {\n    iVar6 = 0;\n  }\n  (&DAT_000c0dc0)[iVar6] = 0;\nLAB_0001d5ea:\n  bVar2 = *__s;\n  if ((param_1 != '\0') || (bVar2 == 0)) {\n    FUN_0001b680();\n    bVar2 = *DAT_000c0f20;\n    __s = DAT_000c0f20;\n  }\n  DAT_000c0f20 = __s + 1;\n  uVar3 = (uint)bVar2;\n  goto LAB_0001d4cb;\nLAB_0001d4c6:\n  uVar3 = 0xfffffc18;\n  goto LAB_0001d4cb;\n}\n\n" comment (function_definition "uint __regparm3 FUN_0001d470(char param_1)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  size_t sVar5;\n  int iVar6;\n  byte *__s;\n  size_t __n;\n  int in_GS_OFFSET;\n  bool bVar7;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d479;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (DAT_000c49c0 < 2) {\n    do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  else {\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  uVar3 = 0xfffff830;\nLAB_0001d4cb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00087be0();\n  }\n  return uVar3;\n  while( true ) {\n    bVar7 = iVar4 != 0x7f;\n    (&DAT_000c0dc0)[iVar4] = (char)__n;\n    iVar6 = iVar4 + 1;\n    iVar4 = 0;\n    if (bVar7) {\n      iVar4 = iVar6;\n    }\n    if (pbVar1 <= __s + __n) break;\nLAB_0001d589:\n    local_28.__value = DAT_000c0e44;\n    local_28.__count = DAT_000c0e40;\n    __n = __n + 1;\n    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);\n    if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }\n    if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }\n  }\n  DAT_000c0e40 = local_28.__count;\n  iVar6 = iVar4 + 1;\n  DAT_000c0e44 = local_28.__value;\n  if (iVar4 == 0x7f) {\n    iVar6 = 0;\n  }\n  (&DAT_000c0dc0)[iVar6] = 0;\nLAB_0001d5ea:\n  bVar2 = *__s;\n  if ((param_1 != '\0') || (bVar2 == 0)) {\n    FUN_0001b680();\n    bVar2 = *DAT_000c0f20;\n    __s = DAT_000c0f20;\n  }\n  DAT_000c0f20 = __s + 1;\n  uVar3 = (uint)bVar2;\n  goto LAB_0001d4cb;\nLAB_0001d4c6:\n  uVar3 = 0xfffffc18;\n  goto LAB_0001d4cb;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0001d470(char param_1)" identifier (parameter_list "(char param_1)" ( (parameter_declaration "char param_1" primitive_type identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  size_t sVar5;\n  int iVar6;\n  byte *__s;\n  size_t __n;\n  int in_GS_OFFSET;\n  bool bVar7;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d479;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (DAT_000c49c0 < 2) {\n    do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  else {\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  uVar3 = 0xfffff830;\nLAB_0001d4cb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00087be0();\n  }\n  return uVar3;\n  while( true ) {\n    bVar7 = iVar4 != 0x7f;\n    (&DAT_000c0dc0)[iVar4] = (char)__n;\n    iVar6 = iVar4 + 1;\n    iVar4 = 0;\n    if (bVar7) {\n      iVar4 = iVar6;\n    }\n    if (pbVar1 <= __s + __n) break;\nLAB_0001d589:\n    local_28.__value = DAT_000c0e44;\n    local_28.__count = DAT_000c0e40;\n    __n = __n + 1;\n    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);\n    if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }\n    if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }\n  }\n  DAT_000c0e40 = local_28.__count;\n  iVar6 = iVar4 + 1;\n  DAT_000c0e44 = local_28.__value;\n  if (iVar4 == 0x7f) {\n    iVar6 = 0;\n  }\n  (&DAT_000c0dc0)[iVar6] = 0;\nLAB_0001d5ea:\n  bVar2 = *__s;\n  if ((param_1 != '\0') || (bVar2 == 0)) {\n    FUN_0001b680();\n    bVar2 = *DAT_000c0f20;\n    __s = DAT_000c0f20;\n  }\n  DAT_000c0f20 = __s + 1;\n  uVar3 = (uint)bVar2;\n  goto LAB_0001d4cb;\nLAB_0001d4c6:\n  uVar3 = 0xfffffc18;\n  goto LAB_0001d4cb;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "mbstate_t local_28;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1d479;" (assignment_expression "uStack_14 = 0x1d479" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (DAT_000c49c0 < 2) {\n    do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  else {\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }" if (parenthesized_expression "(DAT_000c49c0 < 2)" ( (binary_expression "DAT_000c49c0 < 2" identifier < number_literal) )) (compound_statement "{\n    do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }" { (do_statement "do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);" do (compound_statement "{\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    }" { (if_statement "if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;" if (parenthesized_expression "(DAT_000c0f10 != '\0')" ( (binary_expression "DAT_000c0f10 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001d4c6;" goto statement_identifier ;)) (if_statement "if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }" if (parenthesized_expression "((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c))" ( (binary_expression "(DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)" (parenthesized_expression "(DAT_000c0f20 != (byte *)0x0)" ( (binary_expression "DAT_000c0f20 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(DAT_000c0f20 < DAT_000c0f1c)" ( (binary_expression "DAT_000c0f20 < DAT_000c0f1c" identifier < identifier) ))) )) (compound_statement "{\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }" { (expression_statement "bVar2 = *DAT_000c0f20;" (assignment_expression "bVar2 = *DAT_000c0f20" identifier = (pointer_expression "*DAT_000c0f20" * identifier)) ;) (if_statement "if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }" if (parenthesized_expression "((param_1 != '\0') || (bVar2 == 0))" ( (binary_expression "(param_1 != '\0') || (bVar2 == 0)" (parenthesized_expression "(param_1 != '\0')" ( (binary_expression "param_1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }" { (expression_statement "FUN_0001b680();" (call_expression "FUN_0001b680()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar2 = *DAT_000c0f20;" (assignment_expression "bVar2 = *DAT_000c0f20" identifier = (pointer_expression "*DAT_000c0f20" * identifier)) ;) })) (expression_statement "DAT_000c0f20 = DAT_000c0f20 + 1;" (assignment_expression "DAT_000c0f20 = DAT_000c0f20 + 1" identifier = (binary_expression "DAT_000c0f20 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = (uint)bVar2;" (assignment_expression "uVar3 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_0001d4cb;" goto statement_identifier ;) })) (expression_statement "iVar4 = FUN_0001cc70();" (assignment_expression "iVar4 = FUN_0001cc70()" identifier = (call_expression "FUN_0001cc70()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }" else (compound_statement "{\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }" { (do_statement "do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);" do (compound_statement "{\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    }" { (expression_statement "__s = DAT_000c0f20;" (assignment_expression "__s = DAT_000c0f20" identifier = identifier) ;) (expression_statement "pbVar1 = DAT_000c0f1c;" (assignment_expression "pbVar1 = DAT_000c0f1c" identifier = identifier) ;) (if_statement "if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;" if (parenthesized_expression "(DAT_000c0f10 != '\0')" ( (binary_expression "DAT_000c0f10 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001d4c6;" goto statement_identifier ;)) (if_statement "if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }" if (parenthesized_expression "((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c))" ( (binary_expression "(DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)" (parenthesized_expression "(DAT_000c0f20 != (byte *)0x0)" ( (binary_expression "DAT_000c0f20 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(DAT_000c0f20 < DAT_000c0f1c)" ( (binary_expression "DAT_000c0f20 < DAT_000c0f1c" identifier < identifier) ))) )) (compound_statement "{\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }" { (expression_statement "iVar4 = DAT_000c0db4 + 1;" (assignment_expression "iVar4 = DAT_000c0db4 + 1" identifier = (binary_expression "DAT_000c0db4 + 1" identifier + number_literal)) ;) (if_statement "if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }" if (parenthesized_expression "(DAT_000c0db4 == 0x7f)" ( (binary_expression "DAT_000c0db4 == 0x7f" identifier == number_literal) )) (compound_statement "{\n          iVar4 = 0;\n        }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) })) (expression_statement "DAT_000c0db4 = iVar4;" (assignment_expression "DAT_000c0db4 = iVar4" identifier = identifier) ;) (if_statement "if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;" if (parenthesized_expression "((&DAT_000c0dc0)[iVar4] != '\0')" ( (binary_expression "(&DAT_000c0dc0)[iVar4] != '\0'" (subscript_expression "(&DAT_000c0dc0)[iVar4]" (parenthesized_expression "(&DAT_000c0dc0)" ( (pointer_expression "&DAT_000c0dc0" & identifier) )) [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001d5ea;" goto statement_identifier ;)) (expression_statement "__n = 0;" (assignment_expression "__n = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0001d589;" goto statement_identifier ;) })) (expression_statement "iVar4 = FUN_0001cc70();" (assignment_expression "iVar4 = FUN_0001cc70()" identifier = (call_expression "FUN_0001cc70()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) }))) (expression_statement "uVar3 = 0xfffff830;" (assignment_expression "uVar3 = 0xfffff830" identifier = number_literal) ;) (labeled_statement "LAB_0001d4cb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00087be0();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00087be0();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00087be0();\n  }" { comment (expression_statement "FUN_00087be0();" (call_expression "FUN_00087be0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar3;" return identifier ;) (while_statement "while( true ) {\n    bVar7 = iVar4 != 0x7f;\n    (&DAT_000c0dc0)[iVar4] = (char)__n;\n    iVar6 = iVar4 + 1;\n    iVar4 = 0;\n    if (bVar7) {\n      iVar4 = iVar6;\n    }\n    if (pbVar1 <= __s + __n) break;\nLAB_0001d589:\n    local_28.__value = DAT_000c0e44;\n    local_28.__count = DAT_000c0e40;\n    __n = __n + 1;\n    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);\n    if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }\n    if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    bVar7 = iVar4 != 0x7f;\n    (&DAT_000c0dc0)[iVar4] = (char)__n;\n    iVar6 = iVar4 + 1;\n    iVar4 = 0;\n    if (bVar7) {\n      iVar4 = iVar6;\n    }\n    if (pbVar1 <= __s + __n) break;\nLAB_0001d589:\n    local_28.__value = DAT_000c0e44;\n    local_28.__count = DAT_000c0e40;\n    __n = __n + 1;\n    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);\n    if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }\n    if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }\n  }" { (expression_statement "bVar7 = iVar4 != 0x7f;" (assignment_expression "bVar7 = iVar4 != 0x7f" identifier = (binary_expression "iVar4 != 0x7f" identifier != number_literal)) ;) (expression_statement "(&DAT_000c0dc0)[iVar4] = (char)__n;" (assignment_expression "(&DAT_000c0dc0)[iVar4] = (char)__n" (subscript_expression "(&DAT_000c0dc0)[iVar4]" (parenthesized_expression "(&DAT_000c0dc0)" ( (pointer_expression "&DAT_000c0dc0" & identifier) )) [ identifier ]) = (cast_expression "(char)__n" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar6 = iVar4 + 1;" (assignment_expression "iVar6 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (if_statement "if (bVar7) {\n      iVar4 = iVar6;\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      iVar4 = iVar6;\n    }" { (expression_statement "iVar4 = iVar6;" (assignment_expression "iVar4 = iVar6" identifier = identifier) ;) })) (if_statement "if (pbVar1 <= __s + __n) break;" if (parenthesized_expression "(pbVar1 <= __s + __n)" ( (binary_expression "pbVar1 <= __s + __n" identifier <= (binary_expression "__s + __n" identifier + identifier)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0001d589:\n    local_28.__value = DAT_000c0e44;" statement_identifier : (expression_statement "local_28.__value = DAT_000c0e44;" (assignment_expression "local_28.__value = DAT_000c0e44" (field_expression "local_28.__value" identifier . field_identifier) = identifier) ;)) (expression_statement "local_28.__count = DAT_000c0e40;" (assignment_expression "local_28.__count = DAT_000c0e40" (field_expression "local_28.__count" identifier . field_identifier) = identifier) ;) (expression_statement "__n = __n + 1;" (assignment_expression "__n = __n + 1" identifier = (binary_expression "__n + 1" identifier + number_literal)) ;) (expression_statement "sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);" (assignment_expression "sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,__n,&local_28)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }" if (parenthesized_expression "(0xfffffffc < sVar5 - 2)" ( (binary_expression "0xfffffffc < sVar5 - 2" number_literal < (binary_expression "sVar5 - 2" identifier - number_literal)) )) (compound_statement "{\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }" { (expression_statement "(&DAT_000c0dc0)[iVar4] = 1;" (assignment_expression "(&DAT_000c0dc0)[iVar4] = 1" (subscript_expression "(&DAT_000c0dc0)[iVar4]" (parenthesized_expression "(&DAT_000c0dc0)" ( (pointer_expression "&DAT_000c0dc0" & identifier) )) [ identifier ]) = number_literal) ;) (break_statement "break;" break ;) })) (if_statement "if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }" if (parenthesized_expression "(sVar5 != 0xfffffffe)" ( (binary_expression "sVar5 != 0xfffffffe" identifier != number_literal) )) (compound_statement "{\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }" { (expression_statement "(&DAT_000c0dc0)[iVar4] = (char)sVar5;" (assignment_expression "(&DAT_000c0dc0)[iVar4] = (char)sVar5" (subscript_expression "(&DAT_000c0dc0)[iVar4]" (parenthesized_expression "(&DAT_000c0dc0)" ( (pointer_expression "&DAT_000c0dc0" & identifier) )) [ identifier ]) = (cast_expression "(char)sVar5" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (break_statement "break;" break ;) })) })) (expression_statement "DAT_000c0e40 = local_28.__count;" (assignment_expression "DAT_000c0e40 = local_28.__count" identifier = (field_expression "local_28.__count" identifier . field_identifier)) ;) (expression_statement "iVar6 = iVar4 + 1;" (assignment_expression "iVar6 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "DAT_000c0e44 = local_28.__value;" (assignment_expression "DAT_000c0e44 = local_28.__value" identifier = (field_expression "local_28.__value" identifier . field_identifier)) ;) (if_statement "if (iVar4 == 0x7f) {\n    iVar6 = 0;\n  }" if (parenthesized_expression "(iVar4 == 0x7f)" ( (binary_expression "iVar4 == 0x7f" identifier == number_literal) )) (compound_statement "{\n    iVar6 = 0;\n  }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) })) (expression_statement "(&DAT_000c0dc0)[iVar6] = 0;" (assignment_expression "(&DAT_000c0dc0)[iVar6] = 0" (subscript_expression "(&DAT_000c0dc0)[iVar6]" (parenthesized_expression "(&DAT_000c0dc0)" ( (pointer_expression "&DAT_000c0dc0" & identifier) )) [ identifier ]) = number_literal) ;) (labeled_statement "LAB_0001d5ea:\n  bVar2 = *__s;" statement_identifier : (expression_statement "bVar2 = *__s;" (assignment_expression "bVar2 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;)) (if_statement "if ((param_1 != '\0') || (bVar2 == 0)) {\n    FUN_0001b680();\n    bVar2 = *DAT_000c0f20;\n    __s = DAT_000c0f20;\n  }" if (parenthesized_expression "((param_1 != '\0') || (bVar2 == 0))" ( (binary_expression "(param_1 != '\0') || (bVar2 == 0)" (parenthesized_expression "(param_1 != '\0')" ( (binary_expression "param_1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    FUN_0001b680();\n    bVar2 = *DAT_000c0f20;\n    __s = DAT_000c0f20;\n  }" { (expression_statement "FUN_0001b680();" (call_expression "FUN_0001b680()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar2 = *DAT_000c0f20;" (assignment_expression "bVar2 = *DAT_000c0f20" identifier = (pointer_expression "*DAT_000c0f20" * identifier)) ;) (expression_statement "__s = DAT_000c0f20;" (assignment_expression "__s = DAT_000c0f20" identifier = identifier) ;) })) (expression_statement "DAT_000c0f20 = __s + 1;" (assignment_expression "DAT_000c0f20 = __s + 1" identifier = (binary_expression "__s + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = (uint)bVar2;" (assignment_expression "uVar3 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_0001d4cb;" goto statement_identifier ;) (labeled_statement "LAB_0001d4c6:\n  uVar3 = 0xfffffc18;" statement_identifier : (expression_statement "uVar3 = 0xfffffc18;" (assignment_expression "uVar3 = 0xfffffc18" identifier = number_literal) ;)) (goto_statement "goto LAB_0001d4cb;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3 nextc(_Bool check_for_bad)\n\n{\n  int iVar1;\n  uint uVar2;\n  char *pcVar3;\n  size_t sVar4;\n  int iVar5;\n  int iVar6;\n  char *__s;\n  size_t __n;\n  int in_GS_OFFSET;\n  bool bVar7;\n  mbstate_t tmp_state;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (gawk_mb_cur_max < 2) {\n    do {\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        uVar2 = (uint)*lexptr;\n        if ((check_for_bad) || (*lexptr == '\0')) {\n          check_bad_char(uVar2);\n          uVar2 = (uint)(byte)*lexptr;\n        }\n        lexptr = lexptr + 1;\n        uVar2 = uVar2 & 0xff;\n        goto LAB_0001d4cb;\n      }\n      pcVar3 = get_src_buf();\n    } while (pcVar3 != (char *)0x0);\n  }\n  else {\n    do {\n      __s = lexptr;\n      pcVar3 = lexend;\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        iVar6 = cur_ring_idx + 1;\n        if (cur_ring_idx == 0x7f) {\n          iVar6 = 0;\n        }\n        cur_ring_idx = iVar6;\n        if (cur_char_ring[iVar6] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      pcVar3 = get_src_buf();\n    } while (pcVar3 != (char *)0x0);\n  }\n  uVar2 = 0xfffff830;\nLAB_0001d4cb:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return uVar2;\n  while( true ) {\n    bVar7 = iVar6 != 0x7f;\n    cur_char_ring[iVar6] = (char)__n;\n    iVar5 = iVar6 + 1;\n    iVar6 = 0;\n    if (bVar7) {\n      iVar6 = iVar5;\n    }\n    if (pcVar3 <= __s + __n) break;\nLAB_0001d589:\n    tmp_state.__value = cur_mbstate.__value;\n    tmp_state.__count = cur_mbstate.__count;\n    __n = __n + 1;\n    sVar4 = mbrtowc((wchar_t *)0x0,__s,__n,(mbstate_t *)&tmp_state);\n    if (0xfffffffc < sVar4 - 2) {\n      cur_char_ring[iVar6] = '\x01';\n      break;\n    }\n    if (sVar4 != 0xfffffffe) {\n      cur_char_ring[iVar6] = (char)sVar4;\n      break;\n    }\n  }\n  cur_mbstate.__count = tmp_state.__count;\n  iVar5 = iVar6 + 1;\n  cur_mbstate.__value = tmp_state.__value;\n  if (iVar6 == 0x7f) {\n    iVar5 = 0;\n  }\n  cur_char_ring[iVar5] = '\0';\nLAB_0001d5ea:\n  uVar2 = (uint)*__s;\n  if ((check_for_bad) || (*__s == '\0')) {\n    check_bad_char(uVar2);\n    uVar2 = (uint)(byte)*lexptr;\n    __s = lexptr;\n  }\n  lexptr = __s + 1;\n  uVar2 = uVar2 & 0xff;\n  goto LAB_0001d4cb;\nLAB_0001d4c6:\n  uVar2 = 0xfffffc18;\n  goto LAB_0001d4cb;\n}\n\n" comment (function_definition "int __regparm3 nextc(_Bool check_for_bad)\n\n{\n  int iVar1;\n  uint uVar2;\n  char *pcVar3;\n  size_t sVar4;\n  int iVar5;\n  int iVar6;\n  char *__s;\n  size_t __n;\n  int in_GS_OFFSET;\n  bool bVar7;\n  mbstate_t tmp_state;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (gawk_mb_cur_max < 2) {\n    do {\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        uVar2 = (uint)*lexptr;\n        if ((check_for_bad) || (*lexptr == '\0')) {\n          check_bad_char(uVar2);\n          uVar2 = (uint)(byte)*lexptr;\n        }\n        lexptr = lexptr + 1;\n        uVar2 = uVar2 & 0xff;\n        goto LAB_0001d4cb;\n      }\n      pcVar3 = get_src_buf();\n    } while (pcVar3 != (char *)0x0);\n  }\n  else {\n    do {\n      __s = lexptr;\n      pcVar3 = lexend;\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        iVar6 = cur_ring_idx + 1;\n        if (cur_ring_idx == 0x7f) {\n          iVar6 = 0;\n        }\n        cur_ring_idx = iVar6;\n        if (cur_char_ring[iVar6] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      pcVar3 = get_src_buf();\n    } while (pcVar3 != (char *)0x0);\n  }\n  uVar2 = 0xfffff830;\nLAB_0001d4cb:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return uVar2;\n  while( true ) {\n    bVar7 = iVar6 != 0x7f;\n    cur_char_ring[iVar6] = (char)__n;\n    iVar5 = iVar6 + 1;\n    iVar6 = 0;\n    if (bVar7) {\n      iVar6 = iVar5;\n    }\n    if (pcVar3 <= __s + __n) break;\nLAB_0001d589:\n    tmp_state.__value = cur_mbstate.__value;\n    tmp_state.__count = cur_mbstate.__count;\n    __n = __n + 1;\n    sVar4 = mbrtowc((wchar_t *)0x0,__s,__n,(mbstate_t *)&tmp_state);\n    if (0xfffffffc < sVar4 - 2) {\n      cur_char_ring[iVar6] = '\x01';\n      break;\n    }\n    if (sVar4 != 0xfffffffe) {\n      cur_char_ring[iVar6] = (char)sVar4;\n      break;\n    }\n  }\n  cur_mbstate.__count = tmp_state.__count;\n  iVar5 = iVar6 + 1;\n  cur_mbstate.__value = tmp_state.__value;\n  if (iVar6 == 0x7f) {\n    iVar5 = 0;\n  }\n  cur_char_ring[iVar5] = '\0';\nLAB_0001d5ea:\n  uVar2 = (uint)*__s;\n  if ((check_for_bad) || (*__s == '\0')) {\n    check_bad_char(uVar2);\n    uVar2 = (uint)(byte)*lexptr;\n    __s = lexptr;\n  }\n  lexptr = __s + 1;\n  uVar2 = uVar2 & 0xff;\n  goto LAB_0001d4cb;\nLAB_0001d4c6:\n  uVar2 = 0xfffffc18;\n  goto LAB_0001d4cb;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "nextc(_Bool check_for_bad)" identifier (parameter_list "(_Bool check_for_bad)" ( (parameter_declaration "_Bool check_for_bad" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  char *pcVar3;\n  size_t sVar4;\n  int iVar5;\n  int iVar6;\n  char *__s;\n  size_t __n;\n  int in_GS_OFFSET;\n  bool bVar7;\n  mbstate_t tmp_state;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (gawk_mb_cur_max < 2) {\n    do {\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        uVar2 = (uint)*lexptr;\n        if ((check_for_bad) || (*lexptr == '\0')) {\n          check_bad_char(uVar2);\n          uVar2 = (uint)(byte)*lexptr;\n        }\n        lexptr = lexptr + 1;\n        uVar2 = uVar2 & 0xff;\n        goto LAB_0001d4cb;\n      }\n      pcVar3 = get_src_buf();\n    } while (pcVar3 != (char *)0x0);\n  }\n  else {\n    do {\n      __s = lexptr;\n      pcVar3 = lexend;\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        iVar6 = cur_ring_idx + 1;\n        if (cur_ring_idx == 0x7f) {\n          iVar6 = 0;\n        }\n        cur_ring_idx = iVar6;\n        if (cur_char_ring[iVar6] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      pcVar3 = get_src_buf();\n    } while (pcVar3 != (char *)0x0);\n  }\n  uVar2 = 0xfffff830;\nLAB_0001d4cb:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return uVar2;\n  while( true ) {\n    bVar7 = iVar6 != 0x7f;\n    cur_char_ring[iVar6] = (char)__n;\n    iVar5 = iVar6 + 1;\n    iVar6 = 0;\n    if (bVar7) {\n      iVar6 = iVar5;\n    }\n    if (pcVar3 <= __s + __n) break;\nLAB_0001d589:\n    tmp_state.__value = cur_mbstate.__value;\n    tmp_state.__count = cur_mbstate.__count;\n    __n = __n + 1;\n    sVar4 = mbrtowc((wchar_t *)0x0,__s,__n,(mbstate_t *)&tmp_state);\n    if (0xfffffffc < sVar4 - 2) {\n      cur_char_ring[iVar6] = '\x01';\n      break;\n    }\n    if (sVar4 != 0xfffffffe) {\n      cur_char_ring[iVar6] = (char)sVar4;\n      break;\n    }\n  }\n  cur_mbstate.__count = tmp_state.__count;\n  iVar5 = iVar6 + 1;\n  cur_mbstate.__value = tmp_state.__value;\n  if (iVar6 == 0x7f) {\n    iVar5 = 0;\n  }\n  cur_char_ring[iVar5] = '\0';\nLAB_0001d5ea:\n  uVar2 = (uint)*__s;\n  if ((check_for_bad) || (*__s == '\0')) {\n    check_bad_char(uVar2);\n    uVar2 = (uint)(byte)*lexptr;\n    __s = lexptr;\n  }\n  lexptr = __s + 1;\n  uVar2 = uVar2 & 0xff;\n  goto LAB_0001d4cb;\nLAB_0001d4c6:\n  uVar2 = 0xfffffc18;\n  goto LAB_0001d4cb;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "mbstate_t tmp_state;" type_identifier identifier ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (gawk_mb_cur_max < 2) {\n    do {\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        uVar2 = (uint)*lexptr;\n        if ((check_for_bad) || (*lexptr == '\0')) {\n          check_bad_char(uVar2);\n          uVar2 = (uint)(byte)*lexptr;\n        }\n        lexptr = lexptr + 1;\n        uVar2 = uVar2 & 0xff;\n        goto LAB_0001d4cb;\n      }\n      pcVar3 = get_src_buf();\n    } while (pcVar3 != (char *)0x0);\n  }\n  else {\n    do {\n      __s = lexptr;\n      pcVar3 = lexend;\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        iVar6 = cur_ring_idx + 1;\n        if (cur_ring_idx == 0x7f) {\n          iVar6 = 0;\n        }\n        cur_ring_idx = iVar6;\n        if (cur_char_ring[iVar6] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      pcVar3 = get_src_buf();\n    } while (pcVar3 != (char *)0x0);\n  }" if (parenthesized_expression "(gawk_mb_cur_max < 2)" ( (binary_expression "gawk_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\n    do {\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        uVar2 = (uint)*lexptr;\n        if ((check_for_bad) || (*lexptr == '\0')) {\n          check_bad_char(uVar2);\n          uVar2 = (uint)(byte)*lexptr;\n        }\n        lexptr = lexptr + 1;\n        uVar2 = uVar2 & 0xff;\n        goto LAB_0001d4cb;\n      }\n      pcVar3 = get_src_buf();\n    } while (pcVar3 != (char *)0x0);\n  }" { (do_statement "do {\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        uVar2 = (uint)*lexptr;\n        if ((check_for_bad) || (*lexptr == '\0')) {\n          check_bad_char(uVar2);\n          uVar2 = (uint)(byte)*lexptr;\n        }\n        lexptr = lexptr + 1;\n        uVar2 = uVar2 & 0xff;\n        goto LAB_0001d4cb;\n      }\n      pcVar3 = get_src_buf();\n    } while (pcVar3 != (char *)0x0);" do (compound_statement "{\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        uVar2 = (uint)*lexptr;\n        if ((check_for_bad) || (*lexptr == '\0')) {\n          check_bad_char(uVar2);\n          uVar2 = (uint)(byte)*lexptr;\n        }\n        lexptr = lexptr + 1;\n        uVar2 = uVar2 & 0xff;\n        goto LAB_0001d4cb;\n      }\n      pcVar3 = get_src_buf();\n    }" { (if_statement "if (lexeof != false) goto LAB_0001d4c6;" if (parenthesized_expression "(lexeof != false)" ( (binary_expression "lexeof != false" identifier != false) )) (goto_statement "goto LAB_0001d4c6;" goto statement_identifier ;)) (if_statement "if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        uVar2 = (uint)*lexptr;\n        if ((check_for_bad) || (*lexptr == '\0')) {\n          check_bad_char(uVar2);\n          uVar2 = (uint)(byte)*lexptr;\n        }\n        lexptr = lexptr + 1;\n        uVar2 = uVar2 & 0xff;\n        goto LAB_0001d4cb;\n      }" if (parenthesized_expression "((lexptr != (char *)0x0) && (lexptr < lexend))" ( (binary_expression "(lexptr != (char *)0x0) && (lexptr < lexend)" (parenthesized_expression "(lexptr != (char *)0x0)" ( (binary_expression "lexptr != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(lexptr < lexend)" ( (binary_expression "lexptr < lexend" identifier < identifier) ))) )) (compound_statement "{\n        uVar2 = (uint)*lexptr;\n        if ((check_for_bad) || (*lexptr == '\0')) {\n          check_bad_char(uVar2);\n          uVar2 = (uint)(byte)*lexptr;\n        }\n        lexptr = lexptr + 1;\n        uVar2 = uVar2 & 0xff;\n        goto LAB_0001d4cb;\n      }" { (expression_statement "uVar2 = (uint)*lexptr;" (assignment_expression "uVar2 = (uint)*lexptr" identifier = (binary_expression "(uint)*lexptr" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if ((check_for_bad) || (*lexptr == '\0')) {\n          check_bad_char(uVar2);\n          uVar2 = (uint)(byte)*lexptr;\n        }" if (parenthesized_expression "((check_for_bad) || (*lexptr == '\0'))" ( (binary_expression "(check_for_bad) || (*lexptr == '\0')" (parenthesized_expression "(check_for_bad)" ( identifier )) || (parenthesized_expression "(*lexptr == '\0')" ( (binary_expression "*lexptr == '\0'" (pointer_expression "*lexptr" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n          check_bad_char(uVar2);\n          uVar2 = (uint)(byte)*lexptr;\n        }" { (expression_statement "check_bad_char(uVar2);" (call_expression "check_bad_char(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "uVar2 = (uint)(byte)*lexptr;" (assignment_expression "uVar2 = (uint)(byte)*lexptr" identifier = (binary_expression "(uint)(byte)*lexptr" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;) })) (expression_statement "lexptr = lexptr + 1;" (assignment_expression "lexptr = lexptr + 1" identifier = (binary_expression "lexptr + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = uVar2 & 0xff;" (assignment_expression "uVar2 = uVar2 & 0xff" identifier = (binary_expression "uVar2 & 0xff" identifier & number_literal)) ;) (goto_statement "goto LAB_0001d4cb;" goto statement_identifier ;) })) (expression_statement "pcVar3 = get_src_buf();" (assignment_expression "pcVar3 = get_src_buf()" identifier = (call_expression "get_src_buf()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) (else_clause "else {\n    do {\n      __s = lexptr;\n      pcVar3 = lexend;\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        iVar6 = cur_ring_idx + 1;\n        if (cur_ring_idx == 0x7f) {\n          iVar6 = 0;\n        }\n        cur_ring_idx = iVar6;\n        if (cur_char_ring[iVar6] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      pcVar3 = get_src_buf();\n    } while (pcVar3 != (char *)0x0);\n  }" else (compound_statement "{\n    do {\n      __s = lexptr;\n      pcVar3 = lexend;\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        iVar6 = cur_ring_idx + 1;\n        if (cur_ring_idx == 0x7f) {\n          iVar6 = 0;\n        }\n        cur_ring_idx = iVar6;\n        if (cur_char_ring[iVar6] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      pcVar3 = get_src_buf();\n    } while (pcVar3 != (char *)0x0);\n  }" { (do_statement "do {\n      __s = lexptr;\n      pcVar3 = lexend;\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        iVar6 = cur_ring_idx + 1;\n        if (cur_ring_idx == 0x7f) {\n          iVar6 = 0;\n        }\n        cur_ring_idx = iVar6;\n        if (cur_char_ring[iVar6] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      pcVar3 = get_src_buf();\n    } while (pcVar3 != (char *)0x0);" do (compound_statement "{\n      __s = lexptr;\n      pcVar3 = lexend;\n      if (lexeof != false) goto LAB_0001d4c6;\n      if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        iVar6 = cur_ring_idx + 1;\n        if (cur_ring_idx == 0x7f) {\n          iVar6 = 0;\n        }\n        cur_ring_idx = iVar6;\n        if (cur_char_ring[iVar6] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      pcVar3 = get_src_buf();\n    }" { (expression_statement "__s = lexptr;" (assignment_expression "__s = lexptr" identifier = identifier) ;) (expression_statement "pcVar3 = lexend;" (assignment_expression "pcVar3 = lexend" identifier = identifier) ;) (if_statement "if (lexeof != false) goto LAB_0001d4c6;" if (parenthesized_expression "(lexeof != false)" ( (binary_expression "lexeof != false" identifier != false) )) (goto_statement "goto LAB_0001d4c6;" goto statement_identifier ;)) (if_statement "if ((lexptr != (char *)0x0) && (lexptr < lexend)) {\n        iVar6 = cur_ring_idx + 1;\n        if (cur_ring_idx == 0x7f) {\n          iVar6 = 0;\n        }\n        cur_ring_idx = iVar6;\n        if (cur_char_ring[iVar6] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }" if (parenthesized_expression "((lexptr != (char *)0x0) && (lexptr < lexend))" ( (binary_expression "(lexptr != (char *)0x0) && (lexptr < lexend)" (parenthesized_expression "(lexptr != (char *)0x0)" ( (binary_expression "lexptr != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(lexptr < lexend)" ( (binary_expression "lexptr < lexend" identifier < identifier) ))) )) (compound_statement "{\n        iVar6 = cur_ring_idx + 1;\n        if (cur_ring_idx == 0x7f) {\n          iVar6 = 0;\n        }\n        cur_ring_idx = iVar6;\n        if (cur_char_ring[iVar6] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }" { (expression_statement "iVar6 = cur_ring_idx + 1;" (assignment_expression "iVar6 = cur_ring_idx + 1" identifier = (binary_expression "cur_ring_idx + 1" identifier + number_literal)) ;) (if_statement "if (cur_ring_idx == 0x7f) {\n          iVar6 = 0;\n        }" if (parenthesized_expression "(cur_ring_idx == 0x7f)" ( (binary_expression "cur_ring_idx == 0x7f" identifier == number_literal) )) (compound_statement "{\n          iVar6 = 0;\n        }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) })) (expression_statement "cur_ring_idx = iVar6;" (assignment_expression "cur_ring_idx = iVar6" identifier = identifier) ;) (if_statement "if (cur_char_ring[iVar6] != '\0') goto LAB_0001d5ea;" if (parenthesized_expression "(cur_char_ring[iVar6] != '\0')" ( (binary_expression "cur_char_ring[iVar6] != '\0'" (subscript_expression "cur_char_ring[iVar6]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001d5ea;" goto statement_identifier ;)) (expression_statement "__n = 0;" (assignment_expression "__n = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0001d589;" goto statement_identifier ;) })) (expression_statement "pcVar3 = get_src_buf();" (assignment_expression "pcVar3 = get_src_buf()" identifier = (call_expression "get_src_buf()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }))) (expression_statement "uVar2 = 0xfffff830;" (assignment_expression "uVar2 = 0xfffff830" identifier = number_literal) ;) (labeled_statement "LAB_0001d4cb:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar2;" return identifier ;) (while_statement "while( true ) {\n    bVar7 = iVar6 != 0x7f;\n    cur_char_ring[iVar6] = (char)__n;\n    iVar5 = iVar6 + 1;\n    iVar6 = 0;\n    if (bVar7) {\n      iVar6 = iVar5;\n    }\n    if (pcVar3 <= __s + __n) break;\nLAB_0001d589:\n    tmp_state.__value = cur_mbstate.__value;\n    tmp_state.__count = cur_mbstate.__count;\n    __n = __n + 1;\n    sVar4 = mbrtowc((wchar_t *)0x0,__s,__n,(mbstate_t *)&tmp_state);\n    if (0xfffffffc < sVar4 - 2) {\n      cur_char_ring[iVar6] = '\x01';\n      break;\n    }\n    if (sVar4 != 0xfffffffe) {\n      cur_char_ring[iVar6] = (char)sVar4;\n      break;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    bVar7 = iVar6 != 0x7f;\n    cur_char_ring[iVar6] = (char)__n;\n    iVar5 = iVar6 + 1;\n    iVar6 = 0;\n    if (bVar7) {\n      iVar6 = iVar5;\n    }\n    if (pcVar3 <= __s + __n) break;\nLAB_0001d589:\n    tmp_state.__value = cur_mbstate.__value;\n    tmp_state.__count = cur_mbstate.__count;\n    __n = __n + 1;\n    sVar4 = mbrtowc((wchar_t *)0x0,__s,__n,(mbstate_t *)&tmp_state);\n    if (0xfffffffc < sVar4 - 2) {\n      cur_char_ring[iVar6] = '\x01';\n      break;\n    }\n    if (sVar4 != 0xfffffffe) {\n      cur_char_ring[iVar6] = (char)sVar4;\n      break;\n    }\n  }" { (expression_statement "bVar7 = iVar6 != 0x7f;" (assignment_expression "bVar7 = iVar6 != 0x7f" identifier = (binary_expression "iVar6 != 0x7f" identifier != number_literal)) ;) (expression_statement "cur_char_ring[iVar6] = (char)__n;" (assignment_expression "cur_char_ring[iVar6] = (char)__n" (subscript_expression "cur_char_ring[iVar6]" identifier [ identifier ]) = (cast_expression "(char)__n" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar5 = iVar6 + 1;" (assignment_expression "iVar5 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (if_statement "if (bVar7) {\n      iVar6 = iVar5;\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      iVar6 = iVar5;\n    }" { (expression_statement "iVar6 = iVar5;" (assignment_expression "iVar6 = iVar5" identifier = identifier) ;) })) (if_statement "if (pcVar3 <= __s + __n) break;" if (parenthesized_expression "(pcVar3 <= __s + __n)" ( (binary_expression "pcVar3 <= __s + __n" identifier <= (binary_expression "__s + __n" identifier + identifier)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0001d589:\n    tmp_state.__value = cur_mbstate.__value;" statement_identifier : (expression_statement "tmp_state.__value = cur_mbstate.__value;" (assignment_expression "tmp_state.__value = cur_mbstate.__value" (field_expression "tmp_state.__value" identifier . field_identifier) = (field_expression "cur_mbstate.__value" identifier . field_identifier)) ;)) (expression_statement "tmp_state.__count = cur_mbstate.__count;" (assignment_expression "tmp_state.__count = cur_mbstate.__count" (field_expression "tmp_state.__count" identifier . field_identifier) = (field_expression "cur_mbstate.__count" identifier . field_identifier)) ;) (expression_statement "__n = __n + 1;" (assignment_expression "__n = __n + 1" identifier = (binary_expression "__n + 1" identifier + number_literal)) ;) (expression_statement "sVar4 = mbrtowc((wchar_t *)0x0,__s,__n,(mbstate_t *)&tmp_state);" (assignment_expression "sVar4 = mbrtowc((wchar_t *)0x0,__s,__n,(mbstate_t *)&tmp_state)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,__s,__n,(mbstate_t *)&tmp_state)" identifier (argument_list "((wchar_t *)0x0,__s,__n,(mbstate_t *)&tmp_state)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier , (cast_expression "(mbstate_t *)&tmp_state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&tmp_state" & identifier)) )))) ;) (if_statement "if (0xfffffffc < sVar4 - 2) {\n      cur_char_ring[iVar6] = '\x01';\n      break;\n    }" if (parenthesized_expression "(0xfffffffc < sVar4 - 2)" ( (binary_expression "0xfffffffc < sVar4 - 2" number_literal < (binary_expression "sVar4 - 2" identifier - number_literal)) )) (compound_statement "{\n      cur_char_ring[iVar6] = '\x01';\n      break;\n    }" { (expression_statement "cur_char_ring[iVar6] = '\x01';" (assignment_expression "cur_char_ring[iVar6] = '\x01'" (subscript_expression "cur_char_ring[iVar6]" identifier [ identifier ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (break_statement "break;" break ;) })) (if_statement "if (sVar4 != 0xfffffffe) {\n      cur_char_ring[iVar6] = (char)sVar4;\n      break;\n    }" if (parenthesized_expression "(sVar4 != 0xfffffffe)" ( (binary_expression "sVar4 != 0xfffffffe" identifier != number_literal) )) (compound_statement "{\n      cur_char_ring[iVar6] = (char)sVar4;\n      break;\n    }" { (expression_statement "cur_char_ring[iVar6] = (char)sVar4;" (assignment_expression "cur_char_ring[iVar6] = (char)sVar4" (subscript_expression "cur_char_ring[iVar6]" identifier [ identifier ]) = (cast_expression "(char)sVar4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (break_statement "break;" break ;) })) })) (expression_statement "cur_mbstate.__count = tmp_state.__count;" (assignment_expression "cur_mbstate.__count = tmp_state.__count" (field_expression "cur_mbstate.__count" identifier . field_identifier) = (field_expression "tmp_state.__count" identifier . field_identifier)) ;) (expression_statement "iVar5 = iVar6 + 1;" (assignment_expression "iVar5 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "cur_mbstate.__value = tmp_state.__value;" (assignment_expression "cur_mbstate.__value = tmp_state.__value" (field_expression "cur_mbstate.__value" identifier . field_identifier) = (field_expression "tmp_state.__value" identifier . field_identifier)) ;) (if_statement "if (iVar6 == 0x7f) {\n    iVar5 = 0;\n  }" if (parenthesized_expression "(iVar6 == 0x7f)" ( (binary_expression "iVar6 == 0x7f" identifier == number_literal) )) (compound_statement "{\n    iVar5 = 0;\n  }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) })) (expression_statement "cur_char_ring[iVar5] = '\0';" (assignment_expression "cur_char_ring[iVar5] = '\0'" (subscript_expression "cur_char_ring[iVar5]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (labeled_statement "LAB_0001d5ea:\n  uVar2 = (uint)*__s;" statement_identifier : (expression_statement "uVar2 = (uint)*__s;" (assignment_expression "uVar2 = (uint)*__s" identifier = (binary_expression "(uint)*__s" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;)) (if_statement "if ((check_for_bad) || (*__s == '\0')) {\n    check_bad_char(uVar2);\n    uVar2 = (uint)(byte)*lexptr;\n    __s = lexptr;\n  }" if (parenthesized_expression "((check_for_bad) || (*__s == '\0'))" ( (binary_expression "(check_for_bad) || (*__s == '\0')" (parenthesized_expression "(check_for_bad)" ( identifier )) || (parenthesized_expression "(*__s == '\0')" ( (binary_expression "*__s == '\0'" (pointer_expression "*__s" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    check_bad_char(uVar2);\n    uVar2 = (uint)(byte)*lexptr;\n    __s = lexptr;\n  }" { (expression_statement "check_bad_char(uVar2);" (call_expression "check_bad_char(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "uVar2 = (uint)(byte)*lexptr;" (assignment_expression "uVar2 = (uint)(byte)*lexptr" identifier = (binary_expression "(uint)(byte)*lexptr" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;) (expression_statement "__s = lexptr;" (assignment_expression "__s = lexptr" identifier = identifier) ;) })) (expression_statement "lexptr = __s + 1;" (assignment_expression "lexptr = __s + 1" identifier = (binary_expression "__s + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = uVar2 & 0xff;" (assignment_expression "uVar2 = uVar2 & 0xff" identifier = (binary_expression "uVar2 & 0xff" identifier & number_literal)) ;) (goto_statement "goto LAB_0001d4cb;" goto statement_identifier ;) (labeled_statement "LAB_0001d4c6:\n  uVar2 = 0xfffffc18;" statement_identifier : (expression_statement "uVar2 = 0xfffffc18;" (assignment_expression "uVar2 = 0xfffffc18" identifier = number_literal) ;)) (goto_statement "goto LAB_0001d4cb;" goto statement_identifier ;) })))
(translation_unit "uint __regparm3 FUN_0001d470(char param_1)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  size_t sVar5;\n  int iVar6;\n  byte *__s;\n  size_t __n;\n  int in_GS_OFFSET;\n  bool bVar7;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d479;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (DAT_000c49c0 < 2) {\n    do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  else {\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  uVar3 = 0xfffff830;\nLAB_0001d4cb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00087be0();\n  }\n  return uVar3;\n  while( true ) {\n    bVar7 = iVar4 != 0x7f;\n    (&DAT_000c0dc0)[iVar4] = (char)__n;\n    iVar6 = iVar4 + 1;\n    iVar4 = 0;\n    if (bVar7) {\n      iVar4 = iVar6;\n    }\n    if (pbVar1 <= __s + __n) break;\nLAB_0001d589:\n    local_28.__value = DAT_000c0e44;\n    local_28.__count = DAT_000c0e40;\n    __n = __n + 1;\n    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);\n    if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }\n    if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }\n  }\n  DAT_000c0e40 = local_28.__count;\n  iVar6 = iVar4 + 1;\n  DAT_000c0e44 = local_28.__value;\n  if (iVar4 == 0x7f) {\n    iVar6 = 0;\n  }\n  (&DAT_000c0dc0)[iVar6] = 0;\nLAB_0001d5ea:\n  bVar2 = *__s;\n  if ((param_1 != '\0') || (bVar2 == 0)) {\n    FUN_0001b680();\n    bVar2 = *DAT_000c0f20;\n    __s = DAT_000c0f20;\n  }\n  DAT_000c0f20 = __s + 1;\n  uVar3 = (uint)bVar2;\n  goto LAB_0001d4cb;\nLAB_0001d4c6:\n  uVar3 = 0xfffffc18;\n  goto LAB_0001d4cb;\n}\n\n" (function_definition "uint __regparm3 FUN_0001d470(char param_1)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  size_t sVar5;\n  int iVar6;\n  byte *__s;\n  size_t __n;\n  int in_GS_OFFSET;\n  bool bVar7;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d479;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (DAT_000c49c0 < 2) {\n    do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  else {\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  uVar3 = 0xfffff830;\nLAB_0001d4cb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00087be0();\n  }\n  return uVar3;\n  while( true ) {\n    bVar7 = iVar4 != 0x7f;\n    (&DAT_000c0dc0)[iVar4] = (char)__n;\n    iVar6 = iVar4 + 1;\n    iVar4 = 0;\n    if (bVar7) {\n      iVar4 = iVar6;\n    }\n    if (pbVar1 <= __s + __n) break;\nLAB_0001d589:\n    local_28.__value = DAT_000c0e44;\n    local_28.__count = DAT_000c0e40;\n    __n = __n + 1;\n    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);\n    if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }\n    if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }\n  }\n  DAT_000c0e40 = local_28.__count;\n  iVar6 = iVar4 + 1;\n  DAT_000c0e44 = local_28.__value;\n  if (iVar4 == 0x7f) {\n    iVar6 = 0;\n  }\n  (&DAT_000c0dc0)[iVar6] = 0;\nLAB_0001d5ea:\n  bVar2 = *__s;\n  if ((param_1 != '\0') || (bVar2 == 0)) {\n    FUN_0001b680();\n    bVar2 = *DAT_000c0f20;\n    __s = DAT_000c0f20;\n  }\n  DAT_000c0f20 = __s + 1;\n  uVar3 = (uint)bVar2;\n  goto LAB_0001d4cb;\nLAB_0001d4c6:\n  uVar3 = 0xfffffc18;\n  goto LAB_0001d4cb;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0001d470(char param_1)" identifier (parameter_list "(char param_1)" ( (parameter_declaration "char param_1" primitive_type identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  size_t sVar5;\n  int iVar6;\n  byte *__s;\n  size_t __n;\n  int in_GS_OFFSET;\n  bool bVar7;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d479;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (DAT_000c49c0 < 2) {\n    do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  else {\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  uVar3 = 0xfffff830;\nLAB_0001d4cb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00087be0();\n  }\n  return uVar3;\n  while( true ) {\n    bVar7 = iVar4 != 0x7f;\n    (&DAT_000c0dc0)[iVar4] = (char)__n;\n    iVar6 = iVar4 + 1;\n    iVar4 = 0;\n    if (bVar7) {\n      iVar4 = iVar6;\n    }\n    if (pbVar1 <= __s + __n) break;\nLAB_0001d589:\n    local_28.__value = DAT_000c0e44;\n    local_28.__count = DAT_000c0e40;\n    __n = __n + 1;\n    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);\n    if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }\n    if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }\n  }\n  DAT_000c0e40 = local_28.__count;\n  iVar6 = iVar4 + 1;\n  DAT_000c0e44 = local_28.__value;\n  if (iVar4 == 0x7f) {\n    iVar6 = 0;\n  }\n  (&DAT_000c0dc0)[iVar6] = 0;\nLAB_0001d5ea:\n  bVar2 = *__s;\n  if ((param_1 != '\0') || (bVar2 == 0)) {\n    FUN_0001b680();\n    bVar2 = *DAT_000c0f20;\n    __s = DAT_000c0f20;\n  }\n  DAT_000c0f20 = __s + 1;\n  uVar3 = (uint)bVar2;\n  goto LAB_0001d4cb;\nLAB_0001d4c6:\n  uVar3 = 0xfffffc18;\n  goto LAB_0001d4cb;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "mbstate_t local_28;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1d479;" (assignment_expression "uStack_14 = 0x1d479" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (DAT_000c49c0 < 2) {\n    do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  else {\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }" if (parenthesized_expression "(DAT_000c49c0 < 2)" ( (binary_expression "DAT_000c49c0 < 2" identifier < number_literal) )) (compound_statement "{\n    do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }" { (do_statement "do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);" do (compound_statement "{\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    }" { (if_statement "if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;" if (parenthesized_expression "(DAT_000c0f10 != '\0')" ( (binary_expression "DAT_000c0f10 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001d4c6;" goto statement_identifier ;)) (if_statement "if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }" if (parenthesized_expression "((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c))" ( (binary_expression "(DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)" (parenthesized_expression "(DAT_000c0f20 != (byte *)0x0)" ( (binary_expression "DAT_000c0f20 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(DAT_000c0f20 < DAT_000c0f1c)" ( (binary_expression "DAT_000c0f20 < DAT_000c0f1c" identifier < identifier) ))) )) (compound_statement "{\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }" { (expression_statement "bVar2 = *DAT_000c0f20;" (assignment_expression "bVar2 = *DAT_000c0f20" identifier = (pointer_expression "*DAT_000c0f20" * identifier)) ;) (if_statement "if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }" if (parenthesized_expression "((param_1 != '\0') || (bVar2 == 0))" ( (binary_expression "(param_1 != '\0') || (bVar2 == 0)" (parenthesized_expression "(param_1 != '\0')" ( (binary_expression "param_1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }" { (expression_statement "FUN_0001b680();" (call_expression "FUN_0001b680()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar2 = *DAT_000c0f20;" (assignment_expression "bVar2 = *DAT_000c0f20" identifier = (pointer_expression "*DAT_000c0f20" * identifier)) ;) })) (expression_statement "DAT_000c0f20 = DAT_000c0f20 + 1;" (assignment_expression "DAT_000c0f20 = DAT_000c0f20 + 1" identifier = (binary_expression "DAT_000c0f20 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = (uint)bVar2;" (assignment_expression "uVar3 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_0001d4cb;" goto statement_identifier ;) })) (expression_statement "iVar4 = FUN_0001cc70();" (assignment_expression "iVar4 = FUN_0001cc70()" identifier = (call_expression "FUN_0001cc70()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }" else (compound_statement "{\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }" { (do_statement "do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);" do (compound_statement "{\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    }" { (expression_statement "__s = DAT_000c0f20;" (assignment_expression "__s = DAT_000c0f20" identifier = identifier) ;) (expression_statement "pbVar1 = DAT_000c0f1c;" (assignment_expression "pbVar1 = DAT_000c0f1c" identifier = identifier) ;) (if_statement "if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;" if (parenthesized_expression "(DAT_000c0f10 != '\0')" ( (binary_expression "DAT_000c0f10 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001d4c6;" goto statement_identifier ;)) (if_statement "if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }" if (parenthesized_expression "((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c))" ( (binary_expression "(DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)" (parenthesized_expression "(DAT_000c0f20 != (byte *)0x0)" ( (binary_expression "DAT_000c0f20 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(DAT_000c0f20 < DAT_000c0f1c)" ( (binary_expression "DAT_000c0f20 < DAT_000c0f1c" identifier < identifier) ))) )) (compound_statement "{\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }" { (expression_statement "iVar4 = DAT_000c0db4 + 1;" (assignment_expression "iVar4 = DAT_000c0db4 + 1" identifier = (binary_expression "DAT_000c0db4 + 1" identifier + number_literal)) ;) (if_statement "if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }" if (parenthesized_expression "(DAT_000c0db4 == 0x7f)" ( (binary_expression "DAT_000c0db4 == 0x7f" identifier == number_literal) )) (compound_statement "{\n          iVar4 = 0;\n        }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) })) (expression_statement "DAT_000c0db4 = iVar4;" (assignment_expression "DAT_000c0db4 = iVar4" identifier = identifier) ;) (if_statement "if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;" if (parenthesized_expression "((&DAT_000c0dc0)[iVar4] != '\0')" ( (binary_expression "(&DAT_000c0dc0)[iVar4] != '\0'" (subscript_expression "(&DAT_000c0dc0)[iVar4]" (parenthesized_expression "(&DAT_000c0dc0)" ( (pointer_expression "&DAT_000c0dc0" & identifier) )) [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001d5ea;" goto statement_identifier ;)) (expression_statement "__n = 0;" (assignment_expression "__n = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0001d589;" goto statement_identifier ;) })) (expression_statement "iVar4 = FUN_0001cc70();" (assignment_expression "iVar4 = FUN_0001cc70()" identifier = (call_expression "FUN_0001cc70()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) }))) (expression_statement "uVar3 = 0xfffff830;" (assignment_expression "uVar3 = 0xfffff830" identifier = number_literal) ;) (labeled_statement "LAB_0001d4cb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00087be0();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00087be0();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_00087be0();\n  }" { (expression_statement "FUN_00087be0();" (call_expression "FUN_00087be0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar3;" return identifier ;) (while_statement "while( true ) {\n    bVar7 = iVar4 != 0x7f;\n    (&DAT_000c0dc0)[iVar4] = (char)__n;\n    iVar6 = iVar4 + 1;\n    iVar4 = 0;\n    if (bVar7) {\n      iVar4 = iVar6;\n    }\n    if (pbVar1 <= __s + __n) break;\nLAB_0001d589:\n    local_28.__value = DAT_000c0e44;\n    local_28.__count = DAT_000c0e40;\n    __n = __n + 1;\n    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);\n    if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }\n    if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    bVar7 = iVar4 != 0x7f;\n    (&DAT_000c0dc0)[iVar4] = (char)__n;\n    iVar6 = iVar4 + 1;\n    iVar4 = 0;\n    if (bVar7) {\n      iVar4 = iVar6;\n    }\n    if (pbVar1 <= __s + __n) break;\nLAB_0001d589:\n    local_28.__value = DAT_000c0e44;\n    local_28.__count = DAT_000c0e40;\n    __n = __n + 1;\n    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);\n    if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }\n    if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }\n  }" { (expression_statement "bVar7 = iVar4 != 0x7f;" (assignment_expression "bVar7 = iVar4 != 0x7f" identifier = (binary_expression "iVar4 != 0x7f" identifier != number_literal)) ;) (expression_statement "(&DAT_000c0dc0)[iVar4] = (char)__n;" (assignment_expression "(&DAT_000c0dc0)[iVar4] = (char)__n" (subscript_expression "(&DAT_000c0dc0)[iVar4]" (parenthesized_expression "(&DAT_000c0dc0)" ( (pointer_expression "&DAT_000c0dc0" & identifier) )) [ identifier ]) = (cast_expression "(char)__n" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar6 = iVar4 + 1;" (assignment_expression "iVar6 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (if_statement "if (bVar7) {\n      iVar4 = iVar6;\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      iVar4 = iVar6;\n    }" { (expression_statement "iVar4 = iVar6;" (assignment_expression "iVar4 = iVar6" identifier = identifier) ;) })) (if_statement "if (pbVar1 <= __s + __n) break;" if (parenthesized_expression "(pbVar1 <= __s + __n)" ( (binary_expression "pbVar1 <= __s + __n" identifier <= (binary_expression "__s + __n" identifier + identifier)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0001d589:\n    local_28.__value = DAT_000c0e44;" statement_identifier : (expression_statement "local_28.__value = DAT_000c0e44;" (assignment_expression "local_28.__value = DAT_000c0e44" (field_expression "local_28.__value" identifier . field_identifier) = identifier) ;)) (expression_statement "local_28.__count = DAT_000c0e40;" (assignment_expression "local_28.__count = DAT_000c0e40" (field_expression "local_28.__count" identifier . field_identifier) = identifier) ;) (expression_statement "__n = __n + 1;" (assignment_expression "__n = __n + 1" identifier = (binary_expression "__n + 1" identifier + number_literal)) ;) (expression_statement "sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);" (assignment_expression "sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,__n,&local_28)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }" if (parenthesized_expression "(0xfffffffc < sVar5 - 2)" ( (binary_expression "0xfffffffc < sVar5 - 2" number_literal < (binary_expression "sVar5 - 2" identifier - number_literal)) )) (compound_statement "{\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }" { (expression_statement "(&DAT_000c0dc0)[iVar4] = 1;" (assignment_expression "(&DAT_000c0dc0)[iVar4] = 1" (subscript_expression "(&DAT_000c0dc0)[iVar4]" (parenthesized_expression "(&DAT_000c0dc0)" ( (pointer_expression "&DAT_000c0dc0" & identifier) )) [ identifier ]) = number_literal) ;) (break_statement "break;" break ;) })) (if_statement "if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }" if (parenthesized_expression "(sVar5 != 0xfffffffe)" ( (binary_expression "sVar5 != 0xfffffffe" identifier != number_literal) )) (compound_statement "{\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }" { (expression_statement "(&DAT_000c0dc0)[iVar4] = (char)sVar5;" (assignment_expression "(&DAT_000c0dc0)[iVar4] = (char)sVar5" (subscript_expression "(&DAT_000c0dc0)[iVar4]" (parenthesized_expression "(&DAT_000c0dc0)" ( (pointer_expression "&DAT_000c0dc0" & identifier) )) [ identifier ]) = (cast_expression "(char)sVar5" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (break_statement "break;" break ;) })) })) (expression_statement "DAT_000c0e40 = local_28.__count;" (assignment_expression "DAT_000c0e40 = local_28.__count" identifier = (field_expression "local_28.__count" identifier . field_identifier)) ;) (expression_statement "iVar6 = iVar4 + 1;" (assignment_expression "iVar6 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "DAT_000c0e44 = local_28.__value;" (assignment_expression "DAT_000c0e44 = local_28.__value" identifier = (field_expression "local_28.__value" identifier . field_identifier)) ;) (if_statement "if (iVar4 == 0x7f) {\n    iVar6 = 0;\n  }" if (parenthesized_expression "(iVar4 == 0x7f)" ( (binary_expression "iVar4 == 0x7f" identifier == number_literal) )) (compound_statement "{\n    iVar6 = 0;\n  }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) })) (expression_statement "(&DAT_000c0dc0)[iVar6] = 0;" (assignment_expression "(&DAT_000c0dc0)[iVar6] = 0" (subscript_expression "(&DAT_000c0dc0)[iVar6]" (parenthesized_expression "(&DAT_000c0dc0)" ( (pointer_expression "&DAT_000c0dc0" & identifier) )) [ identifier ]) = number_literal) ;) (labeled_statement "LAB_0001d5ea:\n  bVar2 = *__s;" statement_identifier : (expression_statement "bVar2 = *__s;" (assignment_expression "bVar2 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;)) (if_statement "if ((param_1 != '\0') || (bVar2 == 0)) {\n    FUN_0001b680();\n    bVar2 = *DAT_000c0f20;\n    __s = DAT_000c0f20;\n  }" if (parenthesized_expression "((param_1 != '\0') || (bVar2 == 0))" ( (binary_expression "(param_1 != '\0') || (bVar2 == 0)" (parenthesized_expression "(param_1 != '\0')" ( (binary_expression "param_1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    FUN_0001b680();\n    bVar2 = *DAT_000c0f20;\n    __s = DAT_000c0f20;\n  }" { (expression_statement "FUN_0001b680();" (call_expression "FUN_0001b680()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar2 = *DAT_000c0f20;" (assignment_expression "bVar2 = *DAT_000c0f20" identifier = (pointer_expression "*DAT_000c0f20" * identifier)) ;) (expression_statement "__s = DAT_000c0f20;" (assignment_expression "__s = DAT_000c0f20" identifier = identifier) ;) })) (expression_statement "DAT_000c0f20 = __s + 1;" (assignment_expression "DAT_000c0f20 = __s + 1" identifier = (binary_expression "__s + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = (uint)bVar2;" (assignment_expression "uVar3 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_0001d4cb;" goto statement_identifier ;) (labeled_statement "LAB_0001d4c6:\n  uVar3 = 0xfffffc18;" statement_identifier : (expression_statement "uVar3 = 0xfffffc18;" (assignment_expression "uVar3 = 0xfffffc18" identifier = number_literal) ;)) (goto_statement "goto LAB_0001d4cb;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + IDENT)) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;)) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) = LIT) ;) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (break_statement break ;) })) })) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })))
(function_definition "uint __regparm3 FUN_0001d470(char param_1)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  size_t sVar5;\n  int iVar6;\n  byte *__s;\n  size_t __n;\n  int in_GS_OFFSET;\n  bool bVar7;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d479;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (DAT_000c49c0 < 2) {\n    do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  else {\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  uVar3 = 0xfffff830;\nLAB_0001d4cb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00087be0();\n  }\n  return uVar3;\n  while( true ) {\n    bVar7 = iVar4 != 0x7f;\n    (&DAT_000c0dc0)[iVar4] = (char)__n;\n    iVar6 = iVar4 + 1;\n    iVar4 = 0;\n    if (bVar7) {\n      iVar4 = iVar6;\n    }\n    if (pbVar1 <= __s + __n) break;\nLAB_0001d589:\n    local_28.__value = DAT_000c0e44;\n    local_28.__count = DAT_000c0e40;\n    __n = __n + 1;\n    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);\n    if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }\n    if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }\n  }\n  DAT_000c0e40 = local_28.__count;\n  iVar6 = iVar4 + 1;\n  DAT_000c0e44 = local_28.__value;\n  if (iVar4 == 0x7f) {\n    iVar6 = 0;\n  }\n  (&DAT_000c0dc0)[iVar6] = 0;\nLAB_0001d5ea:\n  bVar2 = *__s;\n  if ((param_1 != '\0') || (bVar2 == 0)) {\n    FUN_0001b680();\n    bVar2 = *DAT_000c0f20;\n    __s = DAT_000c0f20;\n  }\n  DAT_000c0f20 = __s + 1;\n  uVar3 = (uint)bVar2;\n  goto LAB_0001d4cb;\nLAB_0001d4c6:\n  uVar3 = 0xfffffc18;\n  goto LAB_0001d4cb;\n}" (type_identifier "uint") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0001d470(char param_1)" (identifier "FUN_0001d470") (parameter_list "(char param_1)" (( "(") (parameter_declaration "char param_1" (primitive_type "char") (identifier "param_1")) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  size_t sVar5;\n  int iVar6;\n  byte *__s;\n  size_t __n;\n  int in_GS_OFFSET;\n  bool bVar7;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d479;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (DAT_000c49c0 < 2) {\n    do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  else {\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  uVar3 = 0xfffff830;\nLAB_0001d4cb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00087be0();\n  }\n  return uVar3;\n  while( true ) {\n    bVar7 = iVar4 != 0x7f;\n    (&DAT_000c0dc0)[iVar4] = (char)__n;\n    iVar6 = iVar4 + 1;\n    iVar4 = 0;\n    if (bVar7) {\n      iVar4 = iVar6;\n    }\n    if (pbVar1 <= __s + __n) break;\nLAB_0001d589:\n    local_28.__value = DAT_000c0e44;\n    local_28.__count = DAT_000c0e40;\n    __n = __n + 1;\n    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);\n    if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }\n    if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }\n  }\n  DAT_000c0e40 = local_28.__count;\n  iVar6 = iVar4 + 1;\n  DAT_000c0e44 = local_28.__value;\n  if (iVar4 == 0x7f) {\n    iVar6 = 0;\n  }\n  (&DAT_000c0dc0)[iVar6] = 0;\nLAB_0001d5ea:\n  bVar2 = *__s;\n  if ((param_1 != '\0') || (bVar2 == 0)) {\n    FUN_0001b680();\n    bVar2 = *DAT_000c0f20;\n    __s = DAT_000c0f20;\n  }\n  DAT_000c0f20 = __s + 1;\n  uVar3 = (uint)bVar2;\n  goto LAB_0001d4cb;\nLAB_0001d4c6:\n  uVar3 = 0xfffffc18;\n  goto LAB_0001d4cb;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "byte *__s;" (type_identifier "byte") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar7;" (primitive_type "bool") (identifier "bVar7") (; ";")) (declaration "mbstate_t local_28;" (type_identifier "mbstate_t") (identifier "local_28") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x1d479;" (assignment_expression "uStack_14 = 0x1d479" (identifier "uStack_14") (= "=") (number_literal "0x1d479")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (DAT_000c49c0 < 2) {\n    do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }\n  else {\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }" (if "if") (parenthesized_expression "(DAT_000c49c0 < 2)" (( "(") (binary_expression "DAT_000c49c0 < 2" (identifier "DAT_000c49c0") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }" ({ "{") (do_statement "do {\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);" (do "do") (compound_statement "{\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }\n      iVar4 = FUN_0001cc70();\n    }" ({ "{") (if_statement "if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;" (if "if") (parenthesized_expression "(DAT_000c0f10 != '\0')" (( "(") (binary_expression "DAT_000c0f10 != '\0'" (identifier "DAT_000c0f10") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0001d4c6;" (goto "goto") (statement_identifier "LAB_0001d4c6") (; ";"))) (if_statement "if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }" (if "if") (parenthesized_expression "((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c))" (( "(") (binary_expression "(DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)" (parenthesized_expression "(DAT_000c0f20 != (byte *)0x0)" (( "(") (binary_expression "DAT_000c0f20 != (byte *)0x0" (identifier "DAT_000c0f20") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(DAT_000c0f20 < DAT_000c0f1c)" (( "(") (binary_expression "DAT_000c0f20 < DAT_000c0f1c" (identifier "DAT_000c0f20") (< "<") (identifier "DAT_000c0f1c")) () ")"))) () ")")) (compound_statement "{\n        bVar2 = *DAT_000c0f20;\n        if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }\n        DAT_000c0f20 = DAT_000c0f20 + 1;\n        uVar3 = (uint)bVar2;\n        goto LAB_0001d4cb;\n      }" ({ "{") (expression_statement "bVar2 = *DAT_000c0f20;" (assignment_expression "bVar2 = *DAT_000c0f20" (identifier "bVar2") (= "=") (pointer_expression "*DAT_000c0f20" (* "*") (identifier "DAT_000c0f20"))) (; ";")) (if_statement "if ((param_1 != '\0') || (bVar2 == 0)) {\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }" (if "if") (parenthesized_expression "((param_1 != '\0') || (bVar2 == 0))" (( "(") (binary_expression "(param_1 != '\0') || (bVar2 == 0)" (parenthesized_expression "(param_1 != '\0')" (( "(") (binary_expression "param_1 != '\0'" (identifier "param_1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(bVar2 == 0)" (( "(") (binary_expression "bVar2 == 0" (identifier "bVar2") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          FUN_0001b680();\n          bVar2 = *DAT_000c0f20;\n        }" ({ "{") (expression_statement "FUN_0001b680();" (call_expression "FUN_0001b680()" (identifier "FUN_0001b680") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "bVar2 = *DAT_000c0f20;" (assignment_expression "bVar2 = *DAT_000c0f20" (identifier "bVar2") (= "=") (pointer_expression "*DAT_000c0f20" (* "*") (identifier "DAT_000c0f20"))) (; ";")) (} "}"))) (expression_statement "DAT_000c0f20 = DAT_000c0f20 + 1;" (assignment_expression "DAT_000c0f20 = DAT_000c0f20 + 1" (identifier "DAT_000c0f20") (= "=") (binary_expression "DAT_000c0f20 + 1" (identifier "DAT_000c0f20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = (uint)bVar2;" (assignment_expression "uVar3 = (uint)bVar2" (identifier "uVar3") (= "=") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2"))) (; ";")) (goto_statement "goto LAB_0001d4cb;" (goto "goto") (statement_identifier "LAB_0001d4cb") (; ";")) (} "}"))) (expression_statement "iVar4 = FUN_0001cc70();" (assignment_expression "iVar4 = FUN_0001cc70()" (identifier "iVar4") (= "=") (call_expression "FUN_0001cc70()" (identifier "FUN_0001cc70") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }" (else "else") (compound_statement "{\n    do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);\n  }" ({ "{") (do_statement "do {\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    } while (iVar4 != 0);" (do "do") (compound_statement "{\n      __s = DAT_000c0f20;\n      pbVar1 = DAT_000c0f1c;\n      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;\n      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }\n      iVar4 = FUN_0001cc70();\n    }" ({ "{") (expression_statement "__s = DAT_000c0f20;" (assignment_expression "__s = DAT_000c0f20" (identifier "__s") (= "=") (identifier "DAT_000c0f20")) (; ";")) (expression_statement "pbVar1 = DAT_000c0f1c;" (assignment_expression "pbVar1 = DAT_000c0f1c" (identifier "pbVar1") (= "=") (identifier "DAT_000c0f1c")) (; ";")) (if_statement "if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;" (if "if") (parenthesized_expression "(DAT_000c0f10 != '\0')" (( "(") (binary_expression "DAT_000c0f10 != '\0'" (identifier "DAT_000c0f10") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0001d4c6;" (goto "goto") (statement_identifier "LAB_0001d4c6") (; ";"))) (if_statement "if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }" (if "if") (parenthesized_expression "((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c))" (( "(") (binary_expression "(DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)" (parenthesized_expression "(DAT_000c0f20 != (byte *)0x0)" (( "(") (binary_expression "DAT_000c0f20 != (byte *)0x0" (identifier "DAT_000c0f20") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(DAT_000c0f20 < DAT_000c0f1c)" (( "(") (binary_expression "DAT_000c0f20 < DAT_000c0f1c" (identifier "DAT_000c0f20") (< "<") (identifier "DAT_000c0f1c")) () ")"))) () ")")) (compound_statement "{\n        iVar4 = DAT_000c0db4 + 1;\n        if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }\n        DAT_000c0db4 = iVar4;\n        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;\n        __n = 0;\n        goto LAB_0001d589;\n      }" ({ "{") (expression_statement "iVar4 = DAT_000c0db4 + 1;" (assignment_expression "iVar4 = DAT_000c0db4 + 1" (identifier "iVar4") (= "=") (binary_expression "DAT_000c0db4 + 1" (identifier "DAT_000c0db4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (DAT_000c0db4 == 0x7f) {\n          iVar4 = 0;\n        }" (if "if") (parenthesized_expression "(DAT_000c0db4 == 0x7f)" (( "(") (binary_expression "DAT_000c0db4 == 0x7f" (identifier "DAT_000c0db4") (== "==") (number_literal "0x7f")) () ")")) (compound_statement "{\n          iVar4 = 0;\n        }" ({ "{") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "DAT_000c0db4 = iVar4;" (assignment_expression "DAT_000c0db4 = iVar4" (identifier "DAT_000c0db4") (= "=") (identifier "iVar4")) (; ";")) (if_statement "if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;" (if "if") (parenthesized_expression "((&DAT_000c0dc0)[iVar4] != '\0')" (( "(") (binary_expression "(&DAT_000c0dc0)[iVar4] != '\0'" (subscript_expression "(&DAT_000c0dc0)[iVar4]" (parenthesized_expression "(&DAT_000c0dc0)" (( "(") (pointer_expression "&DAT_000c0dc0" (& "&") (identifier "DAT_000c0dc0")) () ")")) ([ "[") (identifier "iVar4") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0001d5ea;" (goto "goto") (statement_identifier "LAB_0001d5ea") (; ";"))) (expression_statement "__n = 0;" (assignment_expression "__n = 0" (identifier "__n") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0001d589;" (goto "goto") (statement_identifier "LAB_0001d589") (; ";")) (} "}"))) (expression_statement "iVar4 = FUN_0001cc70();" (assignment_expression "iVar4 = FUN_0001cc70()" (identifier "iVar4") (= "=") (call_expression "FUN_0001cc70()" (identifier "FUN_0001cc70") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")))) (expression_statement "uVar3 = 0xfffff830;" (assignment_expression "uVar3 = 0xfffff830" (identifier "uVar3") (= "=") (number_literal "0xfffff830")) (; ";")) (labeled_statement "LAB_0001d4cb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00087be0();\n  }" (statement_identifier "LAB_0001d4cb") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00087be0();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_00087be0();\n  }" ({ "{") (expression_statement "FUN_00087be0();" (call_expression "FUN_00087be0()" (identifier "FUN_00087be0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (while_statement "while( true ) {\n    bVar7 = iVar4 != 0x7f;\n    (&DAT_000c0dc0)[iVar4] = (char)__n;\n    iVar6 = iVar4 + 1;\n    iVar4 = 0;\n    if (bVar7) {\n      iVar4 = iVar6;\n    }\n    if (pbVar1 <= __s + __n) break;\nLAB_0001d589:\n    local_28.__value = DAT_000c0e44;\n    local_28.__count = DAT_000c0e40;\n    __n = __n + 1;\n    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);\n    if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }\n    if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    bVar7 = iVar4 != 0x7f;\n    (&DAT_000c0dc0)[iVar4] = (char)__n;\n    iVar6 = iVar4 + 1;\n    iVar4 = 0;\n    if (bVar7) {\n      iVar4 = iVar6;\n    }\n    if (pbVar1 <= __s + __n) break;\nLAB_0001d589:\n    local_28.__value = DAT_000c0e44;\n    local_28.__count = DAT_000c0e40;\n    __n = __n + 1;\n    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);\n    if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }\n    if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }\n  }" ({ "{") (expression_statement "bVar7 = iVar4 != 0x7f;" (assignment_expression "bVar7 = iVar4 != 0x7f" (identifier "bVar7") (= "=") (binary_expression "iVar4 != 0x7f" (identifier "iVar4") (!= "!=") (number_literal "0x7f"))) (; ";")) (expression_statement "(&DAT_000c0dc0)[iVar4] = (char)__n;" (assignment_expression "(&DAT_000c0dc0)[iVar4] = (char)__n" (subscript_expression "(&DAT_000c0dc0)[iVar4]" (parenthesized_expression "(&DAT_000c0dc0)" (( "(") (pointer_expression "&DAT_000c0dc0" (& "&") (identifier "DAT_000c0dc0")) () ")")) ([ "[") (identifier "iVar4") (] "]")) (= "=") (cast_expression "(char)__n" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "__n"))) (; ";")) (expression_statement "iVar6 = iVar4 + 1;" (assignment_expression "iVar6 = iVar4 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (bVar7) {\n      iVar4 = iVar6;\n    }" (if "if") (parenthesized_expression "(bVar7)" (( "(") (identifier "bVar7") () ")")) (compound_statement "{\n      iVar4 = iVar6;\n    }" ({ "{") (expression_statement "iVar4 = iVar6;" (assignment_expression "iVar4 = iVar6" (identifier "iVar4") (= "=") (identifier "iVar6")) (; ";")) (} "}"))) (if_statement "if (pbVar1 <= __s + __n) break;" (if "if") (parenthesized_expression "(pbVar1 <= __s + __n)" (( "(") (binary_expression "pbVar1 <= __s + __n" (identifier "pbVar1") (<= "<=") (binary_expression "__s + __n" (identifier "__s") (+ "+") (identifier "__n"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_0001d589:\n    local_28.__value = DAT_000c0e44;" (statement_identifier "LAB_0001d589") (: ":") (expression_statement "local_28.__value = DAT_000c0e44;" (assignment_expression "local_28.__value = DAT_000c0e44" (field_expression "local_28.__value" (identifier "local_28") (. ".") (field_identifier "__value")) (= "=") (identifier "DAT_000c0e44")) (; ";"))) (expression_statement "local_28.__count = DAT_000c0e40;" (assignment_expression "local_28.__count = DAT_000c0e40" (field_expression "local_28.__count" (identifier "local_28") (. ".") (field_identifier "__count")) (= "=") (identifier "DAT_000c0e40")) (; ";")) (expression_statement "__n = __n + 1;" (assignment_expression "__n = __n + 1" (identifier "__n") (= "=") (binary_expression "__n + 1" (identifier "__n") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);" (assignment_expression "sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28)" (identifier "sVar5") (= "=") (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28)" (identifier "mbrtowc") (argument_list "((wchar_t *)0x0,(char *)__s,__n,&local_28)" (( "(") (cast_expression "(wchar_t *)0x0" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (cast_expression "(char *)__s" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s")) (, ",") (identifier "__n") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")")))) (; ";")) (if_statement "if (0xfffffffc < sVar5 - 2) {\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }" (if "if") (parenthesized_expression "(0xfffffffc < sVar5 - 2)" (( "(") (binary_expression "0xfffffffc < sVar5 - 2" (number_literal "0xfffffffc") (< "<") (binary_expression "sVar5 - 2" (identifier "sVar5") (- "-") (number_literal "2"))) () ")")) (compound_statement "{\n      (&DAT_000c0dc0)[iVar4] = 1;\n      break;\n    }" ({ "{") (expression_statement "(&DAT_000c0dc0)[iVar4] = 1;" (assignment_expression "(&DAT_000c0dc0)[iVar4] = 1" (subscript_expression "(&DAT_000c0dc0)[iVar4]" (parenthesized_expression "(&DAT_000c0dc0)" (( "(") (pointer_expression "&DAT_000c0dc0" (& "&") (identifier "DAT_000c0dc0")) () ")")) ([ "[") (identifier "iVar4") (] "]")) (= "=") (number_literal "1")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (sVar5 != 0xfffffffe) {\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }" (if "if") (parenthesized_expression "(sVar5 != 0xfffffffe)" (( "(") (binary_expression "sVar5 != 0xfffffffe" (identifier "sVar5") (!= "!=") (number_literal "0xfffffffe")) () ")")) (compound_statement "{\n      (&DAT_000c0dc0)[iVar4] = (char)sVar5;\n      break;\n    }" ({ "{") (expression_statement "(&DAT_000c0dc0)[iVar4] = (char)sVar5;" (assignment_expression "(&DAT_000c0dc0)[iVar4] = (char)sVar5" (subscript_expression "(&DAT_000c0dc0)[iVar4]" (parenthesized_expression "(&DAT_000c0dc0)" (( "(") (pointer_expression "&DAT_000c0dc0" (& "&") (identifier "DAT_000c0dc0")) () ")")) ([ "[") (identifier "iVar4") (] "]")) (= "=") (cast_expression "(char)sVar5" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "sVar5"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (} "}"))) (expression_statement "DAT_000c0e40 = local_28.__count;" (assignment_expression "DAT_000c0e40 = local_28.__count" (identifier "DAT_000c0e40") (= "=") (field_expression "local_28.__count" (identifier "local_28") (. ".") (field_identifier "__count"))) (; ";")) (expression_statement "iVar6 = iVar4 + 1;" (assignment_expression "iVar6 = iVar4 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "DAT_000c0e44 = local_28.__value;" (assignment_expression "DAT_000c0e44 = local_28.__value" (identifier "DAT_000c0e44") (= "=") (field_expression "local_28.__value" (identifier "local_28") (. ".") (field_identifier "__value"))) (; ";")) (if_statement "if (iVar4 == 0x7f) {\n    iVar6 = 0;\n  }" (if "if") (parenthesized_expression "(iVar4 == 0x7f)" (( "(") (binary_expression "iVar4 == 0x7f" (identifier "iVar4") (== "==") (number_literal "0x7f")) () ")")) (compound_statement "{\n    iVar6 = 0;\n  }" ({ "{") (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "(&DAT_000c0dc0)[iVar6] = 0;" (assignment_expression "(&DAT_000c0dc0)[iVar6] = 0" (subscript_expression "(&DAT_000c0dc0)[iVar6]" (parenthesized_expression "(&DAT_000c0dc0)" (( "(") (pointer_expression "&DAT_000c0dc0" (& "&") (identifier "DAT_000c0dc0")) () ")")) ([ "[") (identifier "iVar6") (] "]")) (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0001d5ea:\n  bVar2 = *__s;" (statement_identifier "LAB_0001d5ea") (: ":") (expression_statement "bVar2 = *__s;" (assignment_expression "bVar2 = *__s" (identifier "bVar2") (= "=") (pointer_expression "*__s" (* "*") (identifier "__s"))) (; ";"))) (if_statement "if ((param_1 != '\0') || (bVar2 == 0)) {\n    FUN_0001b680();\n    bVar2 = *DAT_000c0f20;\n    __s = DAT_000c0f20;\n  }" (if "if") (parenthesized_expression "((param_1 != '\0') || (bVar2 == 0))" (( "(") (binary_expression "(param_1 != '\0') || (bVar2 == 0)" (parenthesized_expression "(param_1 != '\0')" (( "(") (binary_expression "param_1 != '\0'" (identifier "param_1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(bVar2 == 0)" (( "(") (binary_expression "bVar2 == 0" (identifier "bVar2") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    FUN_0001b680();\n    bVar2 = *DAT_000c0f20;\n    __s = DAT_000c0f20;\n  }" ({ "{") (expression_statement "FUN_0001b680();" (call_expression "FUN_0001b680()" (identifier "FUN_0001b680") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "bVar2 = *DAT_000c0f20;" (assignment_expression "bVar2 = *DAT_000c0f20" (identifier "bVar2") (= "=") (pointer_expression "*DAT_000c0f20" (* "*") (identifier "DAT_000c0f20"))) (; ";")) (expression_statement "__s = DAT_000c0f20;" (assignment_expression "__s = DAT_000c0f20" (identifier "__s") (= "=") (identifier "DAT_000c0f20")) (; ";")) (} "}"))) (expression_statement "DAT_000c0f20 = __s + 1;" (assignment_expression "DAT_000c0f20 = __s + 1" (identifier "DAT_000c0f20") (= "=") (binary_expression "__s + 1" (identifier "__s") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = (uint)bVar2;" (assignment_expression "uVar3 = (uint)bVar2" (identifier "uVar3") (= "=") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2"))) (; ";")) (goto_statement "goto LAB_0001d4cb;" (goto "goto") (statement_identifier "LAB_0001d4cb") (; ";")) (labeled_statement "LAB_0001d4c6:\n  uVar3 = 0xfffffc18;" (statement_identifier "LAB_0001d4c6") (: ":") (expression_statement "uVar3 = 0xfffffc18;" (assignment_expression "uVar3 = 0xfffffc18" (identifier "uVar3") (= "=") (number_literal "0xfffffc18")) (; ";"))) (goto_statement "goto LAB_0001d4cb;" (goto "goto") (statement_identifier "LAB_0001d4cb") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int __regparm3 function_1(type_1 check_for_bad)

{
  int var_11;
  type_2 var_7;
  char *var_9;
  size_t var_17;
  int iVar5;
  int var_13;
  char *var_14;
  size_t var_15;
  int var_1;
  bool bVar7;
  type_3 tmp_state;
  
  var_11 = *(int *)(var_1 + 0x14);
  if (var_2 < 2) {
    do {
      if (var_3 != false) goto LAB_0001d4c6;
      if ((var_4 != (char *)0x0) && (var_4 < var_5)) {
        var_7 = (type_2)*var_4;
        if ((check_for_bad) || (*var_4 == '\0')) {
          var_6(var_7);
          var_7 = (type_2)(byte)*var_4;
        }
        var_4 = var_4 + 1;
        var_7 = var_7 & 0xff;
        goto LAB_0001d4cb;
      }
      var_9 = var_8();
    } while (var_9 != (char *)0x0);
  }
  else {
    do {
      var_14 = var_4;
      var_9 = var_5;
      if (var_3 != false) goto LAB_0001d4c6;
      if ((var_4 != (char *)0x0) && (var_4 < var_5)) {
        var_13 = var_10 + 1;
        if (var_10 == 0x7f) {
          var_13 = 0;
        }
        var_10 = var_13;
        if (cur_char_ring[var_13] != '\0') goto LAB_0001d5ea;
        var_15 = 0;
        goto LAB_0001d589;
      }
      var_9 = var_8();
    } while (var_9 != (char *)0x0);
  }
  var_7 = 0xfffff830;
LAB_0001d4cb:
  if (var_11 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_12();
  }
  return var_7;
  while( true ) {
    bVar7 = var_13 != 0x7f;
    cur_char_ring[var_13] = (char)var_15;
    iVar5 = var_13 + 1;
    var_13 = 0;
    if (bVar7) {
      var_13 = iVar5;
    }
    if (var_9 <= var_14 + var_15) break;
LAB_0001d589:
    tmp_state.__value = cur_mbstate.__value;
    tmp_state.__count = cur_mbstate.__count;
    var_15 = var_15 + 1;
    var_17 = var_16((type_4 *)0x0,var_14,var_15,(type_3 *)&tmp_state);
    if (0xfffffffc < var_17 - 2) {
      cur_char_ring[var_13] = '\x01';
      break;
    }
    if (var_17 != 0xfffffffe) {
      cur_char_ring[var_13] = (char)var_17;
      break;
    }
  }
  cur_mbstate.__count = tmp_state.__count;
  iVar5 = var_13 + 1;
  cur_mbstate.__value = tmp_state.__value;
  if (var_13 == 0x7f) {
    iVar5 = 0;
  }
  cur_char_ring[iVar5] = '\0';
LAB_0001d5ea:
  var_7 = (type_2)*var_14;
  if ((check_for_bad) || (*var_14 == '\0')) {
    var_6(var_7);
    var_7 = (type_2)(byte)*var_4;
    var_14 = var_4;
  }
  var_4 = var_14 + 1;
  var_7 = var_7 & 0xff;
  goto LAB_0001d4cb;
LAB_0001d4c6:
  var_7 = 0xfffffc18;
  goto LAB_0001d4cb;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

uint __regparm3 MASKED(char param_1)

{
  byte *pbVar1;
  byte bVar2;
  uint uVar3;
  int iVar4;
  size_t sVar5;
  int iVar6;
  byte *__s;
  size_t __n;
  int in_GS_OFFSET;
  bool bVar7;
  mbstate_t local_28;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x1d479;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (DAT_000c49c0 < 2) {
    do {
      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;
      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {
        bVar2 = *DAT_000c0f20;
        if ((param_1 != '\0') || (bVar2 == 0)) {
          FUN_0001b680();
          bVar2 = *DAT_000c0f20;
        }
        DAT_000c0f20 = DAT_000c0f20 + 1;
        uVar3 = (uint)bVar2;
        goto LAB_0001d4cb;
      }
      iVar4 = FUN_0001cc70();
    } while (iVar4 != 0);
  }
  else {
    do {
      __s = DAT_000c0f20;
      pbVar1 = DAT_000c0f1c;
      if (DAT_000c0f10 != '\0') goto LAB_0001d4c6;
      if ((DAT_000c0f20 != (byte *)0x0) && (DAT_000c0f20 < DAT_000c0f1c)) {
        iVar4 = DAT_000c0db4 + 1;
        if (DAT_000c0db4 == 0x7f) {
          iVar4 = 0;
        }
        DAT_000c0db4 = iVar4;
        if ((&DAT_000c0dc0)[iVar4] != '\0') goto LAB_0001d5ea;
        __n = 0;
        goto LAB_0001d589;
      }
      iVar4 = FUN_0001cc70();
    } while (iVar4 != 0);
  }
  uVar3 = 0xfffff830;
LAB_0001d4cb:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_00087be0();
  }
  return uVar3;
  while( true ) {
    bVar7 = iVar4 != 0x7f;
    (&DAT_000c0dc0)[iVar4] = (char)__n;
    iVar6 = iVar4 + 1;
    iVar4 = 0;
    if (bVar7) {
      iVar4 = iVar6;
    }
    if (pbVar1 <= __s + __n) break;
LAB_0001d589:
    local_28.__value = DAT_000c0e44;
    local_28.__count = DAT_000c0e40;
    __n = __n + 1;
    sVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,__n,&local_28);
    if (0xfffffffc < sVar5 - 2) {
      (&DAT_000c0dc0)[iVar4] = 1;
      break;
    }
    if (sVar5 != 0xfffffffe) {
      (&DAT_000c0dc0)[iVar4] = (char)sVar5;
      break;
    }
  }
  DAT_000c0e40 = local_28.__count;
  iVar6 = iVar4 + 1;
  DAT_000c0e44 = local_28.__value;
  if (iVar4 == 0x7f) {
    iVar6 = 0;
  }
  (&DAT_000c0dc0)[iVar6] = 0;
LAB_0001d5ea:
  bVar2 = *__s;
  if ((param_1 != '\0') || (bVar2 == 0)) {
    FUN_0001b680();
    bVar2 = *DAT_000c0f20;
    __s = DAT_000c0f20;
  }
  DAT_000c0f20 = __s + 1;
  uVar3 = (uint)bVar2;
  goto LAB_0001d4cb;
LAB_0001d4c6:
  uVar3 = 0xfffffc18;
  goto LAB_0001d4cb;
}

