
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

char * de_backslash(char *string)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  anon_union_4_2_91654ee9_for___value aVar4;
  size_t sVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  int in_GS_OFFSET;
  mbstate_t state;
  
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  state.__count = 0;
  state.__value.__wch = 0;
  sVar5 = strlen(string);
  uVar8 = 0;
  uVar6 = 0;
  iVar3 = state.__count;
  aVar4 = state.__value;
  do {
    while( true ) {
      uVar10 = uVar6;
      uVar7 = uVar8;
      state.__count = iVar3;
      state.__value = aVar4;
      if (sVar5 <= uVar10) {
        string[uVar7] = '\0';
        if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {
          return string;
        }
                    /* WARNING: Subroutine does not return */
        __stack_chk_fail_local();
      }
      if ((string[uVar10] == '\\') &&
         (((string[uVar10 + 1] + 0xa4U & 0xfb) == 0 || (string[uVar10 + 1] == '$')))) {
        uVar10 = uVar10 + 1;
      }
      if (1 < locale_mb_cur_max) break;
      uVar6 = uVar10 + 1;
      uVar8 = uVar6;
      if ((int)uVar7 < (int)uVar10) {
        string[uVar7] = string[uVar10];
        uVar8 = uVar7 + 1;
      }
    }
    bVar1 = string[uVar10];
    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {
      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {
        uVar6 = mbrtowc((wchar_t *)0x0,string + uVar10,sVar5 - uVar10,(mbstate_t *)&state);
        if (uVar6 < 0xfffffffe) goto LAB_000685e8;
        uVar6 = uVar10 + 1;
        state.__count = iVar3;
        state.__value = aVar4;
      }
      else {
        uVar6 = (uint)(bVar1 != 0);
LAB_000685e8:
        if (uVar6 != 0) goto LAB_00068685;
        uVar6 = uVar10 + 1;
      }
    }
    else {
      uVar6 = 1;
LAB_00068685:
      uVar6 = uVar6 + uVar10;
    }
    uVar8 = uVar6;
    iVar3 = state.__count;
    aVar4 = state.__value;
    if ((int)uVar7 < (int)uVar10) {
      do {
        uVar9 = uVar10 + 1;
        uVar8 = uVar7 + 1;
        string[uVar7] = string[uVar10];
        uVar7 = uVar8;
        uVar10 = uVar9;
      } while ((int)uVar9 < (int)uVar6);
    }
  } while( true );
}



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

char * de_backslash(char *param_1)

{
  byte bVar1;
  int iVar2;
  _union_54 _Var3;
  size_t sVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  int in_GS_OFFSET;
  mbstate_t local_28;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_28.__count = 0;
  local_28.__value.__wch = 0;
  sVar4 = strlen(param_1);
  uVar7 = 0;
  uVar5 = 0;
  iVar2 = local_28.__count;
  _Var3 = local_28.__value;
  do {
    while( true ) {
      uVar9 = uVar5;
      uVar6 = uVar7;
      local_28.__count = iVar2;
      local_28.__value = _Var3;
      if (sVar4 <= uVar9) {
        param_1[uVar6] = '\0';
        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
          return param_1;
        }
                    /* WARNING: Subroutine does not return */
        FUN_000ecc40();
      }
      if ((param_1[uVar9] == '\\') &&
         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {
        uVar9 = uVar9 + 1;
      }
      if (1 < locale_mb_cur_max) break;
      uVar5 = uVar9 + 1;
      uVar7 = uVar5;
      if ((int)uVar6 < (int)uVar9) {
        param_1[uVar6] = param_1[uVar9];
        uVar7 = uVar6 + 1;
      }
    }
    bVar1 = param_1[uVar9];
    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {
      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {
        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);
        if (uVar5 < 0xfffffffe) goto LAB_000685e8;
        uVar5 = uVar9 + 1;
        local_28.__count = iVar2;
        local_28.__value = _Var3;
      }
      else {
        uVar5 = (uint)(bVar1 != 0);
LAB_000685e8:
        if (uVar5 != 0) goto LAB_00068685;
        uVar5 = uVar9 + 1;
      }
    }
    else {
      uVar5 = 1;
LAB_00068685:
      uVar5 = uVar5 + uVar9;
    }
    uVar7 = uVar5;
    iVar2 = local_28.__count;
    _Var3 = local_28.__value;
    if ((int)uVar6 < (int)uVar9) {
      do {
        uVar8 = uVar9 + 1;
        uVar7 = uVar6 + 1;
        param_1[uVar6] = param_1[uVar9];
        uVar6 = uVar7;
        uVar9 = uVar8;
      } while ((int)uVar8 < (int)uVar5);
    }
  } while( true );
}


CALL 0x00032ddd
ADD EAX,0xe1adb
PUSH EBP
XOR EBP,EBP
PUSH EDI
PUSH ESI
XOR ESI,ESI
PUSH EBX
SUB ESP,0x48
MOV EBX,EAX
MOV EDI,EAX
MOV dword ptr [ESP + 0x20],EAX
MOV EDX,dword ptr [ESP + 0x5c]
MOV ECX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x38],ECX
XOR ECX,ECX
MOV dword ptr [ESP + 0x30],0x0
MOV dword ptr [ESP + 0x34],0x0
PUSH EDX
MOV dword ptr [ESP + 0x28],EDX
CALL 0x0002f760
ADD ESP,0x10
LEA ECX,[EDI + 0xd4b0]
MOV EDX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[EDI + 0xfffbb1c0]
MOV EDI,EDX
MOV dword ptr [ESP + 0xc],ECX
MOV dword ptr [ESP + 0x10],EAX
CMP ESI,dword ptr [ESP + 0x8]
JNC 0x00068601
CMP byte ptr [EDI + ESI*0x1],0x5c
JZ 0x00068660
MOV EAX,dword ptr [ESP + 0xc]
CMP dword ptr [EAX],0x1
JLE 0x00068640
LEA EAX,[EDI + ESI*0x1]
MOV EDX,dword ptr [ESP + 0x10]
MOVZX ECX,byte ptr [EAX]
MOV EBX,ECX
SHR BL,0x5
MOVZX EBX,BL
MOV EBX,dword ptr [EDX + EBX*0x4]
SHR EBX,CL
AND EBX,0x1
JNZ 0x00068680
MOV EDX,dword ptr [ESP + 0x14]
LEA EBX,[EDX + 0xd4b8]
MOV EDX,dword ptr [EBX]
TEST EDX,EDX
JZ 0x00068690
TEST CL,CL
JS 0x00068690
SETNZ AL
MOVZX EAX,AL
TEST EAX,EAX
JNZ 0x00068685
LEA EAX,[ESI + 0x1]
CMP ESI,EBP
JG 0x00068620
MOV ESI,EAX
MOV EBP,EAX
CMP ESI,dword ptr [ESP + 0x8]
JC 0x0006858f
MOV byte ptr [EDI + EBP*0x1],0x0
MOV EAX,EDI
MOV ECX,dword ptr [ESP + 0x2c]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x000686dc
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD ESI,0x1
ADD EBP,0x1
MOVZX EDX,byte ptr [EDI + ESI*0x1 + -0x1]
MOV byte ptr [EDI + EBP*0x1 + -0x1],DL
CMP EAX,ESI
JG 0x00068620
MOV ESI,EAX
JMP 0x00068589
LEA EAX,[ESI + 0x1]
CMP ESI,EBP
JLE 0x000685f7
MOVZX ECX,byte ptr [EDI + EAX*0x1 + -0x1]
ADD EBP,0x1
MOV ESI,EAX
MOV byte ptr [EDI + EBP*0x1 + -0x1],CL
JMP 0x00068589
MOVZX EAX,byte ptr [EDI + ESI*0x1 + 0x1]
LEA ECX,[EAX + -0x5c]
AND ECX,0xfb
JZ 0x00068678
CMP AL,0x24
JNZ 0x00068599
ADD ESI,0x1
JMP 0x00068599
MOV EAX,0x1
ADD EAX,ESI
JMP 0x000685f3
MOV ECX,dword ptr [ESP + 0x24]
MOV EBX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x18],ECX
LEA ECX,[ESP + 0x24]
MOV dword ptr [ESP + 0x1c],EBX
PUSH ECX
MOV EDX,dword ptr [ESP + 0xc]
SUB EDX,ESI
PUSH EDX
PUSH EAX
PUSH 0x0
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x0002f5b0
ADD ESP,0x10
CMP EAX,-0x2
JC 0x000685e8
MOV ECX,dword ptr [ESP + 0x18]
MOV EBX,dword ptr [ESP + 0x1c]
LEA EAX,[ESI + 0x1]
MOV dword ptr [ESP + 0x24],ECX
MOV dword ptr [ESP + 0x28],EBX
JMP 0x000685f3
CALL 0x000ecc40
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nchar * de_backslash(char *param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  mbstate_t local_28;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_28.__count = 0;\n  local_28.__value.__wch = 0;\n  sVar4 = strlen(param_1);\n  uVar7 = 0;\n  uVar5 = 0;\n  iVar2 = local_28.__count;\n  _Var3 = local_28.__value;\n  do {\n    while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }\n    bVar1 = param_1[uVar9];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }\n    uVar7 = uVar5;\n    iVar2 = local_28.__count;\n    _Var3 = local_28.__value;\n    if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }\n  } while( true );\n}\n\n" comment (function_definition "char * de_backslash(char *param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  mbstate_t local_28;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_28.__count = 0;\n  local_28.__value.__wch = 0;\n  sVar4 = strlen(param_1);\n  uVar7 = 0;\n  uVar5 = 0;\n  iVar2 = local_28.__count;\n  _Var3 = local_28.__value;\n  do {\n    while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }\n    bVar1 = param_1[uVar9];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }\n    uVar7 = uVar5;\n    iVar2 = local_28.__count;\n    _Var3 = local_28.__value;\n    if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }\n  } while( true );\n}" primitive_type (pointer_declarator "* de_backslash(char *param_1)" * (function_declarator "de_backslash(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  mbstate_t local_28;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_28.__count = 0;\n  local_28.__value.__wch = 0;\n  sVar4 = strlen(param_1);\n  uVar7 = 0;\n  uVar5 = 0;\n  iVar2 = local_28.__count;\n  _Var3 = local_28.__value;\n  do {\n    while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }\n    bVar1 = param_1[uVar9];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }\n    uVar7 = uVar5;\n    iVar2 = local_28.__count;\n    _Var3 = local_28.__value;\n    if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "_union_54 _Var3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "mbstate_t local_28;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_28.__count = 0;" (assignment_expression "local_28.__count = 0" (field_expression "local_28.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_28.__value.__wch = 0;" (assignment_expression "local_28.__value.__wch = 0" (field_expression "local_28.__value.__wch" (field_expression "local_28.__value" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "iVar2 = local_28.__count;" (assignment_expression "iVar2 = local_28.__count" identifier = (field_expression "local_28.__count" identifier . field_identifier)) ;) (expression_statement "_Var3 = local_28.__value;" (assignment_expression "_Var3 = local_28.__value" identifier = (field_expression "local_28.__value" identifier . field_identifier)) ;) (do_statement "do {\n    while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }\n    bVar1 = param_1[uVar9];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }\n    uVar7 = uVar5;\n    iVar2 = local_28.__count;\n    _Var3 = local_28.__value;\n    if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }\n  } while( true );" do (compound_statement "{\n    while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }\n    bVar1 = param_1[uVar9];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }\n    uVar7 = uVar5;\n    iVar2 = local_28.__count;\n    _Var3 = local_28.__value;\n    if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }\n  }" { (while_statement "while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }" { (expression_statement "uVar9 = uVar5;" (assignment_expression "uVar9 = uVar5" identifier = identifier) ;) (expression_statement "uVar6 = uVar7;" (assignment_expression "uVar6 = uVar7" identifier = identifier) ;) (expression_statement "local_28.__count = iVar2;" (assignment_expression "local_28.__count = iVar2" (field_expression "local_28.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_28.__value = _Var3;" (assignment_expression "local_28.__value = _Var3" (field_expression "local_28.__value" identifier . field_identifier) = identifier) ;) (if_statement "if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_000ecc40();\n      }" if (parenthesized_expression "(sVar4 <= uVar9)" ( (binary_expression "sVar4 <= uVar9" identifier <= identifier) )) (compound_statement "{\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_000ecc40();\n      }" { (expression_statement "param_1[uVar6] = '\0';" (assignment_expression "param_1[uVar6] = '\0'" (subscript_expression "param_1[uVar6]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\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          return param_1;\n        }" { (return_statement "return param_1;" return identifier ;) })) comment (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }" if (parenthesized_expression "((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$'))))" ( (binary_expression "(param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))" (parenthesized_expression "(param_1[uVar9] == '\\')" ( (binary_expression "param_1[uVar9] == '\\'" (subscript_expression "param_1[uVar9]" identifier [ identifier ]) == (char_literal "'\\'" ' escape_sequence ')) )) && (parenthesized_expression "(((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))" ( (parenthesized_expression "((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$'))" ( (binary_expression "(param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')" (binary_expression "(param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0" (parenthesized_expression "(param_1[uVar9 + 1] + 0xa4U & 0xfb)" ( (binary_expression "param_1[uVar9 + 1] + 0xa4U & 0xfb" (binary_expression "param_1[uVar9 + 1] + 0xa4U" (subscript_expression "param_1[uVar9 + 1]" identifier [ (binary_expression "uVar9 + 1" identifier + number_literal) ]) + number_literal) & number_literal) )) == number_literal) || (parenthesized_expression "(param_1[uVar9 + 1] == '$')" ( (binary_expression "param_1[uVar9 + 1] == '$'" (subscript_expression "param_1[uVar9 + 1]" identifier [ (binary_expression "uVar9 + 1" identifier + number_literal) ]) == (char_literal "'$'" ' character ')) ))) )) ))) )) (compound_statement "{\n        uVar9 = uVar9 + 1;\n      }" { (expression_statement "uVar9 = uVar9 + 1;" (assignment_expression "uVar9 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) })) (if_statement "if (1 < locale_mb_cur_max) break;" if (parenthesized_expression "(1 < locale_mb_cur_max)" ( (binary_expression "1 < locale_mb_cur_max" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = uVar9 + 1;" (assignment_expression "uVar5 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (if_statement "if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }" if (parenthesized_expression "((int)uVar6 < (int)uVar9)" ( (binary_expression "(int)uVar6 < (int)uVar9" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }" { (expression_statement "param_1[uVar6] = param_1[uVar9];" (assignment_expression "param_1[uVar6] = param_1[uVar9]" (subscript_expression "param_1[uVar6]" identifier [ identifier ]) = (subscript_expression "param_1[uVar9]" identifier [ identifier ])) ;) (expression_statement "uVar7 = uVar6 + 1;" (assignment_expression "uVar7 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) })) })) (expression_statement "bVar1 = param_1[uVar9];" (assignment_expression "bVar1 = param_1[uVar9]" identifier = (subscript_expression "param_1[uVar9]" identifier [ identifier ])) ;) (if_statement "if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }" if (parenthesized_expression "(((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[bVar1 >> 5]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "bVar1 >> 5" identifier >> number_literal) ]) >> (parenthesized_expression "(bVar1 & 0x1f)" ( (binary_expression "bVar1 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }" { (if_statement "if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }" if (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar1 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || ((char)bVar1 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }" { (expression_statement "uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);" (assignment_expression "uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28)" identifier (argument_list "((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (binary_expression "param_1 + uVar9" identifier + identifier) , (binary_expression "sVar4 - uVar9" identifier - identifier) , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (uVar5 < 0xfffffffe) goto LAB_000685e8;" if (parenthesized_expression "(uVar5 < 0xfffffffe)" ( (binary_expression "uVar5 < 0xfffffffe" identifier < number_literal) )) (goto_statement "goto LAB_000685e8;" goto statement_identifier ;)) (expression_statement "uVar5 = uVar9 + 1;" (assignment_expression "uVar5 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "local_28.__count = iVar2;" (assignment_expression "local_28.__count = iVar2" (field_expression "local_28.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_28.__value = _Var3;" (assignment_expression "local_28.__value = _Var3" (field_expression "local_28.__value" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }" else (compound_statement "{\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }" { (expression_statement "uVar5 = (uint)(bVar1 != 0);" (assignment_expression "uVar5 = (uint)(bVar1 != 0)" identifier = (call_expression "(uint)(bVar1 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )))) ;) (labeled_statement "LAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;" statement_identifier : (if_statement "if (uVar5 != 0) goto LAB_00068685;" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00068685;" goto statement_identifier ;))) (expression_statement "uVar5 = uVar9 + 1;" (assignment_expression "uVar5 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }" else (compound_statement "{\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00068685:\n      uVar5 = uVar5 + uVar9;" statement_identifier : (expression_statement "uVar5 = uVar5 + uVar9;" (assignment_expression "uVar5 = uVar5 + uVar9" identifier = (binary_expression "uVar5 + uVar9" identifier + identifier)) ;)) }))) (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (expression_statement "iVar2 = local_28.__count;" (assignment_expression "iVar2 = local_28.__count" identifier = (field_expression "local_28.__count" identifier . field_identifier)) ;) (expression_statement "_Var3 = local_28.__value;" (assignment_expression "_Var3 = local_28.__value" identifier = (field_expression "local_28.__value" identifier . field_identifier)) ;) (if_statement "if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }" if (parenthesized_expression "((int)uVar6 < (int)uVar9)" ( (binary_expression "(int)uVar6 < (int)uVar9" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }" { (do_statement "do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);" do (compound_statement "{\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      }" { (expression_statement "uVar8 = uVar9 + 1;" (assignment_expression "uVar8 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar6 + 1;" (assignment_expression "uVar7 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "param_1[uVar6] = param_1[uVar9];" (assignment_expression "param_1[uVar6] = param_1[uVar9]" (subscript_expression "param_1[uVar6]" identifier [ identifier ]) = (subscript_expression "param_1[uVar9]" identifier [ identifier ])) ;) (expression_statement "uVar6 = uVar7;" (assignment_expression "uVar6 = uVar7" identifier = identifier) ;) (expression_statement "uVar9 = uVar8;" (assignment_expression "uVar9 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "((int)uVar8 < (int)uVar5)" ( (binary_expression "(int)uVar8 < (int)uVar5" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Unknown calling convention */\n\nchar * de_backslash(char *string)\n\n{\n  byte bVar1;\n  int iVar2;\n  int iVar3;\n  anon_union_4_2_91654ee9_for___value aVar4;\n  size_t sVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int in_GS_OFFSET;\n  mbstate_t state;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  state.__count = 0;\n  state.__value.__wch = 0;\n  sVar5 = strlen(string);\n  uVar8 = 0;\n  uVar6 = 0;\n  iVar3 = state.__count;\n  aVar4 = state.__value;\n  do {\n    while( true ) {\n      uVar10 = uVar6;\n      uVar7 = uVar8;\n      state.__count = iVar3;\n      state.__value = aVar4;\n      if (sVar5 <= uVar10) {\n        string[uVar7] = '\0';\n        if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return string;\n        }\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      if ((string[uVar10] == '\\') &&\n         (((string[uVar10 + 1] + 0xa4U & 0xfb) == 0 || (string[uVar10 + 1] == '$')))) {\n        uVar10 = uVar10 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar6 = uVar10 + 1;\n      uVar8 = uVar6;\n      if ((int)uVar7 < (int)uVar10) {\n        string[uVar7] = string[uVar10];\n        uVar8 = uVar7 + 1;\n      }\n    }\n    bVar1 = string[uVar10];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar6 = mbrtowc((wchar_t *)0x0,string + uVar10,sVar5 - uVar10,(mbstate_t *)&state);\n        if (uVar6 < 0xfffffffe) goto LAB_000685e8;\n        uVar6 = uVar10 + 1;\n        state.__count = iVar3;\n        state.__value = aVar4;\n      }\n      else {\n        uVar6 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar6 != 0) goto LAB_00068685;\n        uVar6 = uVar10 + 1;\n      }\n    }\n    else {\n      uVar6 = 1;\nLAB_00068685:\n      uVar6 = uVar6 + uVar10;\n    }\n    uVar8 = uVar6;\n    iVar3 = state.__count;\n    aVar4 = state.__value;\n    if ((int)uVar7 < (int)uVar10) {\n      do {\n        uVar9 = uVar10 + 1;\n        uVar8 = uVar7 + 1;\n        string[uVar7] = string[uVar10];\n        uVar7 = uVar8;\n        uVar10 = uVar9;\n      } while ((int)uVar9 < (int)uVar6);\n    }\n  } while( true );\n}\n\n" comment comment (function_definition "char * de_backslash(char *string)\n\n{\n  byte bVar1;\n  int iVar2;\n  int iVar3;\n  anon_union_4_2_91654ee9_for___value aVar4;\n  size_t sVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int in_GS_OFFSET;\n  mbstate_t state;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  state.__count = 0;\n  state.__value.__wch = 0;\n  sVar5 = strlen(string);\n  uVar8 = 0;\n  uVar6 = 0;\n  iVar3 = state.__count;\n  aVar4 = state.__value;\n  do {\n    while( true ) {\n      uVar10 = uVar6;\n      uVar7 = uVar8;\n      state.__count = iVar3;\n      state.__value = aVar4;\n      if (sVar5 <= uVar10) {\n        string[uVar7] = '\0';\n        if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return string;\n        }\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      if ((string[uVar10] == '\\') &&\n         (((string[uVar10 + 1] + 0xa4U & 0xfb) == 0 || (string[uVar10 + 1] == '$')))) {\n        uVar10 = uVar10 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar6 = uVar10 + 1;\n      uVar8 = uVar6;\n      if ((int)uVar7 < (int)uVar10) {\n        string[uVar7] = string[uVar10];\n        uVar8 = uVar7 + 1;\n      }\n    }\n    bVar1 = string[uVar10];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar6 = mbrtowc((wchar_t *)0x0,string + uVar10,sVar5 - uVar10,(mbstate_t *)&state);\n        if (uVar6 < 0xfffffffe) goto LAB_000685e8;\n        uVar6 = uVar10 + 1;\n        state.__count = iVar3;\n        state.__value = aVar4;\n      }\n      else {\n        uVar6 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar6 != 0) goto LAB_00068685;\n        uVar6 = uVar10 + 1;\n      }\n    }\n    else {\n      uVar6 = 1;\nLAB_00068685:\n      uVar6 = uVar6 + uVar10;\n    }\n    uVar8 = uVar6;\n    iVar3 = state.__count;\n    aVar4 = state.__value;\n    if ((int)uVar7 < (int)uVar10) {\n      do {\n        uVar9 = uVar10 + 1;\n        uVar8 = uVar7 + 1;\n        string[uVar7] = string[uVar10];\n        uVar7 = uVar8;\n        uVar10 = uVar9;\n      } while ((int)uVar9 < (int)uVar6);\n    }\n  } while( true );\n}" primitive_type (pointer_declarator "* de_backslash(char *string)" * (function_declarator "de_backslash(char *string)" identifier (parameter_list "(char *string)" ( (parameter_declaration "char *string" primitive_type (pointer_declarator "*string" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  int iVar3;\n  anon_union_4_2_91654ee9_for___value aVar4;\n  size_t sVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int in_GS_OFFSET;\n  mbstate_t state;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  state.__count = 0;\n  state.__value.__wch = 0;\n  sVar5 = strlen(string);\n  uVar8 = 0;\n  uVar6 = 0;\n  iVar3 = state.__count;\n  aVar4 = state.__value;\n  do {\n    while( true ) {\n      uVar10 = uVar6;\n      uVar7 = uVar8;\n      state.__count = iVar3;\n      state.__value = aVar4;\n      if (sVar5 <= uVar10) {\n        string[uVar7] = '\0';\n        if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return string;\n        }\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      if ((string[uVar10] == '\\') &&\n         (((string[uVar10 + 1] + 0xa4U & 0xfb) == 0 || (string[uVar10 + 1] == '$')))) {\n        uVar10 = uVar10 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar6 = uVar10 + 1;\n      uVar8 = uVar6;\n      if ((int)uVar7 < (int)uVar10) {\n        string[uVar7] = string[uVar10];\n        uVar8 = uVar7 + 1;\n      }\n    }\n    bVar1 = string[uVar10];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar6 = mbrtowc((wchar_t *)0x0,string + uVar10,sVar5 - uVar10,(mbstate_t *)&state);\n        if (uVar6 < 0xfffffffe) goto LAB_000685e8;\n        uVar6 = uVar10 + 1;\n        state.__count = iVar3;\n        state.__value = aVar4;\n      }\n      else {\n        uVar6 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar6 != 0) goto LAB_00068685;\n        uVar6 = uVar10 + 1;\n      }\n    }\n    else {\n      uVar6 = 1;\nLAB_00068685:\n      uVar6 = uVar6 + uVar10;\n    }\n    uVar8 = uVar6;\n    iVar3 = state.__count;\n    aVar4 = state.__value;\n    if ((int)uVar7 < (int)uVar10) {\n      do {\n        uVar9 = uVar10 + 1;\n        uVar8 = uVar7 + 1;\n        string[uVar7] = string[uVar10];\n        uVar7 = uVar8;\n        uVar10 = uVar9;\n      } while ((int)uVar9 < (int)uVar6);\n    }\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "anon_union_4_2_91654ee9_for___value aVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "mbstate_t state;" type_identifier identifier ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "state.__count = 0;" (assignment_expression "state.__count = 0" (field_expression "state.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "state.__value.__wch = 0;" (assignment_expression "state.__value.__wch = 0" (field_expression "state.__value.__wch" (field_expression "state.__value" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "sVar5 = strlen(string);" (assignment_expression "sVar5 = strlen(string)" identifier = (call_expression "strlen(string)" identifier (argument_list "(string)" ( identifier )))) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "iVar3 = state.__count;" (assignment_expression "iVar3 = state.__count" identifier = (field_expression "state.__count" identifier . field_identifier)) ;) (expression_statement "aVar4 = state.__value;" (assignment_expression "aVar4 = state.__value" identifier = (field_expression "state.__value" identifier . field_identifier)) ;) (do_statement "do {\n    while( true ) {\n      uVar10 = uVar6;\n      uVar7 = uVar8;\n      state.__count = iVar3;\n      state.__value = aVar4;\n      if (sVar5 <= uVar10) {\n        string[uVar7] = '\0';\n        if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return string;\n        }\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      if ((string[uVar10] == '\\') &&\n         (((string[uVar10 + 1] + 0xa4U & 0xfb) == 0 || (string[uVar10 + 1] == '$')))) {\n        uVar10 = uVar10 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar6 = uVar10 + 1;\n      uVar8 = uVar6;\n      if ((int)uVar7 < (int)uVar10) {\n        string[uVar7] = string[uVar10];\n        uVar8 = uVar7 + 1;\n      }\n    }\n    bVar1 = string[uVar10];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar6 = mbrtowc((wchar_t *)0x0,string + uVar10,sVar5 - uVar10,(mbstate_t *)&state);\n        if (uVar6 < 0xfffffffe) goto LAB_000685e8;\n        uVar6 = uVar10 + 1;\n        state.__count = iVar3;\n        state.__value = aVar4;\n      }\n      else {\n        uVar6 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar6 != 0) goto LAB_00068685;\n        uVar6 = uVar10 + 1;\n      }\n    }\n    else {\n      uVar6 = 1;\nLAB_00068685:\n      uVar6 = uVar6 + uVar10;\n    }\n    uVar8 = uVar6;\n    iVar3 = state.__count;\n    aVar4 = state.__value;\n    if ((int)uVar7 < (int)uVar10) {\n      do {\n        uVar9 = uVar10 + 1;\n        uVar8 = uVar7 + 1;\n        string[uVar7] = string[uVar10];\n        uVar7 = uVar8;\n        uVar10 = uVar9;\n      } while ((int)uVar9 < (int)uVar6);\n    }\n  } while( true );" do (compound_statement "{\n    while( true ) {\n      uVar10 = uVar6;\n      uVar7 = uVar8;\n      state.__count = iVar3;\n      state.__value = aVar4;\n      if (sVar5 <= uVar10) {\n        string[uVar7] = '\0';\n        if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return string;\n        }\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      if ((string[uVar10] == '\\') &&\n         (((string[uVar10 + 1] + 0xa4U & 0xfb) == 0 || (string[uVar10 + 1] == '$')))) {\n        uVar10 = uVar10 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar6 = uVar10 + 1;\n      uVar8 = uVar6;\n      if ((int)uVar7 < (int)uVar10) {\n        string[uVar7] = string[uVar10];\n        uVar8 = uVar7 + 1;\n      }\n    }\n    bVar1 = string[uVar10];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar6 = mbrtowc((wchar_t *)0x0,string + uVar10,sVar5 - uVar10,(mbstate_t *)&state);\n        if (uVar6 < 0xfffffffe) goto LAB_000685e8;\n        uVar6 = uVar10 + 1;\n        state.__count = iVar3;\n        state.__value = aVar4;\n      }\n      else {\n        uVar6 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar6 != 0) goto LAB_00068685;\n        uVar6 = uVar10 + 1;\n      }\n    }\n    else {\n      uVar6 = 1;\nLAB_00068685:\n      uVar6 = uVar6 + uVar10;\n    }\n    uVar8 = uVar6;\n    iVar3 = state.__count;\n    aVar4 = state.__value;\n    if ((int)uVar7 < (int)uVar10) {\n      do {\n        uVar9 = uVar10 + 1;\n        uVar8 = uVar7 + 1;\n        string[uVar7] = string[uVar10];\n        uVar7 = uVar8;\n        uVar10 = uVar9;\n      } while ((int)uVar9 < (int)uVar6);\n    }\n  }" { (while_statement "while( true ) {\n      uVar10 = uVar6;\n      uVar7 = uVar8;\n      state.__count = iVar3;\n      state.__value = aVar4;\n      if (sVar5 <= uVar10) {\n        string[uVar7] = '\0';\n        if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return string;\n        }\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      if ((string[uVar10] == '\\') &&\n         (((string[uVar10 + 1] + 0xa4U & 0xfb) == 0 || (string[uVar10 + 1] == '$')))) {\n        uVar10 = uVar10 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar6 = uVar10 + 1;\n      uVar8 = uVar6;\n      if ((int)uVar7 < (int)uVar10) {\n        string[uVar7] = string[uVar10];\n        uVar8 = uVar7 + 1;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar10 = uVar6;\n      uVar7 = uVar8;\n      state.__count = iVar3;\n      state.__value = aVar4;\n      if (sVar5 <= uVar10) {\n        string[uVar7] = '\0';\n        if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return string;\n        }\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      if ((string[uVar10] == '\\') &&\n         (((string[uVar10 + 1] + 0xa4U & 0xfb) == 0 || (string[uVar10 + 1] == '$')))) {\n        uVar10 = uVar10 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar6 = uVar10 + 1;\n      uVar8 = uVar6;\n      if ((int)uVar7 < (int)uVar10) {\n        string[uVar7] = string[uVar10];\n        uVar8 = uVar7 + 1;\n      }\n    }" { (expression_statement "uVar10 = uVar6;" (assignment_expression "uVar10 = uVar6" identifier = identifier) ;) (expression_statement "uVar7 = uVar8;" (assignment_expression "uVar7 = uVar8" identifier = identifier) ;) (expression_statement "state.__count = iVar3;" (assignment_expression "state.__count = iVar3" (field_expression "state.__count" identifier . field_identifier) = identifier) ;) (expression_statement "state.__value = aVar4;" (assignment_expression "state.__value = aVar4" (field_expression "state.__value" identifier . field_identifier) = identifier) ;) (if_statement "if (sVar5 <= uVar10) {\n        string[uVar7] = '\0';\n        if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return string;\n        }\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }" if (parenthesized_expression "(sVar5 <= uVar10)" ( (binary_expression "sVar5 <= uVar10" identifier <= identifier) )) (compound_statement "{\n        string[uVar7] = '\0';\n        if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return string;\n        }\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }" { (expression_statement "string[uVar7] = '\0';" (assignment_expression "string[uVar7] = '\0'" (subscript_expression "string[uVar7]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return string;\n        }" if (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 == *(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          return string;\n        }" { (return_statement "return string;" return identifier ;) })) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((string[uVar10] == '\\') &&\n         (((string[uVar10 + 1] + 0xa4U & 0xfb) == 0 || (string[uVar10 + 1] == '$')))) {\n        uVar10 = uVar10 + 1;\n      }" if (parenthesized_expression "((string[uVar10] == '\\') &&\n         (((string[uVar10 + 1] + 0xa4U & 0xfb) == 0 || (string[uVar10 + 1] == '$'))))" ( (binary_expression "(string[uVar10] == '\\') &&\n         (((string[uVar10 + 1] + 0xa4U & 0xfb) == 0 || (string[uVar10 + 1] == '$')))" (parenthesized_expression "(string[uVar10] == '\\')" ( (binary_expression "string[uVar10] == '\\'" (subscript_expression "string[uVar10]" identifier [ identifier ]) == (char_literal "'\\'" ' escape_sequence ')) )) && (parenthesized_expression "(((string[uVar10 + 1] + 0xa4U & 0xfb) == 0 || (string[uVar10 + 1] == '$')))" ( (parenthesized_expression "((string[uVar10 + 1] + 0xa4U & 0xfb) == 0 || (string[uVar10 + 1] == '$'))" ( (binary_expression "(string[uVar10 + 1] + 0xa4U & 0xfb) == 0 || (string[uVar10 + 1] == '$')" (binary_expression "(string[uVar10 + 1] + 0xa4U & 0xfb) == 0" (parenthesized_expression "(string[uVar10 + 1] + 0xa4U & 0xfb)" ( (binary_expression "string[uVar10 + 1] + 0xa4U & 0xfb" (binary_expression "string[uVar10 + 1] + 0xa4U" (subscript_expression "string[uVar10 + 1]" identifier [ (binary_expression "uVar10 + 1" identifier + number_literal) ]) + number_literal) & number_literal) )) == number_literal) || (parenthesized_expression "(string[uVar10 + 1] == '$')" ( (binary_expression "string[uVar10 + 1] == '$'" (subscript_expression "string[uVar10 + 1]" identifier [ (binary_expression "uVar10 + 1" identifier + number_literal) ]) == (char_literal "'$'" ' character ')) ))) )) ))) )) (compound_statement "{\n        uVar10 = uVar10 + 1;\n      }" { (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) })) (if_statement "if (1 < locale_mb_cur_max) break;" if (parenthesized_expression "(1 < locale_mb_cur_max)" ( (binary_expression "1 < locale_mb_cur_max" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar10 + 1;" (assignment_expression "uVar6 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" identifier = identifier) ;) (if_statement "if ((int)uVar7 < (int)uVar10) {\n        string[uVar7] = string[uVar10];\n        uVar8 = uVar7 + 1;\n      }" if (parenthesized_expression "((int)uVar7 < (int)uVar10)" ( (binary_expression "(int)uVar7 < (int)uVar10" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        string[uVar7] = string[uVar10];\n        uVar8 = uVar7 + 1;\n      }" { (expression_statement "string[uVar7] = string[uVar10];" (assignment_expression "string[uVar7] = string[uVar10]" (subscript_expression "string[uVar7]" identifier [ identifier ]) = (subscript_expression "string[uVar10]" identifier [ identifier ])) ;) (expression_statement "uVar8 = uVar7 + 1;" (assignment_expression "uVar8 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) })) })) (expression_statement "bVar1 = string[uVar10];" (assignment_expression "bVar1 = string[uVar10]" identifier = (subscript_expression "string[uVar10]" identifier [ identifier ])) ;) (if_statement "if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar6 = mbrtowc((wchar_t *)0x0,string + uVar10,sVar5 - uVar10,(mbstate_t *)&state);\n        if (uVar6 < 0xfffffffe) goto LAB_000685e8;\n        uVar6 = uVar10 + 1;\n        state.__count = iVar3;\n        state.__value = aVar4;\n      }\n      else {\n        uVar6 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar6 != 0) goto LAB_00068685;\n        uVar6 = uVar10 + 1;\n      }\n    }\n    else {\n      uVar6 = 1;\nLAB_00068685:\n      uVar6 = uVar6 + uVar10;\n    }" if (parenthesized_expression "(((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[bVar1 >> 5]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "bVar1 >> 5" identifier >> number_literal) ]) >> (parenthesized_expression "(bVar1 & 0x1f)" ( (binary_expression "bVar1 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar6 = mbrtowc((wchar_t *)0x0,string + uVar10,sVar5 - uVar10,(mbstate_t *)&state);\n        if (uVar6 < 0xfffffffe) goto LAB_000685e8;\n        uVar6 = uVar10 + 1;\n        state.__count = iVar3;\n        state.__value = aVar4;\n      }\n      else {\n        uVar6 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar6 != 0) goto LAB_00068685;\n        uVar6 = uVar10 + 1;\n      }\n    }" { (if_statement "if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar6 = mbrtowc((wchar_t *)0x0,string + uVar10,sVar5 - uVar10,(mbstate_t *)&state);\n        if (uVar6 < 0xfffffffe) goto LAB_000685e8;\n        uVar6 = uVar10 + 1;\n        state.__count = iVar3;\n        state.__value = aVar4;\n      }\n      else {\n        uVar6 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar6 != 0) goto LAB_00068685;\n        uVar6 = uVar10 + 1;\n      }" if (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar1 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || ((char)bVar1 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        uVar6 = mbrtowc((wchar_t *)0x0,string + uVar10,sVar5 - uVar10,(mbstate_t *)&state);\n        if (uVar6 < 0xfffffffe) goto LAB_000685e8;\n        uVar6 = uVar10 + 1;\n        state.__count = iVar3;\n        state.__value = aVar4;\n      }" { (expression_statement "uVar6 = mbrtowc((wchar_t *)0x0,string + uVar10,sVar5 - uVar10,(mbstate_t *)&state);" (assignment_expression "uVar6 = mbrtowc((wchar_t *)0x0,string + uVar10,sVar5 - uVar10,(mbstate_t *)&state)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,string + uVar10,sVar5 - uVar10,(mbstate_t *)&state)" identifier (argument_list "((wchar_t *)0x0,string + uVar10,sVar5 - uVar10,(mbstate_t *)&state)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (binary_expression "string + uVar10" identifier + identifier) , (binary_expression "sVar5 - uVar10" identifier - identifier) , (cast_expression "(mbstate_t *)&state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&state" & identifier)) )))) ;) (if_statement "if (uVar6 < 0xfffffffe) goto LAB_000685e8;" if (parenthesized_expression "(uVar6 < 0xfffffffe)" ( (binary_expression "uVar6 < 0xfffffffe" identifier < number_literal) )) (goto_statement "goto LAB_000685e8;" goto statement_identifier ;)) (expression_statement "uVar6 = uVar10 + 1;" (assignment_expression "uVar6 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "state.__count = iVar3;" (assignment_expression "state.__count = iVar3" (field_expression "state.__count" identifier . field_identifier) = identifier) ;) (expression_statement "state.__value = aVar4;" (assignment_expression "state.__value = aVar4" (field_expression "state.__value" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\n        uVar6 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar6 != 0) goto LAB_00068685;\n        uVar6 = uVar10 + 1;\n      }" else (compound_statement "{\n        uVar6 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar6 != 0) goto LAB_00068685;\n        uVar6 = uVar10 + 1;\n      }" { (expression_statement "uVar6 = (uint)(bVar1 != 0);" (assignment_expression "uVar6 = (uint)(bVar1 != 0)" identifier = (call_expression "(uint)(bVar1 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )))) ;) (labeled_statement "LAB_000685e8:\n        if (uVar6 != 0) goto LAB_00068685;" statement_identifier : (if_statement "if (uVar6 != 0) goto LAB_00068685;" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00068685;" goto statement_identifier ;))) (expression_statement "uVar6 = uVar10 + 1;" (assignment_expression "uVar6 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n      uVar6 = 1;\nLAB_00068685:\n      uVar6 = uVar6 + uVar10;\n    }" else (compound_statement "{\n      uVar6 = 1;\nLAB_00068685:\n      uVar6 = uVar6 + uVar10;\n    }" { (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00068685:\n      uVar6 = uVar6 + uVar10;" statement_identifier : (expression_statement "uVar6 = uVar6 + uVar10;" (assignment_expression "uVar6 = uVar6 + uVar10" identifier = (binary_expression "uVar6 + uVar10" identifier + identifier)) ;)) }))) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" identifier = identifier) ;) (expression_statement "iVar3 = state.__count;" (assignment_expression "iVar3 = state.__count" identifier = (field_expression "state.__count" identifier . field_identifier)) ;) (expression_statement "aVar4 = state.__value;" (assignment_expression "aVar4 = state.__value" identifier = (field_expression "state.__value" identifier . field_identifier)) ;) (if_statement "if ((int)uVar7 < (int)uVar10) {\n      do {\n        uVar9 = uVar10 + 1;\n        uVar8 = uVar7 + 1;\n        string[uVar7] = string[uVar10];\n        uVar7 = uVar8;\n        uVar10 = uVar9;\n      } while ((int)uVar9 < (int)uVar6);\n    }" if (parenthesized_expression "((int)uVar7 < (int)uVar10)" ( (binary_expression "(int)uVar7 < (int)uVar10" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      do {\n        uVar9 = uVar10 + 1;\n        uVar8 = uVar7 + 1;\n        string[uVar7] = string[uVar10];\n        uVar7 = uVar8;\n        uVar10 = uVar9;\n      } while ((int)uVar9 < (int)uVar6);\n    }" { (do_statement "do {\n        uVar9 = uVar10 + 1;\n        uVar8 = uVar7 + 1;\n        string[uVar7] = string[uVar10];\n        uVar7 = uVar8;\n        uVar10 = uVar9;\n      } while ((int)uVar9 < (int)uVar6);" do (compound_statement "{\n        uVar9 = uVar10 + 1;\n        uVar8 = uVar7 + 1;\n        string[uVar7] = string[uVar10];\n        uVar7 = uVar8;\n        uVar10 = uVar9;\n      }" { (expression_statement "uVar9 = uVar10 + 1;" (assignment_expression "uVar9 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar7 + 1;" (assignment_expression "uVar8 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "string[uVar7] = string[uVar10];" (assignment_expression "string[uVar7] = string[uVar10]" (subscript_expression "string[uVar7]" identifier [ identifier ]) = (subscript_expression "string[uVar10]" identifier [ identifier ])) ;) (expression_statement "uVar7 = uVar8;" (assignment_expression "uVar7 = uVar8" identifier = identifier) ;) (expression_statement "uVar10 = uVar9;" (assignment_expression "uVar10 = uVar9" identifier = identifier) ;) }) while (parenthesized_expression "((int)uVar9 < (int)uVar6)" ( (binary_expression "(int)uVar9 < (int)uVar6" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "char * de_backslash(char *param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  mbstate_t local_28;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_28.__count = 0;\n  local_28.__value.__wch = 0;\n  sVar4 = strlen(param_1);\n  uVar7 = 0;\n  uVar5 = 0;\n  iVar2 = local_28.__count;\n  _Var3 = local_28.__value;\n  do {\n    while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }\n    bVar1 = param_1[uVar9];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }\n    uVar7 = uVar5;\n    iVar2 = local_28.__count;\n    _Var3 = local_28.__value;\n    if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }\n  } while( true );\n}\n\n" (function_definition "char * de_backslash(char *param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  mbstate_t local_28;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_28.__count = 0;\n  local_28.__value.__wch = 0;\n  sVar4 = strlen(param_1);\n  uVar7 = 0;\n  uVar5 = 0;\n  iVar2 = local_28.__count;\n  _Var3 = local_28.__value;\n  do {\n    while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }\n    bVar1 = param_1[uVar9];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }\n    uVar7 = uVar5;\n    iVar2 = local_28.__count;\n    _Var3 = local_28.__value;\n    if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }\n  } while( true );\n}" primitive_type (pointer_declarator "* de_backslash(char *param_1)" * (function_declarator "de_backslash(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  mbstate_t local_28;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_28.__count = 0;\n  local_28.__value.__wch = 0;\n  sVar4 = strlen(param_1);\n  uVar7 = 0;\n  uVar5 = 0;\n  iVar2 = local_28.__count;\n  _Var3 = local_28.__value;\n  do {\n    while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }\n    bVar1 = param_1[uVar9];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }\n    uVar7 = uVar5;\n    iVar2 = local_28.__count;\n    _Var3 = local_28.__value;\n    if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "_union_54 _Var3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "mbstate_t local_28;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_28.__count = 0;" (assignment_expression "local_28.__count = 0" (field_expression "local_28.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_28.__value.__wch = 0;" (assignment_expression "local_28.__value.__wch = 0" (field_expression "local_28.__value.__wch" (field_expression "local_28.__value" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "iVar2 = local_28.__count;" (assignment_expression "iVar2 = local_28.__count" identifier = (field_expression "local_28.__count" identifier . field_identifier)) ;) (expression_statement "_Var3 = local_28.__value;" (assignment_expression "_Var3 = local_28.__value" identifier = (field_expression "local_28.__value" identifier . field_identifier)) ;) (do_statement "do {\n    while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }\n    bVar1 = param_1[uVar9];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }\n    uVar7 = uVar5;\n    iVar2 = local_28.__count;\n    _Var3 = local_28.__value;\n    if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }\n  } while( true );" do (compound_statement "{\n    while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }\n    bVar1 = param_1[uVar9];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }\n    uVar7 = uVar5;\n    iVar2 = local_28.__count;\n    _Var3 = local_28.__value;\n    if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }\n  }" { (while_statement "while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }" { (expression_statement "uVar9 = uVar5;" (assignment_expression "uVar9 = uVar5" identifier = identifier) ;) (expression_statement "uVar6 = uVar7;" (assignment_expression "uVar6 = uVar7" identifier = identifier) ;) (expression_statement "local_28.__count = iVar2;" (assignment_expression "local_28.__count = iVar2" (field_expression "local_28.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_28.__value = _Var3;" (assignment_expression "local_28.__value = _Var3" (field_expression "local_28.__value" identifier . field_identifier) = identifier) ;) (if_statement "if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }" if (parenthesized_expression "(sVar4 <= uVar9)" ( (binary_expression "sVar4 <= uVar9" identifier <= identifier) )) (compound_statement "{\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }" { (expression_statement "param_1[uVar6] = '\0';" (assignment_expression "param_1[uVar6] = '\0'" (subscript_expression "param_1[uVar6]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\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          return param_1;\n        }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }" if (parenthesized_expression "((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$'))))" ( (binary_expression "(param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))" (parenthesized_expression "(param_1[uVar9] == '\\')" ( (binary_expression "param_1[uVar9] == '\\'" (subscript_expression "param_1[uVar9]" identifier [ identifier ]) == (char_literal "'\\'" ' escape_sequence ')) )) && (parenthesized_expression "(((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))" ( (parenthesized_expression "((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$'))" ( (binary_expression "(param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')" (binary_expression "(param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0" (parenthesized_expression "(param_1[uVar9 + 1] + 0xa4U & 0xfb)" ( (binary_expression "param_1[uVar9 + 1] + 0xa4U & 0xfb" (binary_expression "param_1[uVar9 + 1] + 0xa4U" (subscript_expression "param_1[uVar9 + 1]" identifier [ (binary_expression "uVar9 + 1" identifier + number_literal) ]) + number_literal) & number_literal) )) == number_literal) || (parenthesized_expression "(param_1[uVar9 + 1] == '$')" ( (binary_expression "param_1[uVar9 + 1] == '$'" (subscript_expression "param_1[uVar9 + 1]" identifier [ (binary_expression "uVar9 + 1" identifier + number_literal) ]) == (char_literal "'$'" ' character ')) ))) )) ))) )) (compound_statement "{\n        uVar9 = uVar9 + 1;\n      }" { (expression_statement "uVar9 = uVar9 + 1;" (assignment_expression "uVar9 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) })) (if_statement "if (1 < locale_mb_cur_max) break;" if (parenthesized_expression "(1 < locale_mb_cur_max)" ( (binary_expression "1 < locale_mb_cur_max" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = uVar9 + 1;" (assignment_expression "uVar5 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (if_statement "if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }" if (parenthesized_expression "((int)uVar6 < (int)uVar9)" ( (binary_expression "(int)uVar6 < (int)uVar9" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }" { (expression_statement "param_1[uVar6] = param_1[uVar9];" (assignment_expression "param_1[uVar6] = param_1[uVar9]" (subscript_expression "param_1[uVar6]" identifier [ identifier ]) = (subscript_expression "param_1[uVar9]" identifier [ identifier ])) ;) (expression_statement "uVar7 = uVar6 + 1;" (assignment_expression "uVar7 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) })) })) (expression_statement "bVar1 = param_1[uVar9];" (assignment_expression "bVar1 = param_1[uVar9]" identifier = (subscript_expression "param_1[uVar9]" identifier [ identifier ])) ;) (if_statement "if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }" if (parenthesized_expression "(((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[bVar1 >> 5]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "bVar1 >> 5" identifier >> number_literal) ]) >> (parenthesized_expression "(bVar1 & 0x1f)" ( (binary_expression "bVar1 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }" { (if_statement "if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }" if (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar1 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || ((char)bVar1 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }" { (expression_statement "uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);" (assignment_expression "uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28)" identifier (argument_list "((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (binary_expression "param_1 + uVar9" identifier + identifier) , (binary_expression "sVar4 - uVar9" identifier - identifier) , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (uVar5 < 0xfffffffe) goto LAB_000685e8;" if (parenthesized_expression "(uVar5 < 0xfffffffe)" ( (binary_expression "uVar5 < 0xfffffffe" identifier < number_literal) )) (goto_statement "goto LAB_000685e8;" goto statement_identifier ;)) (expression_statement "uVar5 = uVar9 + 1;" (assignment_expression "uVar5 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "local_28.__count = iVar2;" (assignment_expression "local_28.__count = iVar2" (field_expression "local_28.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_28.__value = _Var3;" (assignment_expression "local_28.__value = _Var3" (field_expression "local_28.__value" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }" else (compound_statement "{\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }" { (expression_statement "uVar5 = (uint)(bVar1 != 0);" (assignment_expression "uVar5 = (uint)(bVar1 != 0)" identifier = (call_expression "(uint)(bVar1 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )))) ;) (labeled_statement "LAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;" statement_identifier : (if_statement "if (uVar5 != 0) goto LAB_00068685;" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00068685;" goto statement_identifier ;))) (expression_statement "uVar5 = uVar9 + 1;" (assignment_expression "uVar5 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }" else (compound_statement "{\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00068685:\n      uVar5 = uVar5 + uVar9;" statement_identifier : (expression_statement "uVar5 = uVar5 + uVar9;" (assignment_expression "uVar5 = uVar5 + uVar9" identifier = (binary_expression "uVar5 + uVar9" identifier + identifier)) ;)) }))) (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (expression_statement "iVar2 = local_28.__count;" (assignment_expression "iVar2 = local_28.__count" identifier = (field_expression "local_28.__count" identifier . field_identifier)) ;) (expression_statement "_Var3 = local_28.__value;" (assignment_expression "_Var3 = local_28.__value" identifier = (field_expression "local_28.__value" identifier . field_identifier)) ;) (if_statement "if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }" if (parenthesized_expression "((int)uVar6 < (int)uVar9)" ( (binary_expression "(int)uVar6 < (int)uVar9" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }" { (do_statement "do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);" do (compound_statement "{\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      }" { (expression_statement "uVar8 = uVar9 + 1;" (assignment_expression "uVar8 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar6 + 1;" (assignment_expression "uVar7 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "param_1[uVar6] = param_1[uVar9];" (assignment_expression "param_1[uVar6] = param_1[uVar9]" (subscript_expression "param_1[uVar6]" identifier [ identifier ]) = (subscript_expression "param_1[uVar9]" identifier [ identifier ])) ;) (expression_statement "uVar6 = uVar7;" (assignment_expression "uVar6 = uVar7" identifier = identifier) ;) (expression_statement "uVar9 = uVar8;" (assignment_expression "uVar9 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "((int)uVar8 < (int)uVar5)" ( (binary_expression "(int)uVar8 < (int)uVar5" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression (field_expression IDENT . field_identifier) . field_identifier) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (char_literal ' escape_sequence ')) ;) (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 { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) + LIT) & LIT) )) == LIT) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) == (char_literal ' character ')) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression IDENT >> LIT) ]) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , (binary_expression IDENT + IDENT) , (binary_expression IDENT - IDENT) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "char * de_backslash(char *param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  mbstate_t local_28;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_28.__count = 0;\n  local_28.__value.__wch = 0;\n  sVar4 = strlen(param_1);\n  uVar7 = 0;\n  uVar5 = 0;\n  iVar2 = local_28.__count;\n  _Var3 = local_28.__value;\n  do {\n    while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }\n    bVar1 = param_1[uVar9];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }\n    uVar7 = uVar5;\n    iVar2 = local_28.__count;\n    _Var3 = local_28.__value;\n    if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }\n  } while( true );\n}" (primitive_type "char") (pointer_declarator "* de_backslash(char *param_1)" (* "*") (function_declarator "de_backslash(char *param_1)" (identifier "de_backslash") (parameter_list "(char *param_1)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")")))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  mbstate_t local_28;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_28.__count = 0;\n  local_28.__value.__wch = 0;\n  sVar4 = strlen(param_1);\n  uVar7 = 0;\n  uVar5 = 0;\n  iVar2 = local_28.__count;\n  _Var3 = local_28.__value;\n  do {\n    while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }\n    bVar1 = param_1[uVar9];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }\n    uVar7 = uVar5;\n    iVar2 = local_28.__count;\n    _Var3 = local_28.__value;\n    if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }\n  } while( true );\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "_union_54 _Var3;" (type_identifier "_union_54") (identifier "_Var3") (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "mbstate_t local_28;" (type_identifier "mbstate_t") (identifier "local_28") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_28.__count = 0;" (assignment_expression "local_28.__count = 0" (field_expression "local_28.__count" (identifier "local_28") (. ".") (field_identifier "__count")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28.__value.__wch = 0;" (assignment_expression "local_28.__value.__wch = 0" (field_expression "local_28.__value.__wch" (field_expression "local_28.__value" (identifier "local_28") (. ".") (field_identifier "__value")) (. ".") (field_identifier "__wch")) (= "=") (number_literal "0")) (; ";")) (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" (identifier "sVar4") (= "=") (call_expression "strlen(param_1)" (identifier "strlen") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar2 = local_28.__count;" (assignment_expression "iVar2 = local_28.__count" (identifier "iVar2") (= "=") (field_expression "local_28.__count" (identifier "local_28") (. ".") (field_identifier "__count"))) (; ";")) (expression_statement "_Var3 = local_28.__value;" (assignment_expression "_Var3 = local_28.__value" (identifier "_Var3") (= "=") (field_expression "local_28.__value" (identifier "local_28") (. ".") (field_identifier "__value"))) (; ";")) (do_statement "do {\n    while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }\n    bVar1 = param_1[uVar9];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }\n    uVar7 = uVar5;\n    iVar2 = local_28.__count;\n    _Var3 = local_28.__value;\n    if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }\n  } while( true );" (do "do") (compound_statement "{\n    while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }\n    bVar1 = param_1[uVar9];\n    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }\n    uVar7 = uVar5;\n    iVar2 = local_28.__count;\n    _Var3 = local_28.__value;\n    if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }\n  }" ({ "{") (while_statement "while( true ) {\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar9 = uVar5;\n      uVar6 = uVar7;\n      local_28.__count = iVar2;\n      local_28.__value = _Var3;\n      if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }\n      if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }\n      if (1 < locale_mb_cur_max) break;\n      uVar5 = uVar9 + 1;\n      uVar7 = uVar5;\n      if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }\n    }" ({ "{") (expression_statement "uVar9 = uVar5;" (assignment_expression "uVar9 = uVar5" (identifier "uVar9") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar6 = uVar7;" (assignment_expression "uVar6 = uVar7" (identifier "uVar6") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "local_28.__count = iVar2;" (assignment_expression "local_28.__count = iVar2" (field_expression "local_28.__count" (identifier "local_28") (. ".") (field_identifier "__count")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "local_28.__value = _Var3;" (assignment_expression "local_28.__value = _Var3" (field_expression "local_28.__value" (identifier "local_28") (. ".") (field_identifier "__value")) (= "=") (identifier "_Var3")) (; ";")) (if_statement "if (sVar4 <= uVar9) {\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }" (if "if") (parenthesized_expression "(sVar4 <= uVar9)" (( "(") (binary_expression "sVar4 <= uVar9" (identifier "sVar4") (<= "<=") (identifier "uVar9")) () ")")) (compound_statement "{\n        param_1[uVar6] = '\0';\n        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\n        }\n                    \n        FUN_000ecc40();\n      }" ({ "{") (expression_statement "param_1[uVar6] = '\0';" (assignment_expression "param_1[uVar6] = '\0'" (subscript_expression "param_1[uVar6]" (identifier "param_1") ([ "[") (identifier "uVar6") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n          return param_1;\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          return param_1;\n        }" ({ "{") (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" (identifier "FUN_000ecc40") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if ((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {\n        uVar9 = uVar9 + 1;\n      }" (if "if") (parenthesized_expression "((param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$'))))" (( "(") (binary_expression "(param_1[uVar9] == '\\') &&\n         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))" (parenthesized_expression "(param_1[uVar9] == '\\')" (( "(") (binary_expression "param_1[uVar9] == '\\'" (subscript_expression "param_1[uVar9]" (identifier "param_1") ([ "[") (identifier "uVar9") (] "]")) (== "==") (char_literal "'\\'" (' "'") (escape_sequence "\\") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))" (( "(") (parenthesized_expression "((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$'))" (( "(") (binary_expression "(param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')" (binary_expression "(param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0" (parenthesized_expression "(param_1[uVar9 + 1] + 0xa4U & 0xfb)" (( "(") (binary_expression "param_1[uVar9 + 1] + 0xa4U & 0xfb" (binary_expression "param_1[uVar9 + 1] + 0xa4U" (subscript_expression "param_1[uVar9 + 1]" (identifier "param_1") ([ "[") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1")) (] "]")) (+ "+") (number_literal "0xa4U")) (& "&") (number_literal "0xfb")) () ")")) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(param_1[uVar9 + 1] == '$')" (( "(") (binary_expression "param_1[uVar9 + 1] == '$'" (subscript_expression "param_1[uVar9 + 1]" (identifier "param_1") ([ "[") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1")) (] "]")) (== "==") (char_literal "'$'" (' "'") (character "$") (' "'"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        uVar9 = uVar9 + 1;\n      }" ({ "{") (expression_statement "uVar9 = uVar9 + 1;" (assignment_expression "uVar9 = uVar9 + 1" (identifier "uVar9") (= "=") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (1 < locale_mb_cur_max) break;" (if "if") (parenthesized_expression "(1 < locale_mb_cur_max)" (( "(") (binary_expression "1 < locale_mb_cur_max" (number_literal "1") (< "<") (identifier "locale_mb_cur_max")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar5 = uVar9 + 1;" (assignment_expression "uVar5 = uVar9 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" (identifier "uVar7") (= "=") (identifier "uVar5")) (; ";")) (if_statement "if ((int)uVar6 < (int)uVar9) {\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }" (if "if") (parenthesized_expression "((int)uVar6 < (int)uVar9)" (( "(") (binary_expression "(int)uVar6 < (int)uVar9" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (< "<") (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9"))) () ")")) (compound_statement "{\n        param_1[uVar6] = param_1[uVar9];\n        uVar7 = uVar6 + 1;\n      }" ({ "{") (expression_statement "param_1[uVar6] = param_1[uVar9];" (assignment_expression "param_1[uVar6] = param_1[uVar9]" (subscript_expression "param_1[uVar6]" (identifier "param_1") ([ "[") (identifier "uVar6") (] "]")) (= "=") (subscript_expression "param_1[uVar9]" (identifier "param_1") ([ "[") (identifier "uVar9") (] "]"))) (; ";")) (expression_statement "uVar7 = uVar6 + 1;" (assignment_expression "uVar7 = uVar6 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "bVar1 = param_1[uVar9];" (assignment_expression "bVar1 = param_1[uVar9]" (identifier "bVar1") (= "=") (subscript_expression "param_1[uVar9]" (identifier "param_1") ([ "[") (identifier "uVar9") (] "]"))) (; ";")) (if_statement "if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }\n    else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }" (if "if") (parenthesized_expression "(((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0)" (( "(") (binary_expression "((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1)" (( "(") (binary_expression "(uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[bVar1 >> 5]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(&is_basic_table)" (( "(") (pointer_expression "&is_basic_table" (& "&") (identifier "is_basic_table")) () ")"))) ([ "[") (binary_expression "bVar1 >> 5" (identifier "bVar1") (>> ">>") (number_literal "5")) (] "]")) (>> ">>") (parenthesized_expression "(bVar1 & 0x1f)" (( "(") (binary_expression "bVar1 & 0x1f" (identifier "bVar1") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }\n    }" ({ "{") (if_statement "if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }\n      else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }" (if "if") (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar1 < '\0'))" (( "(") (binary_expression "(locale_utf8locale == 0) || ((char)bVar1 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" (( "(") (binary_expression "locale_utf8locale == 0" (identifier "locale_utf8locale") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((char)bVar1 < '\0')" (( "(") (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);\n        if (uVar5 < 0xfffffffe) goto LAB_000685e8;\n        uVar5 = uVar9 + 1;\n        local_28.__count = iVar2;\n        local_28.__value = _Var3;\n      }" ({ "{") (expression_statement "uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);" (assignment_expression "uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28)" (identifier "uVar5") (= "=") (call_expression "mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28)" (identifier "mbrtowc") (argument_list "((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28)" (( "(") (cast_expression "(wchar_t *)0x0" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (binary_expression "param_1 + uVar9" (identifier "param_1") (+ "+") (identifier "uVar9")) (, ",") (binary_expression "sVar4 - uVar9" (identifier "sVar4") (- "-") (identifier "uVar9")) (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")")))) (; ";")) (if_statement "if (uVar5 < 0xfffffffe) goto LAB_000685e8;" (if "if") (parenthesized_expression "(uVar5 < 0xfffffffe)" (( "(") (binary_expression "uVar5 < 0xfffffffe" (identifier "uVar5") (< "<") (number_literal "0xfffffffe")) () ")")) (goto_statement "goto LAB_000685e8;" (goto "goto") (statement_identifier "LAB_000685e8") (; ";"))) (expression_statement "uVar5 = uVar9 + 1;" (assignment_expression "uVar5 = uVar9 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_28.__count = iVar2;" (assignment_expression "local_28.__count = iVar2" (field_expression "local_28.__count" (identifier "local_28") (. ".") (field_identifier "__count")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "local_28.__value = _Var3;" (assignment_expression "local_28.__value = _Var3" (field_expression "local_28.__value" (identifier "local_28") (. ".") (field_identifier "__value")) (= "=") (identifier "_Var3")) (; ";")) (} "}")) (else_clause "else {\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }" (else "else") (compound_statement "{\n        uVar5 = (uint)(bVar1 != 0);\nLAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;\n        uVar5 = uVar9 + 1;\n      }" ({ "{") (expression_statement "uVar5 = (uint)(bVar1 != 0);" (assignment_expression "uVar5 = (uint)(bVar1 != 0)" (identifier "uVar5") (= "=") (call_expression "(uint)(bVar1 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar1 != 0)" (( "(") (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) () ")")))) (; ";")) (labeled_statement "LAB_000685e8:\n        if (uVar5 != 0) goto LAB_00068685;" (statement_identifier "LAB_000685e8") (: ":") (if_statement "if (uVar5 != 0) goto LAB_00068685;" (if "if") (parenthesized_expression "(uVar5 != 0)" (( "(") (binary_expression "uVar5 != 0" (identifier "uVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00068685;" (goto "goto") (statement_identifier "LAB_00068685") (; ";")))) (expression_statement "uVar5 = uVar9 + 1;" (assignment_expression "uVar5 = uVar9 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }" (else "else") (compound_statement "{\n      uVar5 = 1;\nLAB_00068685:\n      uVar5 = uVar5 + uVar9;\n    }" ({ "{") (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_00068685:\n      uVar5 = uVar5 + uVar9;" (statement_identifier "LAB_00068685") (: ":") (expression_statement "uVar5 = uVar5 + uVar9;" (assignment_expression "uVar5 = uVar5 + uVar9" (identifier "uVar5") (= "=") (binary_expression "uVar5 + uVar9" (identifier "uVar5") (+ "+") (identifier "uVar9"))) (; ";"))) (} "}")))) (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" (identifier "uVar7") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "iVar2 = local_28.__count;" (assignment_expression "iVar2 = local_28.__count" (identifier "iVar2") (= "=") (field_expression "local_28.__count" (identifier "local_28") (. ".") (field_identifier "__count"))) (; ";")) (expression_statement "_Var3 = local_28.__value;" (assignment_expression "_Var3 = local_28.__value" (identifier "_Var3") (= "=") (field_expression "local_28.__value" (identifier "local_28") (. ".") (field_identifier "__value"))) (; ";")) (if_statement "if ((int)uVar6 < (int)uVar9) {\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }" (if "if") (parenthesized_expression "((int)uVar6 < (int)uVar9)" (( "(") (binary_expression "(int)uVar6 < (int)uVar9" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (< "<") (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9"))) () ")")) (compound_statement "{\n      do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);\n    }" ({ "{") (do_statement "do {\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      } while ((int)uVar8 < (int)uVar5);" (do "do") (compound_statement "{\n        uVar8 = uVar9 + 1;\n        uVar7 = uVar6 + 1;\n        param_1[uVar6] = param_1[uVar9];\n        uVar6 = uVar7;\n        uVar9 = uVar8;\n      }" ({ "{") (expression_statement "uVar8 = uVar9 + 1;" (assignment_expression "uVar8 = uVar9 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar7 = uVar6 + 1;" (assignment_expression "uVar7 = uVar6 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[uVar6] = param_1[uVar9];" (assignment_expression "param_1[uVar6] = param_1[uVar9]" (subscript_expression "param_1[uVar6]" (identifier "param_1") ([ "[") (identifier "uVar6") (] "]")) (= "=") (subscript_expression "param_1[uVar9]" (identifier "param_1") ([ "[") (identifier "uVar9") (] "]"))) (; ";")) (expression_statement "uVar6 = uVar7;" (assignment_expression "uVar6 = uVar7" (identifier "uVar6") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar9 = uVar8;" (assignment_expression "uVar9 = uVar8" (identifier "uVar9") (= "=") (identifier "uVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)uVar8 < (int)uVar5)" (( "(") (binary_expression "(int)uVar8 < (int)uVar5" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (< "<") (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5"))) () ")")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

char * function_1(char *var_12)

{
  type_1 var_9;
  int var_5;
  int iVar3;
  type_2 aVar4;
  size_t var_3;
  type_3 var_13;
  type_3 var_8;
  type_3 uVar8;
  type_3 uVar9;
  type_3 var_4;
  int var_1;
  type_4 state;
  
  var_5 = *(int *)(var_1 + 0x14);
  state.__count = 0;
  state.__value.__wch = 0;
  var_3 = var_2(var_12);
  uVar8 = 0;
  var_13 = 0;
  iVar3 = state.__count;
  aVar4 = state.__value;
  do {
    while( true ) {
      var_4 = var_13;
      var_8 = uVar8;
      state.__count = iVar3;
      state.__value = aVar4;
      if (var_3 <= var_4) {
        var_12[var_8] = '\0';
        if (var_5 == *(int *)(var_1 + 0x14)) {
          return var_12;
        }
                    /* WARNING: Subroutine does not return */
        var_6();
      }
      if ((var_12[var_4] == '\\') &&
         (((var_12[var_4 + 1] + 0xa4U & 0xfb) == 0 || (var_12[var_4 + 1] == '$')))) {
        var_4 = var_4 + 1;
      }
      if (1 < var_7) break;
      var_13 = var_4 + 1;
      uVar8 = var_13;
      if ((int)var_8 < (int)var_4) {
        var_12[var_8] = var_12[var_4];
        uVar8 = var_8 + 1;
      }
    }
    var_9 = var_12[var_4];
    if (((type_3)(&is_basic_table)[var_9 >> 5] >> (var_9 & 0x1f) & 1) == 0) {
      if ((var_10 == 0) || ((char)var_9 < '\0')) {
        var_13 = var_11((type_5 *)0x0,var_12 + var_4,var_3 - var_4,(type_4 *)&state);
        if (var_13 < 0xfffffffe) goto LAB_000685e8;
        var_13 = var_4 + 1;
        state.__count = iVar3;
        state.__value = aVar4;
      }
      else {
        var_13 = (type_3)(var_9 != 0);
LAB_000685e8:
        if (var_13 != 0) goto LAB_00068685;
        var_13 = var_4 + 1;
      }
    }
    else {
      var_13 = 1;
LAB_00068685:
      var_13 = var_13 + var_4;
    }
    uVar8 = var_13;
    iVar3 = state.__count;
    aVar4 = state.__value;
    if ((int)var_8 < (int)var_4) {
      do {
        uVar9 = var_4 + 1;
        uVar8 = var_8 + 1;
        var_12[var_8] = var_12[var_4];
        var_8 = uVar8;
        var_4 = uVar9;
      } while ((int)uVar9 < (int)var_13);
    }
  } while( true );
}


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

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

char * MASKED(char *param_1)

{
  byte bVar1;
  int iVar2;
  _union_54 _Var3;
  size_t sVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  int in_GS_OFFSET;
  mbstate_t local_28;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_28.__count = 0;
  local_28.__value.__wch = 0;
  sVar4 = strlen(param_1);
  uVar7 = 0;
  uVar5 = 0;
  iVar2 = local_28.__count;
  _Var3 = local_28.__value;
  do {
    while( true ) {
      uVar9 = uVar5;
      uVar6 = uVar7;
      local_28.__count = iVar2;
      local_28.__value = _Var3;
      if (sVar4 <= uVar9) {
        param_1[uVar6] = '\0';
        if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
          return param_1;
        }
                    /* WARNING: Subroutine does not return */
        FUN_000ecc40();
      }
      if ((param_1[uVar9] == '\\') &&
         (((param_1[uVar9 + 1] + 0xa4U & 0xfb) == 0 || (param_1[uVar9 + 1] == '$')))) {
        uVar9 = uVar9 + 1;
      }
      if (1 < locale_mb_cur_max) break;
      uVar5 = uVar9 + 1;
      uVar7 = uVar5;
      if ((int)uVar6 < (int)uVar9) {
        param_1[uVar6] = param_1[uVar9];
        uVar7 = uVar6 + 1;
      }
    }
    bVar1 = param_1[uVar9];
    if (((uint)(&is_basic_table)[bVar1 >> 5] >> (bVar1 & 0x1f) & 1) == 0) {
      if ((locale_utf8locale == 0) || ((char)bVar1 < '\0')) {
        uVar5 = mbrtowc((wchar_t *)0x0,param_1 + uVar9,sVar4 - uVar9,&local_28);
        if (uVar5 < 0xfffffffe) goto LAB_000685e8;
        uVar5 = uVar9 + 1;
        local_28.__count = iVar2;
        local_28.__value = _Var3;
      }
      else {
        uVar5 = (uint)(bVar1 != 0);
LAB_000685e8:
        if (uVar5 != 0) goto LAB_00068685;
        uVar5 = uVar9 + 1;
      }
    }
    else {
      uVar5 = 1;
LAB_00068685:
      uVar5 = uVar5 + uVar9;
    }
    uVar7 = uVar5;
    iVar2 = local_28.__count;
    _Var3 = local_28.__value;
    if ((int)uVar6 < (int)uVar9) {
      do {
        uVar8 = uVar9 + 1;
        uVar7 = uVar6 + 1;
        param_1[uVar6] = param_1[uVar9];
        uVar6 = uVar7;
        uVar9 = uVar8;
      } while ((int)uVar8 < (int)uVar5);
    }
  } while( true );
}

