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

void __regparm3 str_append_modified(line *to,char *string,size_t length,replacement_types type)

{
  int iVar1;
  size_t sVar2;
  size_t sVar3;
  int iVar4;
  undefined4 uVar5;
  line *s;
  int in_GS_OFFSET;
  wchar_t wc;
  mbstate_t from_stat;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  s = to;
  if (length == 0) {
LAB_000186b5:
    str_append(&s_accum,(char *)s,(size_t)string);
LAB_000185d0:
    if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
      return;
    }
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  if (s_accum.alloc - s_accum.length < (uint)(mb_cur_max * (int)string)) {
    resize_line(&s_accum,s_accum.length + mb_cur_max * (int)string);
  }
  from_stat.__count = s_accum.mbstate.__count;
  from_stat.__value = s_accum.mbstate.__value;
LAB_00018527:
  s = to;
  if (string != (char *)0x0) {
    do {
      if (mb_cur_max == 1) {
        wc = btowc((uint)*(byte *)&s->text);
        s = (line *)((int)&s->text + 1);
        string = string + -1;
        if ((length & 0xc) != 0) goto LAB_00018565;
LAB_00018633:
        to = s;
        if ((length & 1) == 0) {
          wc = towlower(wc);
        }
        else {
          wc = towupper(wc);
        }
      }
      else {
        sVar3 = rpl_mbrtowc(&wc,(char *)s,(size_t)string,&from_stat);
        if (sVar3 == 0xffffffff) {
          length = length & 0xfffffff3;
          if (length == 0) goto LAB_000186b5;
          to = (line *)((int)&s->text + 1);
          str_append(&s_accum,(char *)s,1);
          string = string + -1;
          s_accum.mbstate.__count = 0;
          s_accum.mbstate.__value.__wch = 0;
          goto LAB_00018527;
        }
        if ((sVar3 == 0) || (sVar3 == 0xfffffffe)) goto LAB_000186b5;
        s = (line *)((int)&s->text + sVar3);
        string = string + -sVar3;
        if ((length & 0xc) == 0) goto LAB_00018633;
LAB_00018565:
        if ((length & 4) == 0) {
          wc = towlower(wc);
        }
        else {
          wc = towupper(wc);
        }
        length = length & 0xfffffff3;
        to = s;
        if (length == 0) {
          if (mb_cur_max == 1) {
            iVar4 = wctob(wc);
            s_accum.active[s_accum.length] = (char)iVar4;
            s_accum.length = s_accum.length + 1;
          }
          else {
            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);
            s_accum.length = s_accum.length + sVar2;
            if (0xfffffffd < sVar2) goto LAB_00018752;
          }
          goto LAB_000186b5;
        }
      }
      if (mb_cur_max == 1) goto LAB_00018658;
      sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);
      s_accum.length = s_accum.length + sVar2;
      if (0xfffffffd < sVar2) {
LAB_00018752:
        uVar5 = dcgettext(0,"case conversion produced an invalid character",5);
        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar5);
                    /* WARNING: Subroutine does not return */
        abort();
      }
      s = to;
      if (string == (char *)0x0) break;
    } while( true );
  }
  goto LAB_000185d0;
LAB_00018658:
  iVar4 = wctob(wc);
  s_accum.active[s_accum.length] = (char)iVar4;
  s_accum.length = s_accum.length + 1;
  goto LAB_00018527;
}



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

void __regparm3 FUN_000184b0(byte *param_1,int param_2,uint param_3)

{
  size_t sVar1;
  int iVar2;
  undefined4 uVar3;
  int in_GS_OFFSET;
  wchar_t local_2c;
  undefined4 local_28;
  undefined4 local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x184bd;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_3 == 0) {
LAB_000186b5:
    FUN_000182b0();
LAB_000185d0:
    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
      return;
    }
                    /* WARNING: Subroutine does not return */
    FUN_0002c430();
  }
  if ((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)) {
    FUN_00017b60();
  }
  local_28 = DAT_000393d4;
  local_24 = DAT_000393d8;
LAB_00018527:
  if (param_2 != 0) {
    do {
      if (DAT_000396c4 == 1) {
        local_2c = btowc((uint)*param_1);
        param_1 = param_1 + 1;
        param_2 = param_2 + -1;
        if ((param_3 & 0xc) != 0) goto LAB_00018565;
LAB_00018633:
        if ((param_3 & 1) == 0) {
          local_2c = towlower(local_2c);
        }
        else {
          local_2c = towupper(local_2c);
        }
      }
      else {
        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);
        if (iVar2 == -1) {
          param_3 = param_3 & 0xfffffff3;
          if (param_3 == 0) goto LAB_000186b5;
          param_1 = param_1 + 1;
          FUN_000182b0();
          param_2 = param_2 + -1;
          DAT_000393d4 = 0;
          DAT_000393d8 = 0;
          goto LAB_00018527;
        }
        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;
        param_1 = param_1 + iVar2;
        param_2 = param_2 - iVar2;
        if ((param_3 & 0xc) == 0) goto LAB_00018633;
LAB_00018565:
        if ((param_3 & 4) == 0) {
          local_2c = towlower(local_2c);
        }
        else {
          local_2c = towupper(local_2c);
        }
        param_3 = param_3 & 0xfffffff3;
        if (param_3 == 0) {
          if (DAT_000396c4 == 1) {
            iVar2 = wctob(local_2c);
            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;
            DAT_000393c8 = DAT_000393c8 + 1;
          }
          else {
            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,
                            (mbstate_t *)&DAT_000393d4);
            DAT_000393c8 = DAT_000393c8 + sVar1;
            if (0xfffffffd < sVar1) goto LAB_00018752;
          }
          goto LAB_000186b5;
        }
      }
      if (DAT_000396c4 == 1) goto LAB_00018658;
      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);
      DAT_000393c8 = DAT_000393c8 + sVar1;
      if (0xfffffffd < sVar1) {
LAB_00018752:
        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);
        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);
                    /* WARNING: Subroutine does not return */
        abort();
      }
      if (param_2 == 0) break;
    } while( true );
  }
  goto LAB_000185d0;
LAB_00018658:
  iVar2 = wctob(local_2c);
  *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;
  DAT_000393c8 = DAT_000393c8 + 1;
  goto LAB_00018527;
}


PUSH EBP
MOV EBP,EAX
PUSH EDI
PUSH ESI
MOV ESI,EDX
PUSH EBX
CALL 0x00012c30
ADD EBX,0x20b43
SUB ESP,0x2c
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x1c],EAX
XOR EAX,EAX
TEST ECX,ECX
JZ 0x000186b5
LEA EAX,[EBX + 0x6c4]
MOV EDI,ECX
MOV EDX,dword ptr [EBX + 0x3c8]
MOV ECX,dword ptr [EAX]
MOV dword ptr [ESP + 0x4],EAX
MOV EAX,dword ptr [EBX + 0x3cc]
IMUL ECX,ESI
SUB EAX,EDX
CMP EAX,ECX
JC 0x00018708
MOV EAX,dword ptr [EBX + 0x3d4]
MOV EDX,dword ptr [EBX + 0x3d8]
MOV dword ptr [ESP + 0x14],EAX
LEA EAX,[EBX + 0x3d4]
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[ESP + 0x14]
MOV dword ptr [ESP + 0x18],EDX
MOV dword ptr [ESP + 0xc],EAX
TEST ESI,ESI
JZ 0x000185d0
MOV EAX,dword ptr [ESP + 0x4]
CMP dword ptr [EAX],0x1
JNZ 0x000185f0
MOVZX EAX,byte ptr [EBP]
SUB ESP,0xc
PUSH EAX
CALL 0x000124c0
MOV EDX,0x1
MOV dword ptr [ESP + 0x20],EAX
ADD EBP,EDX
ADD ESP,0x10
SUB ESI,EDX
TEST EDI,0xc
JZ 0x00018633
TEST EDI,0x4
JZ 0x00018680
SUB ESP,0xc
PUSH EAX
CALL 0x00012630
ADD ESP,0x10
MOV dword ptr [ESP + 0x10],EAX
AND EDI,0xfffffff3
JZ 0x0001871a
MOV ECX,dword ptr [ESP + 0x4]
CMP dword ptr [ECX],0x1
JZ 0x00018658
SUB ESP,0x4
PUSH dword ptr [ESP + 0xc]
PUSH EAX
MOV EAX,dword ptr [EBX + 0x3c8]
ADD EAX,dword ptr [EBX + 0x3c4]
PUSH EAX
CALL 0x00012060
ADD ESP,0x10
ADD dword ptr [EBX + 0x3c8],EAX
CMP EAX,-0x2
JNC 0x00018752
TEST ESI,ESI
JNZ 0x0001852f
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESP + 0x1c]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x000187a4
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
PUSH dword ptr [ESP + 0xc]
PUSH ESI
PUSH EBP
LEA EAX,[ESP + 0x1c]
PUSH EAX
CALL 0x0002b6f0
ADD ESP,0x10
MOV EDX,EAX
CMP EAX,-0x1
JZ 0x000186b0
TEST EAX,EAX
JZ 0x000186b5
CMP EAX,-0x2
JZ 0x000186b5
MOV EAX,dword ptr [ESP + 0x10]
ADD EBP,EDX
SUB ESI,EDX
TEST EDI,0xc
JNZ 0x00018565
TEST EDI,0x1
JZ 0x00018698
SUB ESP,0xc
PUSH EAX
CALL 0x00012630
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0x10],EAX
CMP dword ptr [ECX],0x1
JNZ 0x00018597
SUB ESP,0xc
PUSH EAX
CALL 0x00012410
MOV EDX,dword ptr [EBX + 0x3c8]
MOV ECX,dword ptr [EBX + 0x3c4]
ADD ESP,0x10
MOV byte ptr [ECX + EDX*0x1],AL
ADD dword ptr [EBX + 0x3c8],0x1
JMP 0x00018527
SUB ESP,0xc
PUSH EAX
CALL 0x00012100
ADD ESP,0x10
JMP 0x0001857d
SUB ESP,0xc
PUSH EAX
CALL 0x00012100
ADD ESP,0x10
MOV dword ptr [ESP + 0x10],EAX
JMP 0x0001858a
AND EDI,0xfffffff3
JNZ 0x000186d0
MOV ECX,ESI
MOV EDX,EBP
LEA EAX,[EBX + 0x3c0]
CALL 0x000182b0
JMP 0x000185d0
MOV EDX,EBP
MOV ECX,0x1
LEA EAX,[EBX + 0x3c0]
ADD EBP,0x1
CALL 0x000182b0
SUB ESI,0x1
MOV dword ptr [EBX + 0x3d4],0x0
MOV dword ptr [EBX + 0x3d8],0x0
JMP 0x00018527
ADD EDX,ECX
LEA EAX,[EBX + 0x3c0]
CALL 0x00017b60
JMP 0x00018501
MOV EDI,dword ptr [ESP + 0x4]
CMP dword ptr [EDI],0x1
JZ 0x0001877d
SUB ESP,0x4
LEA EDX,[EBX + 0x3d4]
PUSH EDX
PUSH EAX
MOV EAX,dword ptr [EBX + 0x3c8]
ADD EAX,dword ptr [EBX + 0x3c4]
PUSH EAX
CALL 0x00012060
ADD ESP,0x10
ADD dword ptr [EBX + 0x3c8],EAX
CMP EAX,-0x2
JC 0x000186b5
SUB ESP,0x4
LEA EAX,[EBX + 0xffff50ec]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00012140
ADD ESP,0xc
PUSH EAX
MOV EAX,dword ptr [EBX + 0xffffffc0]
PUSH 0x1
PUSH dword ptr [EAX]
CALL 0x000125d0
CALL 0x00012650
SUB ESP,0xc
PUSH EAX
CALL 0x00012410
MOV EDX,dword ptr [EBX + 0x3c8]
MOV ECX,dword ptr [EBX + 0x3c4]
ADD ESP,0x10
MOV byte ptr [ECX + EDX*0x1],AL
ADD dword ptr [EBX + 0x3c8],0x1
JMP 0x000186b5
CALL 0x0002c430
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 FUN_000184b0(byte *param_1,int param_2,uint param_3)\n\n{\n  size_t sVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  wchar_t local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x184bd;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == 0) {\nLAB_000186b5:\n    FUN_000182b0();\nLAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0002c430();\n  }\n  if ((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)) {\n    FUN_00017b60();\n  }\n  local_28 = DAT_000393d4;\n  local_24 = DAT_000393d8;\nLAB_00018527:\n  if (param_2 != 0) {\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }\n  goto LAB_000185d0;\nLAB_00018658:\n  iVar2 = wctob(local_2c);\n  *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n  DAT_000393c8 = DAT_000393c8 + 1;\n  goto LAB_00018527;\n}\n\n" comment (function_definition "void __regparm3 FUN_000184b0(byte *param_1,int param_2,uint param_3)\n\n{\n  size_t sVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  wchar_t local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x184bd;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == 0) {\nLAB_000186b5:\n    FUN_000182b0();\nLAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0002c430();\n  }\n  if ((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)) {\n    FUN_00017b60();\n  }\n  local_28 = DAT_000393d4;\n  local_24 = DAT_000393d8;\nLAB_00018527:\n  if (param_2 != 0) {\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }\n  goto LAB_000185d0;\nLAB_00018658:\n  iVar2 = wctob(local_2c);\n  *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n  DAT_000393c8 = DAT_000393c8 + 1;\n  goto LAB_00018527;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000184b0(byte *param_1,int param_2,uint param_3)" identifier (parameter_list "(byte *param_1,int param_2,uint param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  size_t sVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  wchar_t local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x184bd;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == 0) {\nLAB_000186b5:\n    FUN_000182b0();\nLAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0002c430();\n  }\n  if ((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)) {\n    FUN_00017b60();\n  }\n  local_28 = DAT_000393d4;\n  local_24 = DAT_000393d8;\nLAB_00018527:\n  if (param_2 != 0) {\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }\n  goto LAB_000185d0;\nLAB_00018658:\n  iVar2 = wctob(local_2c);\n  *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n  DAT_000393c8 = DAT_000393c8 + 1;\n  goto LAB_00018527;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "wchar_t local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x184bd;" (assignment_expression "uStack_14 = 0x184bd" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (param_3 == 0) {\nLAB_000186b5:\n    FUN_000182b0();\nLAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0002c430();\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000186b5:\n    FUN_000182b0();\nLAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0002c430();\n  }" { (labeled_statement "LAB_000186b5:\n    FUN_000182b0();" statement_identifier : (expression_statement "FUN_000182b0();" (call_expression "FUN_000182b0()" identifier (argument_list "()" ( ))) ;)) (labeled_statement "LAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\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;\n    }" { (return_statement "return;" return ;) }))) comment (expression_statement "FUN_0002c430();" (call_expression "FUN_0002c430()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)) {\n    FUN_00017b60();\n  }" if (parenthesized_expression "((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2))" ( (binary_expression "(uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)" (call_expression "(uint)(DAT_000393cc - DAT_000393c8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_000393cc - DAT_000393c8)" ( (binary_expression "DAT_000393cc - DAT_000393c8" identifier - identifier) ))) < (call_expression "(uint)(DAT_000396c4 * param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_000396c4 * param_2)" ( (binary_expression "DAT_000396c4 * param_2" identifier * identifier) )))) )) (compound_statement "{\n    FUN_00017b60();\n  }" { (expression_statement "FUN_00017b60();" (call_expression "FUN_00017b60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_28 = DAT_000393d4;" (assignment_expression "local_28 = DAT_000393d4" identifier = identifier) ;) (expression_statement "local_24 = DAT_000393d8;" (assignment_expression "local_24 = DAT_000393d8" identifier = identifier) ;) (labeled_statement "LAB_00018527:\n  if (param_2 != 0) {\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }" statement_identifier : (if_statement "if (param_2 != 0) {\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }" { (do_statement "do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );" do (compound_statement "{\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      if (param_2 == 0) break;\n    }" { (if_statement "if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }" if (parenthesized_expression "(DAT_000396c4 == 1)" ( (binary_expression "DAT_000396c4 == 1" identifier == number_literal) )) (compound_statement "{\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }" { (expression_statement "local_2c = btowc((uint)*param_1);" (assignment_expression "local_2c = btowc((uint)*param_1)" identifier = (call_expression "btowc((uint)*param_1)" identifier (argument_list "((uint)*param_1)" ( (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier) )))) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) (if_statement "if ((param_3 & 0xc) != 0) goto LAB_00018565;" if (parenthesized_expression "((param_3 & 0xc) != 0)" ( (binary_expression "(param_3 & 0xc) != 0" (parenthesized_expression "(param_3 & 0xc)" ( (binary_expression "param_3 & 0xc" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00018565;" goto statement_identifier ;)) (labeled_statement "LAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }" statement_identifier : (if_statement "if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }" if (parenthesized_expression "((param_3 & 1) == 0)" ( (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" ( (binary_expression "param_3 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          local_2c = towlower(local_2c);\n        }" { (expression_statement "local_2c = towlower(local_2c);" (assignment_expression "local_2c = towlower(local_2c)" identifier = (call_expression "towlower(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) }) (else_clause "else {\n          local_2c = towupper(local_2c);\n        }" else (compound_statement "{\n          local_2c = towupper(local_2c);\n        }" { (expression_statement "local_2c = towupper(local_2c);" (assignment_expression "local_2c = towupper(local_2c)" identifier = (call_expression "towupper(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) })))) }) (else_clause "else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }" else (compound_statement "{\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }" { (expression_statement "iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);" (assignment_expression "iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28)" identifier = (call_expression "FUN_0002b6f0(&local_2c,param_1,param_2,&local_28)" identifier (argument_list "(&local_2c,param_1,param_2,&local_28)" ( (pointer_expression "&local_2c" & identifier) , identifier , identifier , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }" { (expression_statement "param_3 = param_3 & 0xfffffff3;" (assignment_expression "param_3 = param_3 & 0xfffffff3" identifier = (binary_expression "param_3 & 0xfffffff3" identifier & number_literal)) ;) (if_statement "if (param_3 == 0) goto LAB_000186b5;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000186b5;" goto statement_identifier ;)) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000182b0();" (call_expression "FUN_000182b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) (expression_statement "DAT_000393d4 = 0;" (assignment_expression "DAT_000393d4 = 0" identifier = number_literal) ;) (expression_statement "DAT_000393d8 = 0;" (assignment_expression "DAT_000393d8 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00018527;" goto statement_identifier ;) })) (if_statement "if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;" if (parenthesized_expression "((iVar2 == 0) || (iVar2 == -2))" ( (binary_expression "(iVar2 == 0) || (iVar2 == -2)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar2 == -2)" ( (binary_expression "iVar2 == -2" identifier == number_literal) ))) )) (goto_statement "goto LAB_000186b5;" goto statement_identifier ;)) (expression_statement "param_1 = param_1 + iVar2;" (assignment_expression "param_1 = param_1 + iVar2" identifier = (binary_expression "param_1 + iVar2" identifier + identifier)) ;) (expression_statement "param_2 = param_2 - iVar2;" (assignment_expression "param_2 = param_2 - iVar2" identifier = (binary_expression "param_2 - iVar2" identifier - identifier)) ;) (if_statement "if ((param_3 & 0xc) == 0) goto LAB_00018633;" if (parenthesized_expression "((param_3 & 0xc) == 0)" ( (binary_expression "(param_3 & 0xc) == 0" (parenthesized_expression "(param_3 & 0xc)" ( (binary_expression "param_3 & 0xc" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00018633;" goto statement_identifier ;)) (labeled_statement "LAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }" statement_identifier : (if_statement "if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }" if (parenthesized_expression "((param_3 & 4) == 0)" ( (binary_expression "(param_3 & 4) == 0" (parenthesized_expression "(param_3 & 4)" ( (binary_expression "param_3 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          local_2c = towlower(local_2c);\n        }" { (expression_statement "local_2c = towlower(local_2c);" (assignment_expression "local_2c = towlower(local_2c)" identifier = (call_expression "towlower(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) }) (else_clause "else {\n          local_2c = towupper(local_2c);\n        }" else (compound_statement "{\n          local_2c = towupper(local_2c);\n        }" { (expression_statement "local_2c = towupper(local_2c);" (assignment_expression "local_2c = towupper(local_2c)" identifier = (call_expression "towupper(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) })))) (expression_statement "param_3 = param_3 & 0xfffffff3;" (assignment_expression "param_3 = param_3 & 0xfffffff3" identifier = (binary_expression "param_3 & 0xfffffff3" identifier & number_literal)) ;) (if_statement "if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }" { (if_statement "if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }" if (parenthesized_expression "(DAT_000396c4 == 1)" ( (binary_expression "DAT_000396c4 == 1" identifier == number_literal) )) (compound_statement "{\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }" { (expression_statement "iVar2 = wctob(local_2c);" (assignment_expression "iVar2 = wctob(local_2c)" identifier = (call_expression "wctob(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) (expression_statement "*(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;" (assignment_expression "*(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2" (pointer_expression "*(char *)(DAT_000393c4 + DAT_000393c8)" * (cast_expression "(char *)(DAT_000393c4 + DAT_000393c8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000393c4 + DAT_000393c8)" ( (binary_expression "DAT_000393c4 + DAT_000393c8" identifier + identifier) )))) = (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "DAT_000393c8 = DAT_000393c8 + 1;" (assignment_expression "DAT_000393c8 = DAT_000393c8 + 1" identifier = (binary_expression "DAT_000393c8 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }" else (compound_statement "{\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }" { (expression_statement "sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);" (assignment_expression "sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4)" identifier = (call_expression "wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4)" identifier (argument_list "((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4)" ( (cast_expression "(char *)(DAT_000393c8 + DAT_000393c4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000393c8 + DAT_000393c4)" ( (binary_expression "DAT_000393c8 + DAT_000393c4" identifier + identifier) ))) , identifier , (cast_expression "(mbstate_t *)&DAT_000393d4" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000393d4" & identifier)) )))) ;) (expression_statement "DAT_000393c8 = DAT_000393c8 + sVar1;" (assignment_expression "DAT_000393c8 = DAT_000393c8 + sVar1" identifier = (binary_expression "DAT_000393c8 + sVar1" identifier + identifier)) ;) (if_statement "if (0xfffffffd < sVar1) goto LAB_00018752;" if (parenthesized_expression "(0xfffffffd < sVar1)" ( (binary_expression "0xfffffffd < sVar1" number_literal < identifier) )) (goto_statement "goto LAB_00018752;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_000186b5;" goto statement_identifier ;) })) }))) (if_statement "if (DAT_000396c4 == 1) goto LAB_00018658;" if (parenthesized_expression "(DAT_000396c4 == 1)" ( (binary_expression "DAT_000396c4 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00018658;" goto statement_identifier ;)) (expression_statement "sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);" (assignment_expression "sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4)" identifier = (call_expression "wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4)" identifier (argument_list "((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4)" ( (cast_expression "(char *)(DAT_000393c8 + DAT_000393c4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000393c8 + DAT_000393c4)" ( (binary_expression "DAT_000393c8 + DAT_000393c4" identifier + identifier) ))) , identifier , (cast_expression "(mbstate_t *)&DAT_000393d4" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000393d4" & identifier)) )))) ;) (expression_statement "DAT_000393c8 = DAT_000393c8 + sVar1;" (assignment_expression "DAT_000393c8 = DAT_000393c8 + sVar1" identifier = (binary_expression "DAT_000393c8 + sVar1" identifier + identifier)) ;) (if_statement "if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }" if (parenthesized_expression "(0xfffffffd < sVar1)" ( (binary_expression "0xfffffffd < sVar1" number_literal < identifier) )) (compound_statement "{\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }" { (labeled_statement "LAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);" statement_identifier : (expression_statement "uVar3 = dcgettext(0,"case conversion produced an invalid character",5);" (assignment_expression "uVar3 = dcgettext(0,"case conversion produced an invalid character",5)" identifier = (call_expression "dcgettext(0,"case conversion produced an invalid character",5)" identifier (argument_list "(0,"case conversion produced an invalid character",5)" ( number_literal , (string_literal ""case conversion produced an invalid character"" " string_content ") , number_literal )))) ;)) (expression_statement "__fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);" (call_expression "__fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3)" identifier (argument_list "(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3)" ( (pointer_expression "*(undefined4 *)PTR_stderr_00038fc0" * (cast_expression "(undefined4 *)PTR_stderr_00038fc0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , number_literal , identifier ))) ;) comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (param_2 == 0) break;" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (goto_statement "goto LAB_000185d0;" goto statement_identifier ;) (labeled_statement "LAB_00018658:\n  iVar2 = wctob(local_2c);" statement_identifier : (expression_statement "iVar2 = wctob(local_2c);" (assignment_expression "iVar2 = wctob(local_2c)" identifier = (call_expression "wctob(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;)) (expression_statement "*(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;" (assignment_expression "*(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2" (pointer_expression "*(char *)(DAT_000393c4 + DAT_000393c8)" * (cast_expression "(char *)(DAT_000393c4 + DAT_000393c8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000393c4 + DAT_000393c8)" ( (binary_expression "DAT_000393c4 + DAT_000393c8" identifier + identifier) )))) = (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "DAT_000393c8 = DAT_000393c8 + 1;" (assignment_expression "DAT_000393c8 = DAT_000393c8 + 1" identifier = (binary_expression "DAT_000393c8 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00018527;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 str_append_modified(line *to,char *string,size_t length,replacement_types type)\n\n{\n  int iVar1;\n  size_t sVar2;\n  size_t sVar3;\n  int iVar4;\n  undefined4 uVar5;\n  line *s;\n  int in_GS_OFFSET;\n  wchar_t wc;\n  mbstate_t from_stat;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  s = to;\n  if (length == 0) {\nLAB_000186b5:\n    str_append(&s_accum,(char *)s,(size_t)string);\nLAB_000185d0:\n    if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  if (s_accum.alloc - s_accum.length < (uint)(mb_cur_max * (int)string)) {\n    resize_line(&s_accum,s_accum.length + mb_cur_max * (int)string);\n  }\n  from_stat.__count = s_accum.mbstate.__count;\n  from_stat.__value = s_accum.mbstate.__value;\nLAB_00018527:\n  s = to;\n  if (string != (char *)0x0) {\n    do {\n      if (mb_cur_max == 1) {\n        wc = btowc((uint)*(byte *)&s->text);\n        s = (line *)((int)&s->text + 1);\n        string = string + -1;\n        if ((length & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        to = s;\n        if ((length & 1) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n      }\n      else {\n        sVar3 = rpl_mbrtowc(&wc,(char *)s,(size_t)string,&from_stat);\n        if (sVar3 == 0xffffffff) {\n          length = length & 0xfffffff3;\n          if (length == 0) goto LAB_000186b5;\n          to = (line *)((int)&s->text + 1);\n          str_append(&s_accum,(char *)s,1);\n          string = string + -1;\n          s_accum.mbstate.__count = 0;\n          s_accum.mbstate.__value.__wch = 0;\n          goto LAB_00018527;\n        }\n        if ((sVar3 == 0) || (sVar3 == 0xfffffffe)) goto LAB_000186b5;\n        s = (line *)((int)&s->text + sVar3);\n        string = string + -sVar3;\n        if ((length & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((length & 4) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n        length = length & 0xfffffff3;\n        to = s;\n        if (length == 0) {\n          if (mb_cur_max == 1) {\n            iVar4 = wctob(wc);\n            s_accum.active[s_accum.length] = (char)iVar4;\n            s_accum.length = s_accum.length + 1;\n          }\n          else {\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (mb_cur_max == 1) goto LAB_00018658;\n      sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n      s_accum.length = s_accum.length + sVar2;\n      if (0xfffffffd < sVar2) {\nLAB_00018752:\n        uVar5 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar5);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      s = to;\n      if (string == (char *)0x0) break;\n    } while( true );\n  }\n  goto LAB_000185d0;\nLAB_00018658:\n  iVar4 = wctob(wc);\n  s_accum.active[s_accum.length] = (char)iVar4;\n  s_accum.length = s_accum.length + 1;\n  goto LAB_00018527;\n}\n\n" comment (function_definition "void __regparm3 str_append_modified(line *to,char *string,size_t length,replacement_types type)\n\n{\n  int iVar1;\n  size_t sVar2;\n  size_t sVar3;\n  int iVar4;\n  undefined4 uVar5;\n  line *s;\n  int in_GS_OFFSET;\n  wchar_t wc;\n  mbstate_t from_stat;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  s = to;\n  if (length == 0) {\nLAB_000186b5:\n    str_append(&s_accum,(char *)s,(size_t)string);\nLAB_000185d0:\n    if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  if (s_accum.alloc - s_accum.length < (uint)(mb_cur_max * (int)string)) {\n    resize_line(&s_accum,s_accum.length + mb_cur_max * (int)string);\n  }\n  from_stat.__count = s_accum.mbstate.__count;\n  from_stat.__value = s_accum.mbstate.__value;\nLAB_00018527:\n  s = to;\n  if (string != (char *)0x0) {\n    do {\n      if (mb_cur_max == 1) {\n        wc = btowc((uint)*(byte *)&s->text);\n        s = (line *)((int)&s->text + 1);\n        string = string + -1;\n        if ((length & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        to = s;\n        if ((length & 1) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n      }\n      else {\n        sVar3 = rpl_mbrtowc(&wc,(char *)s,(size_t)string,&from_stat);\n        if (sVar3 == 0xffffffff) {\n          length = length & 0xfffffff3;\n          if (length == 0) goto LAB_000186b5;\n          to = (line *)((int)&s->text + 1);\n          str_append(&s_accum,(char *)s,1);\n          string = string + -1;\n          s_accum.mbstate.__count = 0;\n          s_accum.mbstate.__value.__wch = 0;\n          goto LAB_00018527;\n        }\n        if ((sVar3 == 0) || (sVar3 == 0xfffffffe)) goto LAB_000186b5;\n        s = (line *)((int)&s->text + sVar3);\n        string = string + -sVar3;\n        if ((length & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((length & 4) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n        length = length & 0xfffffff3;\n        to = s;\n        if (length == 0) {\n          if (mb_cur_max == 1) {\n            iVar4 = wctob(wc);\n            s_accum.active[s_accum.length] = (char)iVar4;\n            s_accum.length = s_accum.length + 1;\n          }\n          else {\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (mb_cur_max == 1) goto LAB_00018658;\n      sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n      s_accum.length = s_accum.length + sVar2;\n      if (0xfffffffd < sVar2) {\nLAB_00018752:\n        uVar5 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar5);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      s = to;\n      if (string == (char *)0x0) break;\n    } while( true );\n  }\n  goto LAB_000185d0;\nLAB_00018658:\n  iVar4 = wctob(wc);\n  s_accum.active[s_accum.length] = (char)iVar4;\n  s_accum.length = s_accum.length + 1;\n  goto LAB_00018527;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "str_append_modified(line *to,char *string,size_t length,replacement_types type)" identifier (parameter_list "(line *to,char *string,size_t length,replacement_types type)" ( (parameter_declaration "line *to" type_identifier (pointer_declarator "*to" * identifier)) , (parameter_declaration "char *string" primitive_type (pointer_declarator "*string" * identifier)) , (parameter_declaration "size_t length" primitive_type identifier) , (parameter_declaration "replacement_types type" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  size_t sVar2;\n  size_t sVar3;\n  int iVar4;\n  undefined4 uVar5;\n  line *s;\n  int in_GS_OFFSET;\n  wchar_t wc;\n  mbstate_t from_stat;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  s = to;\n  if (length == 0) {\nLAB_000186b5:\n    str_append(&s_accum,(char *)s,(size_t)string);\nLAB_000185d0:\n    if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  if (s_accum.alloc - s_accum.length < (uint)(mb_cur_max * (int)string)) {\n    resize_line(&s_accum,s_accum.length + mb_cur_max * (int)string);\n  }\n  from_stat.__count = s_accum.mbstate.__count;\n  from_stat.__value = s_accum.mbstate.__value;\nLAB_00018527:\n  s = to;\n  if (string != (char *)0x0) {\n    do {\n      if (mb_cur_max == 1) {\n        wc = btowc((uint)*(byte *)&s->text);\n        s = (line *)((int)&s->text + 1);\n        string = string + -1;\n        if ((length & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        to = s;\n        if ((length & 1) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n      }\n      else {\n        sVar3 = rpl_mbrtowc(&wc,(char *)s,(size_t)string,&from_stat);\n        if (sVar3 == 0xffffffff) {\n          length = length & 0xfffffff3;\n          if (length == 0) goto LAB_000186b5;\n          to = (line *)((int)&s->text + 1);\n          str_append(&s_accum,(char *)s,1);\n          string = string + -1;\n          s_accum.mbstate.__count = 0;\n          s_accum.mbstate.__value.__wch = 0;\n          goto LAB_00018527;\n        }\n        if ((sVar3 == 0) || (sVar3 == 0xfffffffe)) goto LAB_000186b5;\n        s = (line *)((int)&s->text + sVar3);\n        string = string + -sVar3;\n        if ((length & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((length & 4) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n        length = length & 0xfffffff3;\n        to = s;\n        if (length == 0) {\n          if (mb_cur_max == 1) {\n            iVar4 = wctob(wc);\n            s_accum.active[s_accum.length] = (char)iVar4;\n            s_accum.length = s_accum.length + 1;\n          }\n          else {\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (mb_cur_max == 1) goto LAB_00018658;\n      sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n      s_accum.length = s_accum.length + sVar2;\n      if (0xfffffffd < sVar2) {\nLAB_00018752:\n        uVar5 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar5);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      s = to;\n      if (string == (char *)0x0) break;\n    } while( true );\n  }\n  goto LAB_000185d0;\nLAB_00018658:\n  iVar4 = wctob(wc);\n  s_accum.active[s_accum.length] = (char)iVar4;\n  s_accum.length = s_accum.length + 1;\n  goto LAB_00018527;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "line *s;" type_identifier (pointer_declarator "*s" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "wchar_t wc;" type_identifier identifier ;) (declaration "mbstate_t from_stat;" type_identifier identifier ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "s = to;" (assignment_expression "s = to" identifier = identifier) ;) (if_statement "if (length == 0) {\nLAB_000186b5:\n    str_append(&s_accum,(char *)s,(size_t)string);\nLAB_000185d0:\n    if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(length == 0)" ( (binary_expression "length == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000186b5:\n    str_append(&s_accum,(char *)s,(size_t)string);\nLAB_000185d0:\n    if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { (labeled_statement "LAB_000186b5:\n    str_append(&s_accum,(char *)s,(size_t)string);" statement_identifier : (expression_statement "str_append(&s_accum,(char *)s,(size_t)string);" (call_expression "str_append(&s_accum,(char *)s,(size_t)string)" identifier (argument_list "(&s_accum,(char *)s,(size_t)string)" ( (pointer_expression "&s_accum" & identifier) , (cast_expression "(char *)s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(size_t)string" ( (type_descriptor "size_t" primitive_type) ) identifier) ))) ;)) (labeled_statement "LAB_000185d0:\n    if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (s_accum.alloc - s_accum.length < (uint)(mb_cur_max * (int)string)) {\n    resize_line(&s_accum,s_accum.length + mb_cur_max * (int)string);\n  }" if (parenthesized_expression "(s_accum.alloc - s_accum.length < (uint)(mb_cur_max * (int)string))" ( (binary_expression "s_accum.alloc - s_accum.length < (uint)(mb_cur_max * (int)string)" (binary_expression "s_accum.alloc - s_accum.length" (field_expression "s_accum.alloc" identifier . field_identifier) - (field_expression "s_accum.length" identifier . field_identifier)) < (call_expression "(uint)(mb_cur_max * (int)string)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(mb_cur_max * (int)string)" ( (binary_expression "mb_cur_max * (int)string" identifier * (cast_expression "(int)string" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n    resize_line(&s_accum,s_accum.length + mb_cur_max * (int)string);\n  }" { (expression_statement "resize_line(&s_accum,s_accum.length + mb_cur_max * (int)string);" (call_expression "resize_line(&s_accum,s_accum.length + mb_cur_max * (int)string)" identifier (argument_list "(&s_accum,s_accum.length + mb_cur_max * (int)string)" ( (pointer_expression "&s_accum" & identifier) , (binary_expression "s_accum.length + mb_cur_max * (int)string" (field_expression "s_accum.length" identifier . field_identifier) + (binary_expression "mb_cur_max * (int)string" identifier * (cast_expression "(int)string" ( (type_descriptor "int" primitive_type) ) identifier))) ))) ;) })) (expression_statement "from_stat.__count = s_accum.mbstate.__count;" (assignment_expression "from_stat.__count = s_accum.mbstate.__count" (field_expression "from_stat.__count" identifier . field_identifier) = (field_expression "s_accum.mbstate.__count" (field_expression "s_accum.mbstate" identifier . field_identifier) . field_identifier)) ;) (expression_statement "from_stat.__value = s_accum.mbstate.__value;" (assignment_expression "from_stat.__value = s_accum.mbstate.__value" (field_expression "from_stat.__value" identifier . field_identifier) = (field_expression "s_accum.mbstate.__value" (field_expression "s_accum.mbstate" identifier . field_identifier) . field_identifier)) ;) (labeled_statement "LAB_00018527:\n  s = to;" statement_identifier : (expression_statement "s = to;" (assignment_expression "s = to" identifier = identifier) ;)) (if_statement "if (string != (char *)0x0) {\n    do {\n      if (mb_cur_max == 1) {\n        wc = btowc((uint)*(byte *)&s->text);\n        s = (line *)((int)&s->text + 1);\n        string = string + -1;\n        if ((length & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        to = s;\n        if ((length & 1) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n      }\n      else {\n        sVar3 = rpl_mbrtowc(&wc,(char *)s,(size_t)string,&from_stat);\n        if (sVar3 == 0xffffffff) {\n          length = length & 0xfffffff3;\n          if (length == 0) goto LAB_000186b5;\n          to = (line *)((int)&s->text + 1);\n          str_append(&s_accum,(char *)s,1);\n          string = string + -1;\n          s_accum.mbstate.__count = 0;\n          s_accum.mbstate.__value.__wch = 0;\n          goto LAB_00018527;\n        }\n        if ((sVar3 == 0) || (sVar3 == 0xfffffffe)) goto LAB_000186b5;\n        s = (line *)((int)&s->text + sVar3);\n        string = string + -sVar3;\n        if ((length & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((length & 4) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n        length = length & 0xfffffff3;\n        to = s;\n        if (length == 0) {\n          if (mb_cur_max == 1) {\n            iVar4 = wctob(wc);\n            s_accum.active[s_accum.length] = (char)iVar4;\n            s_accum.length = s_accum.length + 1;\n          }\n          else {\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (mb_cur_max == 1) goto LAB_00018658;\n      sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n      s_accum.length = s_accum.length + sVar2;\n      if (0xfffffffd < sVar2) {\nLAB_00018752:\n        uVar5 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar5);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      s = to;\n      if (string == (char *)0x0) break;\n    } while( true );\n  }" if (parenthesized_expression "(string != (char *)0x0)" ( (binary_expression "string != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      if (mb_cur_max == 1) {\n        wc = btowc((uint)*(byte *)&s->text);\n        s = (line *)((int)&s->text + 1);\n        string = string + -1;\n        if ((length & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        to = s;\n        if ((length & 1) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n      }\n      else {\n        sVar3 = rpl_mbrtowc(&wc,(char *)s,(size_t)string,&from_stat);\n        if (sVar3 == 0xffffffff) {\n          length = length & 0xfffffff3;\n          if (length == 0) goto LAB_000186b5;\n          to = (line *)((int)&s->text + 1);\n          str_append(&s_accum,(char *)s,1);\n          string = string + -1;\n          s_accum.mbstate.__count = 0;\n          s_accum.mbstate.__value.__wch = 0;\n          goto LAB_00018527;\n        }\n        if ((sVar3 == 0) || (sVar3 == 0xfffffffe)) goto LAB_000186b5;\n        s = (line *)((int)&s->text + sVar3);\n        string = string + -sVar3;\n        if ((length & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((length & 4) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n        length = length & 0xfffffff3;\n        to = s;\n        if (length == 0) {\n          if (mb_cur_max == 1) {\n            iVar4 = wctob(wc);\n            s_accum.active[s_accum.length] = (char)iVar4;\n            s_accum.length = s_accum.length + 1;\n          }\n          else {\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (mb_cur_max == 1) goto LAB_00018658;\n      sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n      s_accum.length = s_accum.length + sVar2;\n      if (0xfffffffd < sVar2) {\nLAB_00018752:\n        uVar5 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar5);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      s = to;\n      if (string == (char *)0x0) break;\n    } while( true );\n  }" { (do_statement "do {\n      if (mb_cur_max == 1) {\n        wc = btowc((uint)*(byte *)&s->text);\n        s = (line *)((int)&s->text + 1);\n        string = string + -1;\n        if ((length & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        to = s;\n        if ((length & 1) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n      }\n      else {\n        sVar3 = rpl_mbrtowc(&wc,(char *)s,(size_t)string,&from_stat);\n        if (sVar3 == 0xffffffff) {\n          length = length & 0xfffffff3;\n          if (length == 0) goto LAB_000186b5;\n          to = (line *)((int)&s->text + 1);\n          str_append(&s_accum,(char *)s,1);\n          string = string + -1;\n          s_accum.mbstate.__count = 0;\n          s_accum.mbstate.__value.__wch = 0;\n          goto LAB_00018527;\n        }\n        if ((sVar3 == 0) || (sVar3 == 0xfffffffe)) goto LAB_000186b5;\n        s = (line *)((int)&s->text + sVar3);\n        string = string + -sVar3;\n        if ((length & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((length & 4) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n        length = length & 0xfffffff3;\n        to = s;\n        if (length == 0) {\n          if (mb_cur_max == 1) {\n            iVar4 = wctob(wc);\n            s_accum.active[s_accum.length] = (char)iVar4;\n            s_accum.length = s_accum.length + 1;\n          }\n          else {\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (mb_cur_max == 1) goto LAB_00018658;\n      sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n      s_accum.length = s_accum.length + sVar2;\n      if (0xfffffffd < sVar2) {\nLAB_00018752:\n        uVar5 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar5);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      s = to;\n      if (string == (char *)0x0) break;\n    } while( true );" do (compound_statement "{\n      if (mb_cur_max == 1) {\n        wc = btowc((uint)*(byte *)&s->text);\n        s = (line *)((int)&s->text + 1);\n        string = string + -1;\n        if ((length & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        to = s;\n        if ((length & 1) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n      }\n      else {\n        sVar3 = rpl_mbrtowc(&wc,(char *)s,(size_t)string,&from_stat);\n        if (sVar3 == 0xffffffff) {\n          length = length & 0xfffffff3;\n          if (length == 0) goto LAB_000186b5;\n          to = (line *)((int)&s->text + 1);\n          str_append(&s_accum,(char *)s,1);\n          string = string + -1;\n          s_accum.mbstate.__count = 0;\n          s_accum.mbstate.__value.__wch = 0;\n          goto LAB_00018527;\n        }\n        if ((sVar3 == 0) || (sVar3 == 0xfffffffe)) goto LAB_000186b5;\n        s = (line *)((int)&s->text + sVar3);\n        string = string + -sVar3;\n        if ((length & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((length & 4) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n        length = length & 0xfffffff3;\n        to = s;\n        if (length == 0) {\n          if (mb_cur_max == 1) {\n            iVar4 = wctob(wc);\n            s_accum.active[s_accum.length] = (char)iVar4;\n            s_accum.length = s_accum.length + 1;\n          }\n          else {\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (mb_cur_max == 1) goto LAB_00018658;\n      sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n      s_accum.length = s_accum.length + sVar2;\n      if (0xfffffffd < sVar2) {\nLAB_00018752:\n        uVar5 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar5);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      s = to;\n      if (string == (char *)0x0) break;\n    }" { (if_statement "if (mb_cur_max == 1) {\n        wc = btowc((uint)*(byte *)&s->text);\n        s = (line *)((int)&s->text + 1);\n        string = string + -1;\n        if ((length & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        to = s;\n        if ((length & 1) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n      }\n      else {\n        sVar3 = rpl_mbrtowc(&wc,(char *)s,(size_t)string,&from_stat);\n        if (sVar3 == 0xffffffff) {\n          length = length & 0xfffffff3;\n          if (length == 0) goto LAB_000186b5;\n          to = (line *)((int)&s->text + 1);\n          str_append(&s_accum,(char *)s,1);\n          string = string + -1;\n          s_accum.mbstate.__count = 0;\n          s_accum.mbstate.__value.__wch = 0;\n          goto LAB_00018527;\n        }\n        if ((sVar3 == 0) || (sVar3 == 0xfffffffe)) goto LAB_000186b5;\n        s = (line *)((int)&s->text + sVar3);\n        string = string + -sVar3;\n        if ((length & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((length & 4) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n        length = length & 0xfffffff3;\n        to = s;\n        if (length == 0) {\n          if (mb_cur_max == 1) {\n            iVar4 = wctob(wc);\n            s_accum.active[s_accum.length] = (char)iVar4;\n            s_accum.length = s_accum.length + 1;\n          }\n          else {\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }" if (parenthesized_expression "(mb_cur_max == 1)" ( (binary_expression "mb_cur_max == 1" identifier == number_literal) )) (compound_statement "{\n        wc = btowc((uint)*(byte *)&s->text);\n        s = (line *)((int)&s->text + 1);\n        string = string + -1;\n        if ((length & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        to = s;\n        if ((length & 1) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n      }" { (expression_statement "wc = btowc((uint)*(byte *)&s->text);" (assignment_expression "wc = btowc((uint)*(byte *)&s->text)" identifier = (call_expression "btowc((uint)*(byte *)&s->text)" identifier (argument_list "((uint)*(byte *)&s->text)" ( (binary_expression "(uint)*(byte *)&s->text" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)&s->text" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&s->text" & (field_expression "s->text" identifier -> field_identifier)))) )))) ;) (expression_statement "s = (line *)((int)&s->text + 1);" (assignment_expression "s = (line *)((int)&s->text + 1)" identifier = (cast_expression "(line *)((int)&s->text + 1)" ( (type_descriptor "line *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&s->text + 1)" ( (binary_expression "(int)&s->text + 1" (cast_expression "(int)&s->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&s->text" & (field_expression "s->text" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "string = string + -1;" (assignment_expression "string = string + -1" identifier = (binary_expression "string + -1" identifier + number_literal)) ;) (if_statement "if ((length & 0xc) != 0) goto LAB_00018565;" if (parenthesized_expression "((length & 0xc) != 0)" ( (binary_expression "(length & 0xc) != 0" (parenthesized_expression "(length & 0xc)" ( (binary_expression "length & 0xc" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00018565;" goto statement_identifier ;)) (labeled_statement "LAB_00018633:\n        to = s;" statement_identifier : (expression_statement "to = s;" (assignment_expression "to = s" identifier = identifier) ;)) (if_statement "if ((length & 1) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }" if (parenthesized_expression "((length & 1) == 0)" ( (binary_expression "(length & 1) == 0" (parenthesized_expression "(length & 1)" ( (binary_expression "length & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          wc = towlower(wc);\n        }" { (expression_statement "wc = towlower(wc);" (assignment_expression "wc = towlower(wc)" identifier = (call_expression "towlower(wc)" identifier (argument_list "(wc)" ( identifier )))) ;) }) (else_clause "else {\n          wc = towupper(wc);\n        }" else (compound_statement "{\n          wc = towupper(wc);\n        }" { (expression_statement "wc = towupper(wc);" (assignment_expression "wc = towupper(wc)" identifier = (call_expression "towupper(wc)" identifier (argument_list "(wc)" ( identifier )))) ;) }))) }) (else_clause "else {\n        sVar3 = rpl_mbrtowc(&wc,(char *)s,(size_t)string,&from_stat);\n        if (sVar3 == 0xffffffff) {\n          length = length & 0xfffffff3;\n          if (length == 0) goto LAB_000186b5;\n          to = (line *)((int)&s->text + 1);\n          str_append(&s_accum,(char *)s,1);\n          string = string + -1;\n          s_accum.mbstate.__count = 0;\n          s_accum.mbstate.__value.__wch = 0;\n          goto LAB_00018527;\n        }\n        if ((sVar3 == 0) || (sVar3 == 0xfffffffe)) goto LAB_000186b5;\n        s = (line *)((int)&s->text + sVar3);\n        string = string + -sVar3;\n        if ((length & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((length & 4) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n        length = length & 0xfffffff3;\n        to = s;\n        if (length == 0) {\n          if (mb_cur_max == 1) {\n            iVar4 = wctob(wc);\n            s_accum.active[s_accum.length] = (char)iVar4;\n            s_accum.length = s_accum.length + 1;\n          }\n          else {\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }" else (compound_statement "{\n        sVar3 = rpl_mbrtowc(&wc,(char *)s,(size_t)string,&from_stat);\n        if (sVar3 == 0xffffffff) {\n          length = length & 0xfffffff3;\n          if (length == 0) goto LAB_000186b5;\n          to = (line *)((int)&s->text + 1);\n          str_append(&s_accum,(char *)s,1);\n          string = string + -1;\n          s_accum.mbstate.__count = 0;\n          s_accum.mbstate.__value.__wch = 0;\n          goto LAB_00018527;\n        }\n        if ((sVar3 == 0) || (sVar3 == 0xfffffffe)) goto LAB_000186b5;\n        s = (line *)((int)&s->text + sVar3);\n        string = string + -sVar3;\n        if ((length & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((length & 4) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }\n        length = length & 0xfffffff3;\n        to = s;\n        if (length == 0) {\n          if (mb_cur_max == 1) {\n            iVar4 = wctob(wc);\n            s_accum.active[s_accum.length] = (char)iVar4;\n            s_accum.length = s_accum.length + 1;\n          }\n          else {\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }" { (expression_statement "sVar3 = rpl_mbrtowc(&wc,(char *)s,(size_t)string,&from_stat);" (assignment_expression "sVar3 = rpl_mbrtowc(&wc,(char *)s,(size_t)string,&from_stat)" identifier = (call_expression "rpl_mbrtowc(&wc,(char *)s,(size_t)string,&from_stat)" identifier (argument_list "(&wc,(char *)s,(size_t)string,&from_stat)" ( (pointer_expression "&wc" & identifier) , (cast_expression "(char *)s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(size_t)string" ( (type_descriptor "size_t" primitive_type) ) identifier) , (pointer_expression "&from_stat" & identifier) )))) ;) (if_statement "if (sVar3 == 0xffffffff) {\n          length = length & 0xfffffff3;\n          if (length == 0) goto LAB_000186b5;\n          to = (line *)((int)&s->text + 1);\n          str_append(&s_accum,(char *)s,1);\n          string = string + -1;\n          s_accum.mbstate.__count = 0;\n          s_accum.mbstate.__value.__wch = 0;\n          goto LAB_00018527;\n        }" if (parenthesized_expression "(sVar3 == 0xffffffff)" ( (binary_expression "sVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n          length = length & 0xfffffff3;\n          if (length == 0) goto LAB_000186b5;\n          to = (line *)((int)&s->text + 1);\n          str_append(&s_accum,(char *)s,1);\n          string = string + -1;\n          s_accum.mbstate.__count = 0;\n          s_accum.mbstate.__value.__wch = 0;\n          goto LAB_00018527;\n        }" { (expression_statement "length = length & 0xfffffff3;" (assignment_expression "length = length & 0xfffffff3" identifier = (binary_expression "length & 0xfffffff3" identifier & number_literal)) ;) (if_statement "if (length == 0) goto LAB_000186b5;" if (parenthesized_expression "(length == 0)" ( (binary_expression "length == 0" identifier == number_literal) )) (goto_statement "goto LAB_000186b5;" goto statement_identifier ;)) (expression_statement "to = (line *)((int)&s->text + 1);" (assignment_expression "to = (line *)((int)&s->text + 1)" identifier = (cast_expression "(line *)((int)&s->text + 1)" ( (type_descriptor "line *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&s->text + 1)" ( (binary_expression "(int)&s->text + 1" (cast_expression "(int)&s->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&s->text" & (field_expression "s->text" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "str_append(&s_accum,(char *)s,1);" (call_expression "str_append(&s_accum,(char *)s,1)" identifier (argument_list "(&s_accum,(char *)s,1)" ( (pointer_expression "&s_accum" & identifier) , (cast_expression "(char *)s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (expression_statement "string = string + -1;" (assignment_expression "string = string + -1" identifier = (binary_expression "string + -1" identifier + number_literal)) ;) (expression_statement "s_accum.mbstate.__count = 0;" (assignment_expression "s_accum.mbstate.__count = 0" (field_expression "s_accum.mbstate.__count" (field_expression "s_accum.mbstate" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "s_accum.mbstate.__value.__wch = 0;" (assignment_expression "s_accum.mbstate.__value.__wch = 0" (field_expression "s_accum.mbstate.__value.__wch" (field_expression "s_accum.mbstate.__value" (field_expression "s_accum.mbstate" identifier . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) (goto_statement "goto LAB_00018527;" goto statement_identifier ;) })) (if_statement "if ((sVar3 == 0) || (sVar3 == 0xfffffffe)) goto LAB_000186b5;" if (parenthesized_expression "((sVar3 == 0) || (sVar3 == 0xfffffffe))" ( (binary_expression "(sVar3 == 0) || (sVar3 == 0xfffffffe)" (parenthesized_expression "(sVar3 == 0)" ( (binary_expression "sVar3 == 0" identifier == number_literal) )) || (parenthesized_expression "(sVar3 == 0xfffffffe)" ( (binary_expression "sVar3 == 0xfffffffe" identifier == number_literal) ))) )) (goto_statement "goto LAB_000186b5;" goto statement_identifier ;)) (expression_statement "s = (line *)((int)&s->text + sVar3);" (assignment_expression "s = (line *)((int)&s->text + sVar3)" identifier = (cast_expression "(line *)((int)&s->text + sVar3)" ( (type_descriptor "line *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&s->text + sVar3)" ( (binary_expression "(int)&s->text + sVar3" (cast_expression "(int)&s->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&s->text" & (field_expression "s->text" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "string = string + -sVar3;" (assignment_expression "string = string + -sVar3" identifier = (binary_expression "string + -sVar3" identifier + (unary_expression "-sVar3" - identifier))) ;) (if_statement "if ((length & 0xc) == 0) goto LAB_00018633;" if (parenthesized_expression "((length & 0xc) == 0)" ( (binary_expression "(length & 0xc) == 0" (parenthesized_expression "(length & 0xc)" ( (binary_expression "length & 0xc" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00018633;" goto statement_identifier ;)) (labeled_statement "LAB_00018565:\n        if ((length & 4) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }" statement_identifier : (if_statement "if ((length & 4) == 0) {\n          wc = towlower(wc);\n        }\n        else {\n          wc = towupper(wc);\n        }" if (parenthesized_expression "((length & 4) == 0)" ( (binary_expression "(length & 4) == 0" (parenthesized_expression "(length & 4)" ( (binary_expression "length & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          wc = towlower(wc);\n        }" { (expression_statement "wc = towlower(wc);" (assignment_expression "wc = towlower(wc)" identifier = (call_expression "towlower(wc)" identifier (argument_list "(wc)" ( identifier )))) ;) }) (else_clause "else {\n          wc = towupper(wc);\n        }" else (compound_statement "{\n          wc = towupper(wc);\n        }" { (expression_statement "wc = towupper(wc);" (assignment_expression "wc = towupper(wc)" identifier = (call_expression "towupper(wc)" identifier (argument_list "(wc)" ( identifier )))) ;) })))) (expression_statement "length = length & 0xfffffff3;" (assignment_expression "length = length & 0xfffffff3" identifier = (binary_expression "length & 0xfffffff3" identifier & number_literal)) ;) (expression_statement "to = s;" (assignment_expression "to = s" identifier = identifier) ;) (if_statement "if (length == 0) {\n          if (mb_cur_max == 1) {\n            iVar4 = wctob(wc);\n            s_accum.active[s_accum.length] = (char)iVar4;\n            s_accum.length = s_accum.length + 1;\n          }\n          else {\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }" if (parenthesized_expression "(length == 0)" ( (binary_expression "length == 0" identifier == number_literal) )) (compound_statement "{\n          if (mb_cur_max == 1) {\n            iVar4 = wctob(wc);\n            s_accum.active[s_accum.length] = (char)iVar4;\n            s_accum.length = s_accum.length + 1;\n          }\n          else {\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }" { (if_statement "if (mb_cur_max == 1) {\n            iVar4 = wctob(wc);\n            s_accum.active[s_accum.length] = (char)iVar4;\n            s_accum.length = s_accum.length + 1;\n          }\n          else {\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }" if (parenthesized_expression "(mb_cur_max == 1)" ( (binary_expression "mb_cur_max == 1" identifier == number_literal) )) (compound_statement "{\n            iVar4 = wctob(wc);\n            s_accum.active[s_accum.length] = (char)iVar4;\n            s_accum.length = s_accum.length + 1;\n          }" { (expression_statement "iVar4 = wctob(wc);" (assignment_expression "iVar4 = wctob(wc)" identifier = (call_expression "wctob(wc)" identifier (argument_list "(wc)" ( identifier )))) ;) (expression_statement "s_accum.active[s_accum.length] = (char)iVar4;" (assignment_expression "s_accum.active[s_accum.length] = (char)iVar4" (subscript_expression "s_accum.active[s_accum.length]" (field_expression "s_accum.active" identifier . field_identifier) [ (field_expression "s_accum.length" identifier . field_identifier) ]) = (cast_expression "(char)iVar4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "s_accum.length = s_accum.length + 1;" (assignment_expression "s_accum.length = s_accum.length + 1" (field_expression "s_accum.length" identifier . field_identifier) = (binary_expression "s_accum.length + 1" (field_expression "s_accum.length" identifier . field_identifier) + number_literal)) ;) }) (else_clause "else {\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }" else (compound_statement "{\n            sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);\n            s_accum.length = s_accum.length + sVar2;\n            if (0xfffffffd < sVar2) goto LAB_00018752;\n          }" { (expression_statement "sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);" (assignment_expression "sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate)" identifier = (call_expression "wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate)" identifier (argument_list "(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate)" ( (binary_expression "s_accum.active + s_accum.length" (field_expression "s_accum.active" identifier . field_identifier) + (field_expression "s_accum.length" identifier . field_identifier)) , identifier , (cast_expression "(mbstate_t *)&s_accum.mbstate" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&s_accum.mbstate" & (field_expression "s_accum.mbstate" identifier . field_identifier))) )))) ;) (expression_statement "s_accum.length = s_accum.length + sVar2;" (assignment_expression "s_accum.length = s_accum.length + sVar2" (field_expression "s_accum.length" identifier . field_identifier) = (binary_expression "s_accum.length + sVar2" (field_expression "s_accum.length" identifier . field_identifier) + identifier)) ;) (if_statement "if (0xfffffffd < sVar2) goto LAB_00018752;" if (parenthesized_expression "(0xfffffffd < sVar2)" ( (binary_expression "0xfffffffd < sVar2" number_literal < identifier) )) (goto_statement "goto LAB_00018752;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_000186b5;" goto statement_identifier ;) })) }))) (if_statement "if (mb_cur_max == 1) goto LAB_00018658;" if (parenthesized_expression "(mb_cur_max == 1)" ( (binary_expression "mb_cur_max == 1" identifier == number_literal) )) (goto_statement "goto LAB_00018658;" goto statement_identifier ;)) (expression_statement "sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate);" (assignment_expression "sVar2 = wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate)" identifier = (call_expression "wcrtomb(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate)" identifier (argument_list "(s_accum.active + s_accum.length,wc,(mbstate_t *)&s_accum.mbstate)" ( (binary_expression "s_accum.active + s_accum.length" (field_expression "s_accum.active" identifier . field_identifier) + (field_expression "s_accum.length" identifier . field_identifier)) , identifier , (cast_expression "(mbstate_t *)&s_accum.mbstate" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&s_accum.mbstate" & (field_expression "s_accum.mbstate" identifier . field_identifier))) )))) ;) (expression_statement "s_accum.length = s_accum.length + sVar2;" (assignment_expression "s_accum.length = s_accum.length + sVar2" (field_expression "s_accum.length" identifier . field_identifier) = (binary_expression "s_accum.length + sVar2" (field_expression "s_accum.length" identifier . field_identifier) + identifier)) ;) (if_statement "if (0xfffffffd < sVar2) {\nLAB_00018752:\n        uVar5 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar5);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }" if (parenthesized_expression "(0xfffffffd < sVar2)" ( (binary_expression "0xfffffffd < sVar2" number_literal < identifier) )) (compound_statement "{\nLAB_00018752:\n        uVar5 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar5);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }" { (labeled_statement "LAB_00018752:\n        uVar5 = dcgettext(0,"case conversion produced an invalid character",5);" statement_identifier : (expression_statement "uVar5 = dcgettext(0,"case conversion produced an invalid character",5);" (assignment_expression "uVar5 = dcgettext(0,"case conversion produced an invalid character",5)" identifier = (call_expression "dcgettext(0,"case conversion produced an invalid character",5)" identifier (argument_list "(0,"case conversion produced an invalid character",5)" ( number_literal , (string_literal ""case conversion produced an invalid character"" " string_content ") , number_literal )))) ;)) (expression_statement "__fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar5);" (call_expression "__fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar5)" identifier (argument_list "(*(undefined4 *)PTR_stderr_00038fc0,1,uVar5)" ( (pointer_expression "*(undefined4 *)PTR_stderr_00038fc0" * (cast_expression "(undefined4 *)PTR_stderr_00038fc0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , number_literal , identifier ))) ;) comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "s = to;" (assignment_expression "s = to" identifier = identifier) ;) (if_statement "if (string == (char *)0x0) break;" if (parenthesized_expression "(string == (char *)0x0)" ( (binary_expression "string == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) (goto_statement "goto LAB_000185d0;" goto statement_identifier ;) (labeled_statement "LAB_00018658:\n  iVar4 = wctob(wc);" statement_identifier : (expression_statement "iVar4 = wctob(wc);" (assignment_expression "iVar4 = wctob(wc)" identifier = (call_expression "wctob(wc)" identifier (argument_list "(wc)" ( identifier )))) ;)) (expression_statement "s_accum.active[s_accum.length] = (char)iVar4;" (assignment_expression "s_accum.active[s_accum.length] = (char)iVar4" (subscript_expression "s_accum.active[s_accum.length]" (field_expression "s_accum.active" identifier . field_identifier) [ (field_expression "s_accum.length" identifier . field_identifier) ]) = (cast_expression "(char)iVar4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "s_accum.length = s_accum.length + 1;" (assignment_expression "s_accum.length = s_accum.length + 1" (field_expression "s_accum.length" identifier . field_identifier) = (binary_expression "s_accum.length + 1" (field_expression "s_accum.length" identifier . field_identifier) + number_literal)) ;) (goto_statement "goto LAB_00018527;" goto statement_identifier ;) })))
(translation_unit "void __regparm3 FUN_000184b0(byte *param_1,int param_2,uint param_3)\n\n{\n  size_t sVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  wchar_t local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x184bd;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == 0) {\nLAB_000186b5:\n    FUN_000182b0();\nLAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    \n    FUN_0002c430();\n  }\n  if ((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)) {\n    FUN_00017b60();\n  }\n  local_28 = DAT_000393d4;\n  local_24 = DAT_000393d8;\nLAB_00018527:\n  if (param_2 != 0) {\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }\n  goto LAB_000185d0;\nLAB_00018658:\n  iVar2 = wctob(local_2c);\n  *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n  DAT_000393c8 = DAT_000393c8 + 1;\n  goto LAB_00018527;\n}\n\n" (function_definition "void __regparm3 FUN_000184b0(byte *param_1,int param_2,uint param_3)\n\n{\n  size_t sVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  wchar_t local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x184bd;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == 0) {\nLAB_000186b5:\n    FUN_000182b0();\nLAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    \n    FUN_0002c430();\n  }\n  if ((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)) {\n    FUN_00017b60();\n  }\n  local_28 = DAT_000393d4;\n  local_24 = DAT_000393d8;\nLAB_00018527:\n  if (param_2 != 0) {\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }\n  goto LAB_000185d0;\nLAB_00018658:\n  iVar2 = wctob(local_2c);\n  *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n  DAT_000393c8 = DAT_000393c8 + 1;\n  goto LAB_00018527;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000184b0(byte *param_1,int param_2,uint param_3)" identifier (parameter_list "(byte *param_1,int param_2,uint param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  size_t sVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  wchar_t local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x184bd;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == 0) {\nLAB_000186b5:\n    FUN_000182b0();\nLAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    \n    FUN_0002c430();\n  }\n  if ((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)) {\n    FUN_00017b60();\n  }\n  local_28 = DAT_000393d4;\n  local_24 = DAT_000393d8;\nLAB_00018527:\n  if (param_2 != 0) {\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }\n  goto LAB_000185d0;\nLAB_00018658:\n  iVar2 = wctob(local_2c);\n  *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n  DAT_000393c8 = DAT_000393c8 + 1;\n  goto LAB_00018527;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "wchar_t local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x184bd;" (assignment_expression "uStack_14 = 0x184bd" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (param_3 == 0) {\nLAB_000186b5:\n    FUN_000182b0();\nLAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    \n    FUN_0002c430();\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000186b5:\n    FUN_000182b0();\nLAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    \n    FUN_0002c430();\n  }" { (labeled_statement "LAB_000186b5:\n    FUN_000182b0();" statement_identifier : (expression_statement "FUN_000182b0();" (call_expression "FUN_000182b0()" identifier (argument_list "()" ( ))) ;)) (labeled_statement "LAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\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;\n    }" { (return_statement "return;" return ;) }))) (expression_statement "FUN_0002c430();" (call_expression "FUN_0002c430()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)) {\n    FUN_00017b60();\n  }" if (parenthesized_expression "((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2))" ( (binary_expression "(uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)" (call_expression "(uint)(DAT_000393cc - DAT_000393c8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_000393cc - DAT_000393c8)" ( (binary_expression "DAT_000393cc - DAT_000393c8" identifier - identifier) ))) < (call_expression "(uint)(DAT_000396c4 * param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_000396c4 * param_2)" ( (binary_expression "DAT_000396c4 * param_2" identifier * identifier) )))) )) (compound_statement "{\n    FUN_00017b60();\n  }" { (expression_statement "FUN_00017b60();" (call_expression "FUN_00017b60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_28 = DAT_000393d4;" (assignment_expression "local_28 = DAT_000393d4" identifier = identifier) ;) (expression_statement "local_24 = DAT_000393d8;" (assignment_expression "local_24 = DAT_000393d8" identifier = identifier) ;) (labeled_statement "LAB_00018527:\n  if (param_2 != 0) {\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }" statement_identifier : (if_statement "if (param_2 != 0) {\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }" { (do_statement "do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );" do (compound_statement "{\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    }" { (if_statement "if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }" if (parenthesized_expression "(DAT_000396c4 == 1)" ( (binary_expression "DAT_000396c4 == 1" identifier == number_literal) )) (compound_statement "{\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }" { (expression_statement "local_2c = btowc((uint)*param_1);" (assignment_expression "local_2c = btowc((uint)*param_1)" identifier = (call_expression "btowc((uint)*param_1)" identifier (argument_list "((uint)*param_1)" ( (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier) )))) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) (if_statement "if ((param_3 & 0xc) != 0) goto LAB_00018565;" if (parenthesized_expression "((param_3 & 0xc) != 0)" ( (binary_expression "(param_3 & 0xc) != 0" (parenthesized_expression "(param_3 & 0xc)" ( (binary_expression "param_3 & 0xc" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00018565;" goto statement_identifier ;)) (labeled_statement "LAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }" statement_identifier : (if_statement "if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }" if (parenthesized_expression "((param_3 & 1) == 0)" ( (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" ( (binary_expression "param_3 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          local_2c = towlower(local_2c);\n        }" { (expression_statement "local_2c = towlower(local_2c);" (assignment_expression "local_2c = towlower(local_2c)" identifier = (call_expression "towlower(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) }) (else_clause "else {\n          local_2c = towupper(local_2c);\n        }" else (compound_statement "{\n          local_2c = towupper(local_2c);\n        }" { (expression_statement "local_2c = towupper(local_2c);" (assignment_expression "local_2c = towupper(local_2c)" identifier = (call_expression "towupper(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) })))) }) (else_clause "else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }" else (compound_statement "{\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }" { (expression_statement "iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);" (assignment_expression "iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28)" identifier = (call_expression "FUN_0002b6f0(&local_2c,param_1,param_2,&local_28)" identifier (argument_list "(&local_2c,param_1,param_2,&local_28)" ( (pointer_expression "&local_2c" & identifier) , identifier , identifier , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }" { (expression_statement "param_3 = param_3 & 0xfffffff3;" (assignment_expression "param_3 = param_3 & 0xfffffff3" identifier = (binary_expression "param_3 & 0xfffffff3" identifier & number_literal)) ;) (if_statement "if (param_3 == 0) goto LAB_000186b5;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000186b5;" goto statement_identifier ;)) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000182b0();" (call_expression "FUN_000182b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) (expression_statement "DAT_000393d4 = 0;" (assignment_expression "DAT_000393d4 = 0" identifier = number_literal) ;) (expression_statement "DAT_000393d8 = 0;" (assignment_expression "DAT_000393d8 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00018527;" goto statement_identifier ;) })) (if_statement "if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;" if (parenthesized_expression "((iVar2 == 0) || (iVar2 == -2))" ( (binary_expression "(iVar2 == 0) || (iVar2 == -2)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar2 == -2)" ( (binary_expression "iVar2 == -2" identifier == number_literal) ))) )) (goto_statement "goto LAB_000186b5;" goto statement_identifier ;)) (expression_statement "param_1 = param_1 + iVar2;" (assignment_expression "param_1 = param_1 + iVar2" identifier = (binary_expression "param_1 + iVar2" identifier + identifier)) ;) (expression_statement "param_2 = param_2 - iVar2;" (assignment_expression "param_2 = param_2 - iVar2" identifier = (binary_expression "param_2 - iVar2" identifier - identifier)) ;) (if_statement "if ((param_3 & 0xc) == 0) goto LAB_00018633;" if (parenthesized_expression "((param_3 & 0xc) == 0)" ( (binary_expression "(param_3 & 0xc) == 0" (parenthesized_expression "(param_3 & 0xc)" ( (binary_expression "param_3 & 0xc" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00018633;" goto statement_identifier ;)) (labeled_statement "LAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }" statement_identifier : (if_statement "if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }" if (parenthesized_expression "((param_3 & 4) == 0)" ( (binary_expression "(param_3 & 4) == 0" (parenthesized_expression "(param_3 & 4)" ( (binary_expression "param_3 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          local_2c = towlower(local_2c);\n        }" { (expression_statement "local_2c = towlower(local_2c);" (assignment_expression "local_2c = towlower(local_2c)" identifier = (call_expression "towlower(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) }) (else_clause "else {\n          local_2c = towupper(local_2c);\n        }" else (compound_statement "{\n          local_2c = towupper(local_2c);\n        }" { (expression_statement "local_2c = towupper(local_2c);" (assignment_expression "local_2c = towupper(local_2c)" identifier = (call_expression "towupper(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) })))) (expression_statement "param_3 = param_3 & 0xfffffff3;" (assignment_expression "param_3 = param_3 & 0xfffffff3" identifier = (binary_expression "param_3 & 0xfffffff3" identifier & number_literal)) ;) (if_statement "if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }" { (if_statement "if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }" if (parenthesized_expression "(DAT_000396c4 == 1)" ( (binary_expression "DAT_000396c4 == 1" identifier == number_literal) )) (compound_statement "{\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }" { (expression_statement "iVar2 = wctob(local_2c);" (assignment_expression "iVar2 = wctob(local_2c)" identifier = (call_expression "wctob(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) (expression_statement "*(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;" (assignment_expression "*(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2" (pointer_expression "*(char *)(DAT_000393c4 + DAT_000393c8)" * (cast_expression "(char *)(DAT_000393c4 + DAT_000393c8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000393c4 + DAT_000393c8)" ( (binary_expression "DAT_000393c4 + DAT_000393c8" identifier + identifier) )))) = (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "DAT_000393c8 = DAT_000393c8 + 1;" (assignment_expression "DAT_000393c8 = DAT_000393c8 + 1" identifier = (binary_expression "DAT_000393c8 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }" else (compound_statement "{\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }" { (expression_statement "sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);" (assignment_expression "sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4)" identifier = (call_expression "wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4)" identifier (argument_list "((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4)" ( (cast_expression "(char *)(DAT_000393c8 + DAT_000393c4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000393c8 + DAT_000393c4)" ( (binary_expression "DAT_000393c8 + DAT_000393c4" identifier + identifier) ))) , identifier , (cast_expression "(mbstate_t *)&DAT_000393d4" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000393d4" & identifier)) )))) ;) (expression_statement "DAT_000393c8 = DAT_000393c8 + sVar1;" (assignment_expression "DAT_000393c8 = DAT_000393c8 + sVar1" identifier = (binary_expression "DAT_000393c8 + sVar1" identifier + identifier)) ;) (if_statement "if (0xfffffffd < sVar1) goto LAB_00018752;" if (parenthesized_expression "(0xfffffffd < sVar1)" ( (binary_expression "0xfffffffd < sVar1" number_literal < identifier) )) (goto_statement "goto LAB_00018752;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_000186b5;" goto statement_identifier ;) })) }))) (if_statement "if (DAT_000396c4 == 1) goto LAB_00018658;" if (parenthesized_expression "(DAT_000396c4 == 1)" ( (binary_expression "DAT_000396c4 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00018658;" goto statement_identifier ;)) (expression_statement "sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);" (assignment_expression "sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4)" identifier = (call_expression "wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4)" identifier (argument_list "((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4)" ( (cast_expression "(char *)(DAT_000393c8 + DAT_000393c4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000393c8 + DAT_000393c4)" ( (binary_expression "DAT_000393c8 + DAT_000393c4" identifier + identifier) ))) , identifier , (cast_expression "(mbstate_t *)&DAT_000393d4" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000393d4" & identifier)) )))) ;) (expression_statement "DAT_000393c8 = DAT_000393c8 + sVar1;" (assignment_expression "DAT_000393c8 = DAT_000393c8 + sVar1" identifier = (binary_expression "DAT_000393c8 + sVar1" identifier + identifier)) ;) (if_statement "if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }" if (parenthesized_expression "(0xfffffffd < sVar1)" ( (binary_expression "0xfffffffd < sVar1" number_literal < identifier) )) (compound_statement "{\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }" { (labeled_statement "LAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);" statement_identifier : (expression_statement "uVar3 = dcgettext(0,"case conversion produced an invalid character",5);" (assignment_expression "uVar3 = dcgettext(0,"case conversion produced an invalid character",5)" identifier = (call_expression "dcgettext(0,"case conversion produced an invalid character",5)" identifier (argument_list "(0,"case conversion produced an invalid character",5)" ( number_literal , (string_literal ""case conversion produced an invalid character"" " string_content ") , number_literal )))) ;)) (expression_statement "__fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);" (call_expression "__fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3)" identifier (argument_list "(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3)" ( (pointer_expression "*(undefined4 *)PTR_stderr_00038fc0" * (cast_expression "(undefined4 *)PTR_stderr_00038fc0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , number_literal , identifier ))) ;) (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (param_2 == 0) break;" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (goto_statement "goto LAB_000185d0;" goto statement_identifier ;) (labeled_statement "LAB_00018658:\n  iVar2 = wctob(local_2c);" statement_identifier : (expression_statement "iVar2 = wctob(local_2c);" (assignment_expression "iVar2 = wctob(local_2c)" identifier = (call_expression "wctob(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;)) (expression_statement "*(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;" (assignment_expression "*(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2" (pointer_expression "*(char *)(DAT_000393c4 + DAT_000393c8)" * (cast_expression "(char *)(DAT_000393c4 + DAT_000393c8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000393c4 + DAT_000393c8)" ( (binary_expression "DAT_000393c4 + DAT_000393c8" identifier + identifier) )))) = (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "DAT_000393c8 = DAT_000393c8 + 1;" (assignment_expression "DAT_000393c8 = DAT_000393c8 + 1" identifier = (binary_expression "DAT_000393c8 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00018527;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE 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 ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - IDENT) ))) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * IDENT) )))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( IDENT )) * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) })))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (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 (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) , IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) }))) (goto_statement goto statement_identifier ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) , IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;)) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , LIT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) }) while (parenthesized_expression ( BOOL )) ;) }))) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "void __regparm3 FUN_000184b0(byte *param_1,int param_2,uint param_3)\n\n{\n  size_t sVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  wchar_t local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x184bd;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == 0) {\nLAB_000186b5:\n    FUN_000182b0();\nLAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    \n    FUN_0002c430();\n  }\n  if ((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)) {\n    FUN_00017b60();\n  }\n  local_28 = DAT_000393d4;\n  local_24 = DAT_000393d8;\nLAB_00018527:\n  if (param_2 != 0) {\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }\n  goto LAB_000185d0;\nLAB_00018658:\n  iVar2 = wctob(local_2c);\n  *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n  DAT_000393c8 = DAT_000393c8 + 1;\n  goto LAB_00018527;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000184b0(byte *param_1,int param_2,uint param_3)" (identifier "FUN_000184b0") (parameter_list "(byte *param_1,int param_2,uint param_3)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  size_t sVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int in_GS_OFFSET;\n  wchar_t local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x184bd;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_3 == 0) {\nLAB_000186b5:\n    FUN_000182b0();\nLAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    \n    FUN_0002c430();\n  }\n  if ((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)) {\n    FUN_00017b60();\n  }\n  local_28 = DAT_000393d4;\n  local_24 = DAT_000393d8;\nLAB_00018527:\n  if (param_2 != 0) {\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }\n  goto LAB_000185d0;\nLAB_00018658:\n  iVar2 = wctob(local_2c);\n  *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n  DAT_000393c8 = DAT_000393c8 + 1;\n  goto LAB_00018527;\n}" ({ "{") (declaration "size_t sVar1;" (primitive_type "size_t") (identifier "sVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "wchar_t local_2c;" (type_identifier "wchar_t") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x184bd;" (assignment_expression "uStack_14 = 0x184bd" (identifier "uStack_14") (= "=") (number_literal "0x184bd")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (param_3 == 0) {\nLAB_000186b5:\n    FUN_000182b0();\nLAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    \n    FUN_0002c430();\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000186b5:\n    FUN_000182b0();\nLAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }\n                    \n    FUN_0002c430();\n  }" ({ "{") (labeled_statement "LAB_000186b5:\n    FUN_000182b0();" (statement_identifier "LAB_000186b5") (: ":") (expression_statement "FUN_000182b0();" (call_expression "FUN_000182b0()" (identifier "FUN_000182b0") (argument_list "()" (( "(") () ")"))) (; ";"))) (labeled_statement "LAB_000185d0:\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\n    }" (statement_identifier "LAB_000185d0") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return;\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;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "FUN_0002c430();" (call_expression "FUN_0002c430()" (identifier "FUN_0002c430") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if ((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)) {\n    FUN_00017b60();\n  }" (if "if") (parenthesized_expression "((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2))" (( "(") (binary_expression "(uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)" (call_expression "(uint)(DAT_000393cc - DAT_000393c8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(DAT_000393cc - DAT_000393c8)" (( "(") (binary_expression "DAT_000393cc - DAT_000393c8" (identifier "DAT_000393cc") (- "-") (identifier "DAT_000393c8")) () ")"))) (< "<") (call_expression "(uint)(DAT_000396c4 * param_2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(DAT_000396c4 * param_2)" (( "(") (binary_expression "DAT_000396c4 * param_2" (identifier "DAT_000396c4") (* "*") (identifier "param_2")) () ")")))) () ")")) (compound_statement "{\n    FUN_00017b60();\n  }" ({ "{") (expression_statement "FUN_00017b60();" (call_expression "FUN_00017b60()" (identifier "FUN_00017b60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "local_28 = DAT_000393d4;" (assignment_expression "local_28 = DAT_000393d4" (identifier "local_28") (= "=") (identifier "DAT_000393d4")) (; ";")) (expression_statement "local_24 = DAT_000393d8;" (assignment_expression "local_24 = DAT_000393d8" (identifier "local_24") (= "=") (identifier "DAT_000393d8")) (; ";")) (labeled_statement "LAB_00018527:\n  if (param_2 != 0) {\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }" (statement_identifier "LAB_00018527") (: ":") (if_statement "if (param_2 != 0) {\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );\n  }" ({ "{") (do_statement "do {\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    } while( true );" (do "do") (compound_statement "{\n      if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }\n      if (DAT_000396c4 == 1) goto LAB_00018658;\n      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);\n      DAT_000393c8 = DAT_000393c8 + sVar1;\n      if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }\n      if (param_2 == 0) break;\n    }" ({ "{") (if_statement "if (DAT_000396c4 == 1) {\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }\n      else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }" (if "if") (parenthesized_expression "(DAT_000396c4 == 1)" (( "(") (binary_expression "DAT_000396c4 == 1" (identifier "DAT_000396c4") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        local_2c = btowc((uint)*param_1);\n        param_1 = param_1 + 1;\n        param_2 = param_2 + -1;\n        if ((param_3 & 0xc) != 0) goto LAB_00018565;\nLAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n      }" ({ "{") (expression_statement "local_2c = btowc((uint)*param_1);" (assignment_expression "local_2c = btowc((uint)*param_1)" (identifier "local_2c") (= "=") (call_expression "btowc((uint)*param_1)" (identifier "btowc") (argument_list "((uint)*param_1)" (( "(") (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" (identifier "param_2") (= "=") (binary_expression "param_2 + -1" (identifier "param_2") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if ((param_3 & 0xc) != 0) goto LAB_00018565;" (if "if") (parenthesized_expression "((param_3 & 0xc) != 0)" (( "(") (binary_expression "(param_3 & 0xc) != 0" (parenthesized_expression "(param_3 & 0xc)" (( "(") (binary_expression "param_3 & 0xc" (identifier "param_3") (& "&") (number_literal "0xc")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00018565;" (goto "goto") (statement_identifier "LAB_00018565") (; ";"))) (labeled_statement "LAB_00018633:\n        if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }" (statement_identifier "LAB_00018633") (: ":") (if_statement "if ((param_3 & 1) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }" (if "if") (parenthesized_expression "((param_3 & 1) == 0)" (( "(") (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" (( "(") (binary_expression "param_3 & 1" (identifier "param_3") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          local_2c = towlower(local_2c);\n        }" ({ "{") (expression_statement "local_2c = towlower(local_2c);" (assignment_expression "local_2c = towlower(local_2c)" (identifier "local_2c") (= "=") (call_expression "towlower(local_2c)" (identifier "towlower") (argument_list "(local_2c)" (( "(") (identifier "local_2c") () ")")))) (; ";")) (} "}")) (else_clause "else {\n          local_2c = towupper(local_2c);\n        }" (else "else") (compound_statement "{\n          local_2c = towupper(local_2c);\n        }" ({ "{") (expression_statement "local_2c = towupper(local_2c);" (assignment_expression "local_2c = towupper(local_2c)" (identifier "local_2c") (= "=") (call_expression "towupper(local_2c)" (identifier "towupper") (argument_list "(local_2c)" (( "(") (identifier "local_2c") () ")")))) (; ";")) (} "}"))))) (} "}")) (else_clause "else {\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }" (else "else") (compound_statement "{\n        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);\n        if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }\n        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;\n        param_1 = param_1 + iVar2;\n        param_2 = param_2 - iVar2;\n        if ((param_3 & 0xc) == 0) goto LAB_00018633;\nLAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }\n        param_3 = param_3 & 0xfffffff3;\n        if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }\n      }" ({ "{") (expression_statement "iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);" (assignment_expression "iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28)" (identifier "iVar2") (= "=") (call_expression "FUN_0002b6f0(&local_2c,param_1,param_2,&local_28)" (identifier "FUN_0002b6f0") (argument_list "(&local_2c,param_1,param_2,&local_28)" (( "(") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")")))) (; ";")) (if_statement "if (iVar2 == -1) {\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }" (if "if") (parenthesized_expression "(iVar2 == -1)" (( "(") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          param_3 = param_3 & 0xfffffff3;\n          if (param_3 == 0) goto LAB_000186b5;\n          param_1 = param_1 + 1;\n          FUN_000182b0();\n          param_2 = param_2 + -1;\n          DAT_000393d4 = 0;\n          DAT_000393d8 = 0;\n          goto LAB_00018527;\n        }" ({ "{") (expression_statement "param_3 = param_3 & 0xfffffff3;" (assignment_expression "param_3 = param_3 & 0xfffffff3" (identifier "param_3") (= "=") (binary_expression "param_3 & 0xfffffff3" (identifier "param_3") (& "&") (number_literal "0xfffffff3"))) (; ";")) (if_statement "if (param_3 == 0) goto LAB_000186b5;" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000186b5;" (goto "goto") (statement_identifier "LAB_000186b5") (; ";"))) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_000182b0();" (call_expression "FUN_000182b0()" (identifier "FUN_000182b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" (identifier "param_2") (= "=") (binary_expression "param_2 + -1" (identifier "param_2") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "DAT_000393d4 = 0;" (assignment_expression "DAT_000393d4 = 0" (identifier "DAT_000393d4") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_000393d8 = 0;" (assignment_expression "DAT_000393d8 = 0" (identifier "DAT_000393d8") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00018527;" (goto "goto") (statement_identifier "LAB_00018527") (; ";")) (} "}"))) (if_statement "if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;" (if "if") (parenthesized_expression "((iVar2 == 0) || (iVar2 == -2))" (( "(") (binary_expression "(iVar2 == 0) || (iVar2 == -2)" (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar2 == -2)" (( "(") (binary_expression "iVar2 == -2" (identifier "iVar2") (== "==") (number_literal "-2")) () ")"))) () ")")) (goto_statement "goto LAB_000186b5;" (goto "goto") (statement_identifier "LAB_000186b5") (; ";"))) (expression_statement "param_1 = param_1 + iVar2;" (assignment_expression "param_1 = param_1 + iVar2" (identifier "param_1") (= "=") (binary_expression "param_1 + iVar2" (identifier "param_1") (+ "+") (identifier "iVar2"))) (; ";")) (expression_statement "param_2 = param_2 - iVar2;" (assignment_expression "param_2 = param_2 - iVar2" (identifier "param_2") (= "=") (binary_expression "param_2 - iVar2" (identifier "param_2") (- "-") (identifier "iVar2"))) (; ";")) (if_statement "if ((param_3 & 0xc) == 0) goto LAB_00018633;" (if "if") (parenthesized_expression "((param_3 & 0xc) == 0)" (( "(") (binary_expression "(param_3 & 0xc) == 0" (parenthesized_expression "(param_3 & 0xc)" (( "(") (binary_expression "param_3 & 0xc" (identifier "param_3") (& "&") (number_literal "0xc")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00018633;" (goto "goto") (statement_identifier "LAB_00018633") (; ";"))) (labeled_statement "LAB_00018565:\n        if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }" (statement_identifier "LAB_00018565") (: ":") (if_statement "if ((param_3 & 4) == 0) {\n          local_2c = towlower(local_2c);\n        }\n        else {\n          local_2c = towupper(local_2c);\n        }" (if "if") (parenthesized_expression "((param_3 & 4) == 0)" (( "(") (binary_expression "(param_3 & 4) == 0" (parenthesized_expression "(param_3 & 4)" (( "(") (binary_expression "param_3 & 4" (identifier "param_3") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          local_2c = towlower(local_2c);\n        }" ({ "{") (expression_statement "local_2c = towlower(local_2c);" (assignment_expression "local_2c = towlower(local_2c)" (identifier "local_2c") (= "=") (call_expression "towlower(local_2c)" (identifier "towlower") (argument_list "(local_2c)" (( "(") (identifier "local_2c") () ")")))) (; ";")) (} "}")) (else_clause "else {\n          local_2c = towupper(local_2c);\n        }" (else "else") (compound_statement "{\n          local_2c = towupper(local_2c);\n        }" ({ "{") (expression_statement "local_2c = towupper(local_2c);" (assignment_expression "local_2c = towupper(local_2c)" (identifier "local_2c") (= "=") (call_expression "towupper(local_2c)" (identifier "towupper") (argument_list "(local_2c)" (( "(") (identifier "local_2c") () ")")))) (; ";")) (} "}"))))) (expression_statement "param_3 = param_3 & 0xfffffff3;" (assignment_expression "param_3 = param_3 & 0xfffffff3" (identifier "param_3") (= "=") (binary_expression "param_3 & 0xfffffff3" (identifier "param_3") (& "&") (number_literal "0xfffffff3"))) (; ";")) (if_statement "if (param_3 == 0) {\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }\n          goto LAB_000186b5;\n        }" ({ "{") (if_statement "if (DAT_000396c4 == 1) {\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }\n          else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }" (if "if") (parenthesized_expression "(DAT_000396c4 == 1)" (( "(") (binary_expression "DAT_000396c4 == 1" (identifier "DAT_000396c4") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            iVar2 = wctob(local_2c);\n            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;\n            DAT_000393c8 = DAT_000393c8 + 1;\n          }" ({ "{") (expression_statement "iVar2 = wctob(local_2c);" (assignment_expression "iVar2 = wctob(local_2c)" (identifier "iVar2") (= "=") (call_expression "wctob(local_2c)" (identifier "wctob") (argument_list "(local_2c)" (( "(") (identifier "local_2c") () ")")))) (; ";")) (expression_statement "*(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;" (assignment_expression "*(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2" (pointer_expression "*(char *)(DAT_000393c4 + DAT_000393c8)" (* "*") (cast_expression "(char *)(DAT_000393c4 + DAT_000393c8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000393c4 + DAT_000393c8)" (( "(") (binary_expression "DAT_000393c4 + DAT_000393c8" (identifier "DAT_000393c4") (+ "+") (identifier "DAT_000393c8")) () ")")))) (= "=") (cast_expression "(char)iVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar2"))) (; ";")) (expression_statement "DAT_000393c8 = DAT_000393c8 + 1;" (assignment_expression "DAT_000393c8 = DAT_000393c8 + 1" (identifier "DAT_000393c8") (= "=") (binary_expression "DAT_000393c8 + 1" (identifier "DAT_000393c8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }" (else "else") (compound_statement "{\n            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);\n            DAT_000393c8 = DAT_000393c8 + sVar1;\n            if (0xfffffffd < sVar1) goto LAB_00018752;\n          }" ({ "{") (expression_statement "sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4);" (assignment_expression "sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4)" (identifier "sVar1") (= "=") (call_expression "wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4)" (identifier "wcrtomb") (argument_list "((char *)(DAT_000393c8 + DAT_000393c4),local_2c,\n                            (mbstate_t *)&DAT_000393d4)" (( "(") (cast_expression "(char *)(DAT_000393c8 + DAT_000393c4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000393c8 + DAT_000393c4)" (( "(") (binary_expression "DAT_000393c8 + DAT_000393c4" (identifier "DAT_000393c8") (+ "+") (identifier "DAT_000393c4")) () ")"))) (, ",") (identifier "local_2c") (, ",") (cast_expression "(mbstate_t *)&DAT_000393d4" (( "(") (type_descriptor "mbstate_t *" (type_identifier "mbstate_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_000393d4" (& "&") (identifier "DAT_000393d4"))) () ")")))) (; ";")) (expression_statement "DAT_000393c8 = DAT_000393c8 + sVar1;" (assignment_expression "DAT_000393c8 = DAT_000393c8 + sVar1" (identifier "DAT_000393c8") (= "=") (binary_expression "DAT_000393c8 + sVar1" (identifier "DAT_000393c8") (+ "+") (identifier "sVar1"))) (; ";")) (if_statement "if (0xfffffffd < sVar1) goto LAB_00018752;" (if "if") (parenthesized_expression "(0xfffffffd < sVar1)" (( "(") (binary_expression "0xfffffffd < sVar1" (number_literal "0xfffffffd") (< "<") (identifier "sVar1")) () ")")) (goto_statement "goto LAB_00018752;" (goto "goto") (statement_identifier "LAB_00018752") (; ";"))) (} "}")))) (goto_statement "goto LAB_000186b5;" (goto "goto") (statement_identifier "LAB_000186b5") (; ";")) (} "}"))) (} "}")))) (if_statement "if (DAT_000396c4 == 1) goto LAB_00018658;" (if "if") (parenthesized_expression "(DAT_000396c4 == 1)" (( "(") (binary_expression "DAT_000396c4 == 1" (identifier "DAT_000396c4") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00018658;" (goto "goto") (statement_identifier "LAB_00018658") (; ";"))) (expression_statement "sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);" (assignment_expression "sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4)" (identifier "sVar1") (= "=") (call_expression "wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4)" (identifier "wcrtomb") (argument_list "((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4)" (( "(") (cast_expression "(char *)(DAT_000393c8 + DAT_000393c4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000393c8 + DAT_000393c4)" (( "(") (binary_expression "DAT_000393c8 + DAT_000393c4" (identifier "DAT_000393c8") (+ "+") (identifier "DAT_000393c4")) () ")"))) (, ",") (identifier "local_2c") (, ",") (cast_expression "(mbstate_t *)&DAT_000393d4" (( "(") (type_descriptor "mbstate_t *" (type_identifier "mbstate_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_000393d4" (& "&") (identifier "DAT_000393d4"))) () ")")))) (; ";")) (expression_statement "DAT_000393c8 = DAT_000393c8 + sVar1;" (assignment_expression "DAT_000393c8 = DAT_000393c8 + sVar1" (identifier "DAT_000393c8") (= "=") (binary_expression "DAT_000393c8 + sVar1" (identifier "DAT_000393c8") (+ "+") (identifier "sVar1"))) (; ";")) (if_statement "if (0xfffffffd < sVar1) {\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }" (if "if") (parenthesized_expression "(0xfffffffd < sVar1)" (( "(") (binary_expression "0xfffffffd < sVar1" (number_literal "0xfffffffd") (< "<") (identifier "sVar1")) () ")")) (compound_statement "{\nLAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);\n        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);\n                    \n        abort();\n      }" ({ "{") (labeled_statement "LAB_00018752:\n        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);" (statement_identifier "LAB_00018752") (: ":") (expression_statement "uVar3 = dcgettext(0,"case conversion produced an invalid character",5);" (assignment_expression "uVar3 = dcgettext(0,"case conversion produced an invalid character",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"case conversion produced an invalid character",5)" (identifier "dcgettext") (argument_list "(0,"case conversion produced an invalid character",5)" (( "(") (number_literal "0") (, ",") (string_literal ""case conversion produced an invalid character"" (" """) (string_content "case conversion produced an invalid character") (" """)) (, ",") (number_literal "5") () ")")))) (; ";"))) (expression_statement "__fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);" (call_expression "__fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3)" (identifier "__fprintf_chk") (argument_list "(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3)" (( "(") (pointer_expression "*(undefined4 *)PTR_stderr_00038fc0" (* "*") (cast_expression "(undefined4 *)PTR_stderr_00038fc0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_stderr_00038fc0"))) (, ",") (number_literal "1") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2 == 0) break;" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))) (goto_statement "goto LAB_000185d0;" (goto "goto") (statement_identifier "LAB_000185d0") (; ";")) (labeled_statement "LAB_00018658:\n  iVar2 = wctob(local_2c);" (statement_identifier "LAB_00018658") (: ":") (expression_statement "iVar2 = wctob(local_2c);" (assignment_expression "iVar2 = wctob(local_2c)" (identifier "iVar2") (= "=") (call_expression "wctob(local_2c)" (identifier "wctob") (argument_list "(local_2c)" (( "(") (identifier "local_2c") () ")")))) (; ";"))) (expression_statement "*(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;" (assignment_expression "*(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2" (pointer_expression "*(char *)(DAT_000393c4 + DAT_000393c8)" (* "*") (cast_expression "(char *)(DAT_000393c4 + DAT_000393c8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000393c4 + DAT_000393c8)" (( "(") (binary_expression "DAT_000393c4 + DAT_000393c8" (identifier "DAT_000393c4") (+ "+") (identifier "DAT_000393c8")) () ")")))) (= "=") (cast_expression "(char)iVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar2"))) (; ";")) (expression_statement "DAT_000393c8 = DAT_000393c8 + 1;" (assignment_expression "DAT_000393c8 = DAT_000393c8 + 1" (identifier "DAT_000393c8") (= "=") (binary_expression "DAT_000393c8 + 1" (identifier "DAT_000393c8") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_00018527;" (goto "goto") (statement_identifier "LAB_00018527") (; ";")) (} "}")))

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

void __regparm3 function_1(type_1 *to,char *var_8,size_t var_2,type_2 type)

{
  int var_4;
  size_t var_16;
  size_t var_13;
  int iVar4;
  type_3 uVar5;
  type_1 *s;
  int var_1;
  type_4 wc;
  type_5 from_stat;
  
  var_4 = *(int *)(var_1 + 0x14);
  s = to;
  if (var_2 == 0) {
LAB_000186b5:
    var_3(&s_accum,(char *)s,(size_t)var_8);
LAB_000185d0:
    if (var_4 == *(int *)(var_1 + 0x14)) {
      return;
    }
                    /* WARNING: Subroutine does not return */
    var_5();
  }
  if (s_accum.alloc - s_accum.var_2 < (uint)(var_6 * (int)var_8)) {
    var_7(&s_accum,s_accum.var_2 + var_6 * (int)var_8);
  }
  from_stat.__count = s_accum.mbstate.__count;
  from_stat.__value = s_accum.mbstate.__value;
LAB_00018527:
  s = to;
  if (var_8 != (char *)0x0) {
    do {
      if (var_6 == 1) {
        wc = var_9((uint)*(type_6 *)&s->text);
        s = (type_1 *)((int)&s->text + 1);
        var_8 = var_8 + -1;
        if ((var_2 & 0xc) != 0) goto LAB_00018565;
LAB_00018633:
        to = s;
        if ((var_2 & 1) == 0) {
          wc = var_10(wc);
        }
        else {
          wc = var_11(wc);
        }
      }
      else {
        var_13 = var_12(&wc,(char *)s,(size_t)var_8,&from_stat);
        if (var_13 == 0xffffffff) {
          var_2 = var_2 & 0xfffffff3;
          if (var_2 == 0) goto LAB_000186b5;
          to = (type_1 *)((int)&s->text + 1);
          var_3(&s_accum,(char *)s,1);
          var_8 = var_8 + -1;
          s_accum.mbstate.__count = 0;
          s_accum.mbstate.__value.__wch = 0;
          goto LAB_00018527;
        }
        if ((var_13 == 0) || (var_13 == 0xfffffffe)) goto LAB_000186b5;
        s = (type_1 *)((int)&s->text + var_13);
        var_8 = var_8 + -var_13;
        if ((var_2 & 0xc) == 0) goto LAB_00018633;
LAB_00018565:
        if ((var_2 & 4) == 0) {
          wc = var_10(wc);
        }
        else {
          wc = var_11(wc);
        }
        var_2 = var_2 & 0xfffffff3;
        to = s;
        if (var_2 == 0) {
          if (var_6 == 1) {
            iVar4 = var_14(wc);
            s_accum.active[s_accum.var_2] = (char)iVar4;
            s_accum.var_2 = s_accum.var_2 + 1;
          }
          else {
            var_16 = var_15(s_accum.active + s_accum.var_2,wc,(type_5 *)&s_accum.mbstate);
            s_accum.var_2 = s_accum.var_2 + var_16;
            if (0xfffffffd < var_16) goto LAB_00018752;
          }
          goto LAB_000186b5;
        }
      }
      if (var_6 == 1) goto LAB_00018658;
      var_16 = var_15(s_accum.active + s_accum.var_2,wc,(type_5 *)&s_accum.mbstate);
      s_accum.var_2 = s_accum.var_2 + var_16;
      if (0xfffffffd < var_16) {
LAB_00018752:
        uVar5 = var_17(0,"case conversion produced an invalid character",5);
        var_18(*(type_3 *)PTR_stderr_00038fc0,1,uVar5);
                    /* WARNING: Subroutine does not return */
        var_19();
      }
      s = to;
      if (var_8 == (char *)0x0) break;
    } while( true );
  }
  goto LAB_000185d0;
LAB_00018658:
  iVar4 = var_14(wc);
  s_accum.active[s_accum.var_2] = (char)iVar4;
  s_accum.var_2 = s_accum.var_2 + 1;
  goto LAB_00018527;
}


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

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

void __regparm3 MASKED(byte *param_1,int param_2,uint param_3)

{
  size_t sVar1;
  int iVar2;
  undefined4 uVar3;
  int in_GS_OFFSET;
  wchar_t local_2c;
  undefined4 local_28;
  undefined4 local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x184bd;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_3 == 0) {
LAB_000186b5:
    FUN_000182b0();
LAB_000185d0:
    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
      return;
    }
                    /* WARNING: Subroutine does not return */
    FUN_0002c430();
  }
  if ((uint)(DAT_000393cc - DAT_000393c8) < (uint)(DAT_000396c4 * param_2)) {
    FUN_00017b60();
  }
  local_28 = DAT_000393d4;
  local_24 = DAT_000393d8;
LAB_00018527:
  if (param_2 != 0) {
    do {
      if (DAT_000396c4 == 1) {
        local_2c = btowc((uint)*param_1);
        param_1 = param_1 + 1;
        param_2 = param_2 + -1;
        if ((param_3 & 0xc) != 0) goto LAB_00018565;
LAB_00018633:
        if ((param_3 & 1) == 0) {
          local_2c = towlower(local_2c);
        }
        else {
          local_2c = towupper(local_2c);
        }
      }
      else {
        iVar2 = FUN_0002b6f0(&local_2c,param_1,param_2,&local_28);
        if (iVar2 == -1) {
          param_3 = param_3 & 0xfffffff3;
          if (param_3 == 0) goto LAB_000186b5;
          param_1 = param_1 + 1;
          FUN_000182b0();
          param_2 = param_2 + -1;
          DAT_000393d4 = 0;
          DAT_000393d8 = 0;
          goto LAB_00018527;
        }
        if ((iVar2 == 0) || (iVar2 == -2)) goto LAB_000186b5;
        param_1 = param_1 + iVar2;
        param_2 = param_2 - iVar2;
        if ((param_3 & 0xc) == 0) goto LAB_00018633;
LAB_00018565:
        if ((param_3 & 4) == 0) {
          local_2c = towlower(local_2c);
        }
        else {
          local_2c = towupper(local_2c);
        }
        param_3 = param_3 & 0xfffffff3;
        if (param_3 == 0) {
          if (DAT_000396c4 == 1) {
            iVar2 = wctob(local_2c);
            *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;
            DAT_000393c8 = DAT_000393c8 + 1;
          }
          else {
            sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,
                            (mbstate_t *)&DAT_000393d4);
            DAT_000393c8 = DAT_000393c8 + sVar1;
            if (0xfffffffd < sVar1) goto LAB_00018752;
          }
          goto LAB_000186b5;
        }
      }
      if (DAT_000396c4 == 1) goto LAB_00018658;
      sVar1 = wcrtomb((char *)(DAT_000393c8 + DAT_000393c4),local_2c,(mbstate_t *)&DAT_000393d4);
      DAT_000393c8 = DAT_000393c8 + sVar1;
      if (0xfffffffd < sVar1) {
LAB_00018752:
        uVar3 = dcgettext(0,"case conversion produced an invalid character",5);
        __fprintf_chk(*(undefined4 *)PTR_stderr_00038fc0,1,uVar3);
                    /* WARNING: Subroutine does not return */
        abort();
      }
      if (param_2 == 0) break;
    } while( true );
  }
  goto LAB_000185d0;
LAB_00018658:
  iVar2 = wctob(local_2c);
  *(char *)(DAT_000393c4 + DAT_000393c8) = (char)iVar2;
  DAT_000393c8 = DAT_000393c8 + 1;
  goto LAB_00018527;
}

