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

int case_folded_counterparts(wint_t c,wchar_t *folded)

{
  wchar_t __wc;
  wchar_t __wc_00;
  wchar_t wVar1;
  wchar_t wVar2;
  int iVar3;
  short *psVar4;
  uint uVar5;
  uint local_20;
  
  __wc = towupper(c);
  __wc_00 = towlower(__wc);
  if (c == __wc) {
    uVar5 = 1;
    iVar3 = 0;
  }
  else {
    uVar5 = 2;
    iVar3 = 4;
    *folded = __wc;
  }
  local_20 = (uint)(c != __wc);
  if ((__wc != __wc_00) && (c != __wc_00)) {
    wVar1 = towupper(__wc_00);
    if (wVar1 == __wc) {
      *(wchar_t *)((int)folded + iVar3) = __wc_00;
      local_20 = uVar5;
    }
  }
  psVar4 = lonesome_lower;
  do {
    wVar1 = (wchar_t)*psVar4;
    if ((__wc_00 != wVar1 && __wc != wVar1) && (c != wVar1)) {
      wVar2 = towupper(wVar1);
      if (wVar2 == __wc) {
        folded[local_20] = wVar1;
        local_20 = local_20 + 1;
      }
    }
    psVar4 = psVar4 + 1;
  } while (psVar4 != (short *)&DAT_000b0d46);
  return local_20;
}



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

uint FUN_0008ee20(wint_t param_1,wint_t *param_2)

{
  wint_t __wc;
  wint_t __wc_00;
  wint_t wVar1;
  wint_t wVar2;
  int iVar3;
  short *psVar4;
  uint uVar5;
  uint local_20;
  
  __wc = towupper(param_1);
  __wc_00 = towlower(__wc);
  if (param_1 == __wc) {
    uVar5 = 1;
    iVar3 = 0;
  }
  else {
    uVar5 = 2;
    iVar3 = 4;
    *param_2 = __wc;
  }
  local_20 = (uint)(param_1 != __wc);
  if ((__wc != __wc_00) && (param_1 != __wc_00)) {
    wVar1 = towupper(__wc_00);
    if (wVar1 == __wc) {
      *(wint_t *)((int)param_2 + iVar3) = __wc_00;
      local_20 = uVar5;
    }
  }
  psVar4 = &DAT_000b0d20;
  do {
    wVar1 = (wint_t)*psVar4;
    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {
      wVar2 = towupper(wVar1);
      if (wVar2 == __wc) {
        param_2[local_20] = wVar1;
        local_20 = local_20 + 1;
      }
    }
    psVar4 = psVar4 + 1;
  } while (psVar4 != (short *)&DAT_000b0d46);
  return local_20;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0001d907
ADD EAX,0x4debb
SUB ESP,0x28
MOV dword ptr [ESP + 0x14],EAX
PUSH dword ptr [ESP + 0x3c]
MOV EBX,EAX
CALL 0x000145d0
MOV EBP,EAX
MOV dword ptr [ESP],EAX
CALL 0x00013ec0
ADD ESP,0x10
MOV EDX,EAX
CMP dword ptr [ESP + 0x30],EBP
JZ 0x0008ef18
MOV EAX,dword ptr [ESP + 0x34]
MOV EDI,0x2
MOV ESI,0x4
MOV dword ptr [ESP + 0xc],0x1
MOV dword ptr [EAX],EBP
CMP EBP,EDX
JZ 0x0008ee9a
CMP dword ptr [ESP + 0x30],EDX
JZ 0x0008ee9a
SUB ESP,0xc
PUSH EDX
MOV EBX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x10],EDX
CALL 0x000145d0
ADD ESP,0x10
CMP EAX,EBP
MOV EDX,dword ptr [ESP]
JZ 0x0008ef2c
MOV EAX,dword ptr [ESP + 0x8]
LEA ESI,[EAX + 0xfffd403c]
LEA ECX,[ESI + 0x26]
MOV ESI,ESI
LEA EDI,[EDI]
MOVSX EDI,word ptr [ESI]
CMP EDX,EDI
SETNZ BL
CMP EBP,EDI
SETNZ AL
TEST BL,AL
JZ 0x0008ef00
CMP dword ptr [ESP + 0x30],EDI
JZ 0x0008ef00
MOV dword ptr [ESP + 0x4],ECX
MOV dword ptr [ESP],EDX
SUB ESP,0xc
PUSH EDI
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000145d0
ADD ESP,0x10
CMP EAX,EBP
MOV EDX,dword ptr [ESP]
MOV ECX,dword ptr [ESP + 0x4]
JNZ 0x0008ef00
MOV EAX,dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x34]
MOV dword ptr [EBX + EAX*0x4],EDI
ADD EAX,0x1
MOV dword ptr [ESP + 0xc],EAX
NOP
LEA ESI,[ESI]
ADD ESI,0x2
CMP ECX,ESI
JNZ 0x0008eeb0
MOV EAX,dword ptr [ESP + 0xc]
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,0x1
XOR ESI,ESI
MOV dword ptr [ESP + 0xc],0x0
JMP 0x0008ee71
MOV EAX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0xc],EDI
MOV dword ptr [EAX + ESI*0x1],EDX
JMP 0x0008ee9a
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nuint FUN_0008ee20(wint_t param_1,wint_t *param_2)\n\n{\n  wint_t __wc;\n  wint_t __wc_00;\n  wint_t wVar1;\n  wint_t wVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint local_20;\n  \n  __wc = towupper(param_1);\n  __wc_00 = towlower(__wc);\n  if (param_1 == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }\n  local_20 = (uint)(param_1 != __wc);\n  if ((__wc != __wc_00) && (param_1 != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }\n  psVar4 = &DAT_000b0d20;\n  do {\n    wVar1 = (wint_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);\n  return local_20;\n}\n\n" comment (function_definition "uint FUN_0008ee20(wint_t param_1,wint_t *param_2)\n\n{\n  wint_t __wc;\n  wint_t __wc_00;\n  wint_t wVar1;\n  wint_t wVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint local_20;\n  \n  __wc = towupper(param_1);\n  __wc_00 = towlower(__wc);\n  if (param_1 == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }\n  local_20 = (uint)(param_1 != __wc);\n  if ((__wc != __wc_00) && (param_1 != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }\n  psVar4 = &DAT_000b0d20;\n  do {\n    wVar1 = (wint_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);\n  return local_20;\n}" type_identifier (function_declarator "FUN_0008ee20(wint_t param_1,wint_t *param_2)" identifier (parameter_list "(wint_t param_1,wint_t *param_2)" ( (parameter_declaration "wint_t param_1" type_identifier identifier) , (parameter_declaration "wint_t *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  wint_t __wc;\n  wint_t __wc_00;\n  wint_t wVar1;\n  wint_t wVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint local_20;\n  \n  __wc = towupper(param_1);\n  __wc_00 = towlower(__wc);\n  if (param_1 == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }\n  local_20 = (uint)(param_1 != __wc);\n  if ((__wc != __wc_00) && (param_1 != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }\n  psVar4 = &DAT_000b0d20;\n  do {\n    wVar1 = (wint_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);\n  return local_20;\n}" { (declaration "wint_t __wc;" type_identifier identifier ;) (declaration "wint_t __wc_00;" type_identifier identifier ;) (declaration "wint_t wVar1;" type_identifier identifier ;) (declaration "wint_t wVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "short *psVar4;" (sized_type_specifier "short" short) (pointer_declarator "*psVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (expression_statement "__wc = towupper(param_1);" (assignment_expression "__wc = towupper(param_1)" identifier = (call_expression "towupper(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "__wc_00 = towlower(__wc);" (assignment_expression "__wc_00 = towlower(__wc)" identifier = (call_expression "towlower(__wc)" identifier (argument_list "(__wc)" ( identifier )))) ;) (if_statement "if (param_1 == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }" if (parenthesized_expression "(param_1 == __wc)" ( (binary_expression "param_1 == __wc" identifier == identifier) )) (compound_statement "{\n    uVar5 = 1;\n    iVar3 = 0;\n  }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }" else (compound_statement "{\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }" { (expression_statement "uVar5 = 2;" (assignment_expression "uVar5 = 2" identifier = number_literal) ;) (expression_statement "iVar3 = 4;" (assignment_expression "iVar3 = 4" identifier = number_literal) ;) (expression_statement "*param_2 = __wc;" (assignment_expression "*param_2 = __wc" (pointer_expression "*param_2" * identifier) = identifier) ;) }))) (expression_statement "local_20 = (uint)(param_1 != __wc);" (assignment_expression "local_20 = (uint)(param_1 != __wc)" identifier = (call_expression "(uint)(param_1 != __wc)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 != __wc)" ( (binary_expression "param_1 != __wc" identifier != identifier) )))) ;) (if_statement "if ((__wc != __wc_00) && (param_1 != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }" if (parenthesized_expression "((__wc != __wc_00) && (param_1 != __wc_00))" ( (binary_expression "(__wc != __wc_00) && (param_1 != __wc_00)" (parenthesized_expression "(__wc != __wc_00)" ( (binary_expression "__wc != __wc_00" identifier != identifier) )) && (parenthesized_expression "(param_1 != __wc_00)" ( (binary_expression "param_1 != __wc_00" identifier != identifier) ))) )) (compound_statement "{\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }" { (expression_statement "wVar1 = towupper(__wc_00);" (assignment_expression "wVar1 = towupper(__wc_00)" identifier = (call_expression "towupper(__wc_00)" identifier (argument_list "(__wc_00)" ( identifier )))) ;) (if_statement "if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }" if (parenthesized_expression "(wVar1 == __wc)" ( (binary_expression "wVar1 == __wc" identifier == identifier) )) (compound_statement "{\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }" { (expression_statement "*(wint_t *)((int)param_2 + iVar3) = __wc_00;" (assignment_expression "*(wint_t *)((int)param_2 + iVar3) = __wc_00" (pointer_expression "*(wint_t *)((int)param_2 + iVar3)" * (cast_expression "(wint_t *)((int)param_2 + iVar3)" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + iVar3)" ( (binary_expression "(int)param_2 + iVar3" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "local_20 = uVar5;" (assignment_expression "local_20 = uVar5" identifier = identifier) ;) })) })) (expression_statement "psVar4 = &DAT_000b0d20;" (assignment_expression "psVar4 = &DAT_000b0d20" identifier = (pointer_expression "&DAT_000b0d20" & identifier)) ;) (do_statement "do {\n    wVar1 = (wint_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);" do (compound_statement "{\n    wVar1 = (wint_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  }" { (expression_statement "wVar1 = (wint_t)*psVar4;" (assignment_expression "wVar1 = (wint_t)*psVar4" identifier = (binary_expression "(wint_t)*psVar4" (parenthesized_expression "(wint_t)" ( identifier )) * identifier)) ;) (if_statement "if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }" if (parenthesized_expression "((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1))" ( (binary_expression "(__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)" (parenthesized_expression "(__wc_00 != wVar1 && __wc != wVar1)" ( (binary_expression "__wc_00 != wVar1 && __wc != wVar1" (binary_expression "__wc_00 != wVar1" identifier != identifier) && (binary_expression "__wc != wVar1" identifier != identifier)) )) && (parenthesized_expression "(param_1 != wVar1)" ( (binary_expression "param_1 != wVar1" identifier != identifier) ))) )) (compound_statement "{\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }" { (expression_statement "wVar2 = towupper(wVar1);" (assignment_expression "wVar2 = towupper(wVar1)" identifier = (call_expression "towupper(wVar1)" identifier (argument_list "(wVar1)" ( identifier )))) ;) (if_statement "if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }" if (parenthesized_expression "(wVar2 == __wc)" ( (binary_expression "wVar2 == __wc" identifier == identifier) )) (compound_statement "{\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }" { (expression_statement "param_2[local_20] = wVar1;" (assignment_expression "param_2[local_20] = wVar1" (subscript_expression "param_2[local_20]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) })) })) (expression_statement "psVar4 = psVar4 + 1;" (assignment_expression "psVar4 = psVar4 + 1" identifier = (binary_expression "psVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(psVar4 != (short *)&DAT_000b0d46)" ( (binary_expression "psVar4 != (short *)&DAT_000b0d46" identifier != (cast_expression "(short *)&DAT_000b0d46" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000b0d46" & identifier))) )) ;) (return_statement "return local_20;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Unknown calling convention */\n\nint case_folded_counterparts(wint_t c,wchar_t *folded)\n\n{\n  wchar_t __wc;\n  wchar_t __wc_00;\n  wchar_t wVar1;\n  wchar_t wVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint local_20;\n  \n  __wc = towupper(c);\n  __wc_00 = towlower(__wc);\n  if (c == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *folded = __wc;\n  }\n  local_20 = (uint)(c != __wc);\n  if ((__wc != __wc_00) && (c != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wchar_t *)((int)folded + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }\n  psVar4 = lonesome_lower;\n  do {\n    wVar1 = (wchar_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (c != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        folded[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);\n  return local_20;\n}\n\n" comment comment (function_definition "int case_folded_counterparts(wint_t c,wchar_t *folded)\n\n{\n  wchar_t __wc;\n  wchar_t __wc_00;\n  wchar_t wVar1;\n  wchar_t wVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint local_20;\n  \n  __wc = towupper(c);\n  __wc_00 = towlower(__wc);\n  if (c == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *folded = __wc;\n  }\n  local_20 = (uint)(c != __wc);\n  if ((__wc != __wc_00) && (c != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wchar_t *)((int)folded + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }\n  psVar4 = lonesome_lower;\n  do {\n    wVar1 = (wchar_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (c != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        folded[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);\n  return local_20;\n}" primitive_type (function_declarator "case_folded_counterparts(wint_t c,wchar_t *folded)" identifier (parameter_list "(wint_t c,wchar_t *folded)" ( (parameter_declaration "wint_t c" type_identifier identifier) , (parameter_declaration "wchar_t *folded" type_identifier (pointer_declarator "*folded" * identifier)) ))) (compound_statement "{\n  wchar_t __wc;\n  wchar_t __wc_00;\n  wchar_t wVar1;\n  wchar_t wVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint local_20;\n  \n  __wc = towupper(c);\n  __wc_00 = towlower(__wc);\n  if (c == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *folded = __wc;\n  }\n  local_20 = (uint)(c != __wc);\n  if ((__wc != __wc_00) && (c != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wchar_t *)((int)folded + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }\n  psVar4 = lonesome_lower;\n  do {\n    wVar1 = (wchar_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (c != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        folded[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);\n  return local_20;\n}" { (declaration "wchar_t __wc;" type_identifier identifier ;) (declaration "wchar_t __wc_00;" type_identifier identifier ;) (declaration "wchar_t wVar1;" type_identifier identifier ;) (declaration "wchar_t wVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "short *psVar4;" (sized_type_specifier "short" short) (pointer_declarator "*psVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (expression_statement "__wc = towupper(c);" (assignment_expression "__wc = towupper(c)" identifier = (call_expression "towupper(c)" identifier (argument_list "(c)" ( identifier )))) ;) (expression_statement "__wc_00 = towlower(__wc);" (assignment_expression "__wc_00 = towlower(__wc)" identifier = (call_expression "towlower(__wc)" identifier (argument_list "(__wc)" ( identifier )))) ;) (if_statement "if (c == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *folded = __wc;\n  }" if (parenthesized_expression "(c == __wc)" ( (binary_expression "c == __wc" identifier == identifier) )) (compound_statement "{\n    uVar5 = 1;\n    iVar3 = 0;\n  }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *folded = __wc;\n  }" else (compound_statement "{\n    uVar5 = 2;\n    iVar3 = 4;\n    *folded = __wc;\n  }" { (expression_statement "uVar5 = 2;" (assignment_expression "uVar5 = 2" identifier = number_literal) ;) (expression_statement "iVar3 = 4;" (assignment_expression "iVar3 = 4" identifier = number_literal) ;) (expression_statement "*folded = __wc;" (assignment_expression "*folded = __wc" (pointer_expression "*folded" * identifier) = identifier) ;) }))) (expression_statement "local_20 = (uint)(c != __wc);" (assignment_expression "local_20 = (uint)(c != __wc)" identifier = (call_expression "(uint)(c != __wc)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(c != __wc)" ( (binary_expression "c != __wc" identifier != identifier) )))) ;) (if_statement "if ((__wc != __wc_00) && (c != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wchar_t *)((int)folded + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }" if (parenthesized_expression "((__wc != __wc_00) && (c != __wc_00))" ( (binary_expression "(__wc != __wc_00) && (c != __wc_00)" (parenthesized_expression "(__wc != __wc_00)" ( (binary_expression "__wc != __wc_00" identifier != identifier) )) && (parenthesized_expression "(c != __wc_00)" ( (binary_expression "c != __wc_00" identifier != identifier) ))) )) (compound_statement "{\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wchar_t *)((int)folded + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }" { (expression_statement "wVar1 = towupper(__wc_00);" (assignment_expression "wVar1 = towupper(__wc_00)" identifier = (call_expression "towupper(__wc_00)" identifier (argument_list "(__wc_00)" ( identifier )))) ;) (if_statement "if (wVar1 == __wc) {\n      *(wchar_t *)((int)folded + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }" if (parenthesized_expression "(wVar1 == __wc)" ( (binary_expression "wVar1 == __wc" identifier == identifier) )) (compound_statement "{\n      *(wchar_t *)((int)folded + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }" { (expression_statement "*(wchar_t *)((int)folded + iVar3) = __wc_00;" (assignment_expression "*(wchar_t *)((int)folded + iVar3) = __wc_00" (pointer_expression "*(wchar_t *)((int)folded + iVar3)" * (cast_expression "(wchar_t *)((int)folded + iVar3)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)folded + iVar3)" ( (binary_expression "(int)folded + iVar3" (cast_expression "(int)folded" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "local_20 = uVar5;" (assignment_expression "local_20 = uVar5" identifier = identifier) ;) })) })) (expression_statement "psVar4 = lonesome_lower;" (assignment_expression "psVar4 = lonesome_lower" identifier = identifier) ;) (do_statement "do {\n    wVar1 = (wchar_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (c != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        folded[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);" do (compound_statement "{\n    wVar1 = (wchar_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (c != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        folded[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  }" { (expression_statement "wVar1 = (wchar_t)*psVar4;" (assignment_expression "wVar1 = (wchar_t)*psVar4" identifier = (binary_expression "(wchar_t)*psVar4" (parenthesized_expression "(wchar_t)" ( identifier )) * identifier)) ;) (if_statement "if ((__wc_00 != wVar1 && __wc != wVar1) && (c != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        folded[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }" if (parenthesized_expression "((__wc_00 != wVar1 && __wc != wVar1) && (c != wVar1))" ( (binary_expression "(__wc_00 != wVar1 && __wc != wVar1) && (c != wVar1)" (parenthesized_expression "(__wc_00 != wVar1 && __wc != wVar1)" ( (binary_expression "__wc_00 != wVar1 && __wc != wVar1" (binary_expression "__wc_00 != wVar1" identifier != identifier) && (binary_expression "__wc != wVar1" identifier != identifier)) )) && (parenthesized_expression "(c != wVar1)" ( (binary_expression "c != wVar1" identifier != identifier) ))) )) (compound_statement "{\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        folded[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }" { (expression_statement "wVar2 = towupper(wVar1);" (assignment_expression "wVar2 = towupper(wVar1)" identifier = (call_expression "towupper(wVar1)" identifier (argument_list "(wVar1)" ( identifier )))) ;) (if_statement "if (wVar2 == __wc) {\n        folded[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }" if (parenthesized_expression "(wVar2 == __wc)" ( (binary_expression "wVar2 == __wc" identifier == identifier) )) (compound_statement "{\n        folded[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }" { (expression_statement "folded[local_20] = wVar1;" (assignment_expression "folded[local_20] = wVar1" (subscript_expression "folded[local_20]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) })) })) (expression_statement "psVar4 = psVar4 + 1;" (assignment_expression "psVar4 = psVar4 + 1" identifier = (binary_expression "psVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(psVar4 != (short *)&DAT_000b0d46)" ( (binary_expression "psVar4 != (short *)&DAT_000b0d46" identifier != (cast_expression "(short *)&DAT_000b0d46" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000b0d46" & identifier))) )) ;) (return_statement "return local_20;" return identifier ;) })))
(translation_unit "uint FUN_0008ee20(wint_t param_1,wint_t *param_2)\n\n{\n  wint_t __wc;\n  wint_t __wc_00;\n  wint_t wVar1;\n  wint_t wVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint local_20;\n  \n  __wc = towupper(param_1);\n  __wc_00 = towlower(__wc);\n  if (param_1 == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }\n  local_20 = (uint)(param_1 != __wc);\n  if ((__wc != __wc_00) && (param_1 != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }\n  psVar4 = &DAT_000b0d20;\n  do {\n    wVar1 = (wint_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);\n  return local_20;\n}\n\n" (function_definition "uint FUN_0008ee20(wint_t param_1,wint_t *param_2)\n\n{\n  wint_t __wc;\n  wint_t __wc_00;\n  wint_t wVar1;\n  wint_t wVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint local_20;\n  \n  __wc = towupper(param_1);\n  __wc_00 = towlower(__wc);\n  if (param_1 == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }\n  local_20 = (uint)(param_1 != __wc);\n  if ((__wc != __wc_00) && (param_1 != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }\n  psVar4 = &DAT_000b0d20;\n  do {\n    wVar1 = (wint_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);\n  return local_20;\n}" type_identifier (function_declarator "FUN_0008ee20(wint_t param_1,wint_t *param_2)" identifier (parameter_list "(wint_t param_1,wint_t *param_2)" ( (parameter_declaration "wint_t param_1" type_identifier identifier) , (parameter_declaration "wint_t *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  wint_t __wc;\n  wint_t __wc_00;\n  wint_t wVar1;\n  wint_t wVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint local_20;\n  \n  __wc = towupper(param_1);\n  __wc_00 = towlower(__wc);\n  if (param_1 == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }\n  local_20 = (uint)(param_1 != __wc);\n  if ((__wc != __wc_00) && (param_1 != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }\n  psVar4 = &DAT_000b0d20;\n  do {\n    wVar1 = (wint_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);\n  return local_20;\n}" { (declaration "wint_t __wc;" type_identifier identifier ;) (declaration "wint_t __wc_00;" type_identifier identifier ;) (declaration "wint_t wVar1;" type_identifier identifier ;) (declaration "wint_t wVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "short *psVar4;" (sized_type_specifier "short" short) (pointer_declarator "*psVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (expression_statement "__wc = towupper(param_1);" (assignment_expression "__wc = towupper(param_1)" identifier = (call_expression "towupper(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "__wc_00 = towlower(__wc);" (assignment_expression "__wc_00 = towlower(__wc)" identifier = (call_expression "towlower(__wc)" identifier (argument_list "(__wc)" ( identifier )))) ;) (if_statement "if (param_1 == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }" if (parenthesized_expression "(param_1 == __wc)" ( (binary_expression "param_1 == __wc" identifier == identifier) )) (compound_statement "{\n    uVar5 = 1;\n    iVar3 = 0;\n  }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }" else (compound_statement "{\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }" { (expression_statement "uVar5 = 2;" (assignment_expression "uVar5 = 2" identifier = number_literal) ;) (expression_statement "iVar3 = 4;" (assignment_expression "iVar3 = 4" identifier = number_literal) ;) (expression_statement "*param_2 = __wc;" (assignment_expression "*param_2 = __wc" (pointer_expression "*param_2" * identifier) = identifier) ;) }))) (expression_statement "local_20 = (uint)(param_1 != __wc);" (assignment_expression "local_20 = (uint)(param_1 != __wc)" identifier = (call_expression "(uint)(param_1 != __wc)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 != __wc)" ( (binary_expression "param_1 != __wc" identifier != identifier) )))) ;) (if_statement "if ((__wc != __wc_00) && (param_1 != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }" if (parenthesized_expression "((__wc != __wc_00) && (param_1 != __wc_00))" ( (binary_expression "(__wc != __wc_00) && (param_1 != __wc_00)" (parenthesized_expression "(__wc != __wc_00)" ( (binary_expression "__wc != __wc_00" identifier != identifier) )) && (parenthesized_expression "(param_1 != __wc_00)" ( (binary_expression "param_1 != __wc_00" identifier != identifier) ))) )) (compound_statement "{\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }" { (expression_statement "wVar1 = towupper(__wc_00);" (assignment_expression "wVar1 = towupper(__wc_00)" identifier = (call_expression "towupper(__wc_00)" identifier (argument_list "(__wc_00)" ( identifier )))) ;) (if_statement "if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }" if (parenthesized_expression "(wVar1 == __wc)" ( (binary_expression "wVar1 == __wc" identifier == identifier) )) (compound_statement "{\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }" { (expression_statement "*(wint_t *)((int)param_2 + iVar3) = __wc_00;" (assignment_expression "*(wint_t *)((int)param_2 + iVar3) = __wc_00" (pointer_expression "*(wint_t *)((int)param_2 + iVar3)" * (cast_expression "(wint_t *)((int)param_2 + iVar3)" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + iVar3)" ( (binary_expression "(int)param_2 + iVar3" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "local_20 = uVar5;" (assignment_expression "local_20 = uVar5" identifier = identifier) ;) })) })) (expression_statement "psVar4 = &DAT_000b0d20;" (assignment_expression "psVar4 = &DAT_000b0d20" identifier = (pointer_expression "&DAT_000b0d20" & identifier)) ;) (do_statement "do {\n    wVar1 = (wint_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);" do (compound_statement "{\n    wVar1 = (wint_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  }" { (expression_statement "wVar1 = (wint_t)*psVar4;" (assignment_expression "wVar1 = (wint_t)*psVar4" identifier = (binary_expression "(wint_t)*psVar4" (parenthesized_expression "(wint_t)" ( identifier )) * identifier)) ;) (if_statement "if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }" if (parenthesized_expression "((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1))" ( (binary_expression "(__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)" (parenthesized_expression "(__wc_00 != wVar1 && __wc != wVar1)" ( (binary_expression "__wc_00 != wVar1 && __wc != wVar1" (binary_expression "__wc_00 != wVar1" identifier != identifier) && (binary_expression "__wc != wVar1" identifier != identifier)) )) && (parenthesized_expression "(param_1 != wVar1)" ( (binary_expression "param_1 != wVar1" identifier != identifier) ))) )) (compound_statement "{\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }" { (expression_statement "wVar2 = towupper(wVar1);" (assignment_expression "wVar2 = towupper(wVar1)" identifier = (call_expression "towupper(wVar1)" identifier (argument_list "(wVar1)" ( identifier )))) ;) (if_statement "if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }" if (parenthesized_expression "(wVar2 == __wc)" ( (binary_expression "wVar2 == __wc" identifier == identifier) )) (compound_statement "{\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }" { (expression_statement "param_2[local_20] = wVar1;" (assignment_expression "param_2[local_20] = wVar1" (subscript_expression "param_2[local_20]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) })) })) (expression_statement "psVar4 = psVar4 + 1;" (assignment_expression "psVar4 = psVar4 + 1" identifier = (binary_expression "psVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(psVar4 != (short *)&DAT_000b0d46)" ( (binary_expression "psVar4 != (short *)&DAT_000b0d46" identifier != (cast_expression "(short *)&DAT_000b0d46" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000b0d46" & identifier))) )) ;) (return_statement "return local_20;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) && (binary_expression IDENT != IDENT)) )) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) )) ;) (return_statement return IDENT ;) })))
(function_definition "uint FUN_0008ee20(wint_t param_1,wint_t *param_2)\n\n{\n  wint_t __wc;\n  wint_t __wc_00;\n  wint_t wVar1;\n  wint_t wVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint local_20;\n  \n  __wc = towupper(param_1);\n  __wc_00 = towlower(__wc);\n  if (param_1 == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }\n  local_20 = (uint)(param_1 != __wc);\n  if ((__wc != __wc_00) && (param_1 != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }\n  psVar4 = &DAT_000b0d20;\n  do {\n    wVar1 = (wint_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);\n  return local_20;\n}" (type_identifier "uint") (function_declarator "FUN_0008ee20(wint_t param_1,wint_t *param_2)" (identifier "FUN_0008ee20") (parameter_list "(wint_t param_1,wint_t *param_2)" (( "(") (parameter_declaration "wint_t param_1" (type_identifier "wint_t") (identifier "param_1")) (, ",") (parameter_declaration "wint_t *param_2" (type_identifier "wint_t") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  wint_t __wc;\n  wint_t __wc_00;\n  wint_t wVar1;\n  wint_t wVar2;\n  int iVar3;\n  short *psVar4;\n  uint uVar5;\n  uint local_20;\n  \n  __wc = towupper(param_1);\n  __wc_00 = towlower(__wc);\n  if (param_1 == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }\n  local_20 = (uint)(param_1 != __wc);\n  if ((__wc != __wc_00) && (param_1 != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }\n  psVar4 = &DAT_000b0d20;\n  do {\n    wVar1 = (wint_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);\n  return local_20;\n}" ({ "{") (declaration "wint_t __wc;" (type_identifier "wint_t") (identifier "__wc") (; ";")) (declaration "wint_t __wc_00;" (type_identifier "wint_t") (identifier "__wc_00") (; ";")) (declaration "wint_t wVar1;" (type_identifier "wint_t") (identifier "wVar1") (; ";")) (declaration "wint_t wVar2;" (type_identifier "wint_t") (identifier "wVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "short *psVar4;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar4" (* "*") (identifier "psVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint local_20;" (type_identifier "uint") (identifier "local_20") (; ";")) (expression_statement "__wc = towupper(param_1);" (assignment_expression "__wc = towupper(param_1)" (identifier "__wc") (= "=") (call_expression "towupper(param_1)" (identifier "towupper") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "__wc_00 = towlower(__wc);" (assignment_expression "__wc_00 = towlower(__wc)" (identifier "__wc_00") (= "=") (call_expression "towlower(__wc)" (identifier "towlower") (argument_list "(__wc)" (( "(") (identifier "__wc") () ")")))) (; ";")) (if_statement "if (param_1 == __wc) {\n    uVar5 = 1;\n    iVar3 = 0;\n  }\n  else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }" (if "if") (parenthesized_expression "(param_1 == __wc)" (( "(") (binary_expression "param_1 == __wc" (identifier "param_1") (== "==") (identifier "__wc")) () ")")) (compound_statement "{\n    uVar5 = 1;\n    iVar3 = 0;\n  }" ({ "{") (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }" (else "else") (compound_statement "{\n    uVar5 = 2;\n    iVar3 = 4;\n    *param_2 = __wc;\n  }" ({ "{") (expression_statement "uVar5 = 2;" (assignment_expression "uVar5 = 2" (identifier "uVar5") (= "=") (number_literal "2")) (; ";")) (expression_statement "iVar3 = 4;" (assignment_expression "iVar3 = 4" (identifier "iVar3") (= "=") (number_literal "4")) (; ";")) (expression_statement "*param_2 = __wc;" (assignment_expression "*param_2 = __wc" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "__wc")) (; ";")) (} "}")))) (expression_statement "local_20 = (uint)(param_1 != __wc);" (assignment_expression "local_20 = (uint)(param_1 != __wc)" (identifier "local_20") (= "=") (call_expression "(uint)(param_1 != __wc)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1 != __wc)" (( "(") (binary_expression "param_1 != __wc" (identifier "param_1") (!= "!=") (identifier "__wc")) () ")")))) (; ";")) (if_statement "if ((__wc != __wc_00) && (param_1 != __wc_00)) {\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }" (if "if") (parenthesized_expression "((__wc != __wc_00) && (param_1 != __wc_00))" (( "(") (binary_expression "(__wc != __wc_00) && (param_1 != __wc_00)" (parenthesized_expression "(__wc != __wc_00)" (( "(") (binary_expression "__wc != __wc_00" (identifier "__wc") (!= "!=") (identifier "__wc_00")) () ")")) (&& "&&") (parenthesized_expression "(param_1 != __wc_00)" (( "(") (binary_expression "param_1 != __wc_00" (identifier "param_1") (!= "!=") (identifier "__wc_00")) () ")"))) () ")")) (compound_statement "{\n    wVar1 = towupper(__wc_00);\n    if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }\n  }" ({ "{") (expression_statement "wVar1 = towupper(__wc_00);" (assignment_expression "wVar1 = towupper(__wc_00)" (identifier "wVar1") (= "=") (call_expression "towupper(__wc_00)" (identifier "towupper") (argument_list "(__wc_00)" (( "(") (identifier "__wc_00") () ")")))) (; ";")) (if_statement "if (wVar1 == __wc) {\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }" (if "if") (parenthesized_expression "(wVar1 == __wc)" (( "(") (binary_expression "wVar1 == __wc" (identifier "wVar1") (== "==") (identifier "__wc")) () ")")) (compound_statement "{\n      *(wint_t *)((int)param_2 + iVar3) = __wc_00;\n      local_20 = uVar5;\n    }" ({ "{") (expression_statement "*(wint_t *)((int)param_2 + iVar3) = __wc_00;" (assignment_expression "*(wint_t *)((int)param_2 + iVar3) = __wc_00" (pointer_expression "*(wint_t *)((int)param_2 + iVar3)" (* "*") (cast_expression "(wint_t *)((int)param_2 + iVar3)" (( "(") (type_descriptor "wint_t *" (type_identifier "wint_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + iVar3)" (( "(") (binary_expression "(int)param_2 + iVar3" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (identifier "iVar3")) () ")")))) (= "=") (identifier "__wc_00")) (; ";")) (expression_statement "local_20 = uVar5;" (assignment_expression "local_20 = uVar5" (identifier "local_20") (= "=") (identifier "uVar5")) (; ";")) (} "}"))) (} "}"))) (expression_statement "psVar4 = &DAT_000b0d20;" (assignment_expression "psVar4 = &DAT_000b0d20" (identifier "psVar4") (= "=") (pointer_expression "&DAT_000b0d20" (& "&") (identifier "DAT_000b0d20"))) (; ";")) (do_statement "do {\n    wVar1 = (wint_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  } while (psVar4 != (short *)&DAT_000b0d46);" (do "do") (compound_statement "{\n    wVar1 = (wint_t)*psVar4;\n    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }\n    psVar4 = psVar4 + 1;\n  }" ({ "{") (expression_statement "wVar1 = (wint_t)*psVar4;" (assignment_expression "wVar1 = (wint_t)*psVar4" (identifier "wVar1") (= "=") (binary_expression "(wint_t)*psVar4" (parenthesized_expression "(wint_t)" (( "(") (identifier "wint_t") () ")")) (* "*") (identifier "psVar4"))) (; ";")) (if_statement "if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }" (if "if") (parenthesized_expression "((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1))" (( "(") (binary_expression "(__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)" (parenthesized_expression "(__wc_00 != wVar1 && __wc != wVar1)" (( "(") (binary_expression "__wc_00 != wVar1 && __wc != wVar1" (binary_expression "__wc_00 != wVar1" (identifier "__wc_00") (!= "!=") (identifier "wVar1")) (&& "&&") (binary_expression "__wc != wVar1" (identifier "__wc") (!= "!=") (identifier "wVar1"))) () ")")) (&& "&&") (parenthesized_expression "(param_1 != wVar1)" (( "(") (binary_expression "param_1 != wVar1" (identifier "param_1") (!= "!=") (identifier "wVar1")) () ")"))) () ")")) (compound_statement "{\n      wVar2 = towupper(wVar1);\n      if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }\n    }" ({ "{") (expression_statement "wVar2 = towupper(wVar1);" (assignment_expression "wVar2 = towupper(wVar1)" (identifier "wVar2") (= "=") (call_expression "towupper(wVar1)" (identifier "towupper") (argument_list "(wVar1)" (( "(") (identifier "wVar1") () ")")))) (; ";")) (if_statement "if (wVar2 == __wc) {\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }" (if "if") (parenthesized_expression "(wVar2 == __wc)" (( "(") (binary_expression "wVar2 == __wc" (identifier "wVar2") (== "==") (identifier "__wc")) () ")")) (compound_statement "{\n        param_2[local_20] = wVar1;\n        local_20 = local_20 + 1;\n      }" ({ "{") (expression_statement "param_2[local_20] = wVar1;" (assignment_expression "param_2[local_20] = wVar1" (subscript_expression "param_2[local_20]" (identifier "param_2") ([ "[") (identifier "local_20") (] "]")) (= "=") (identifier "wVar1")) (; ";")) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" (identifier "local_20") (= "=") (binary_expression "local_20 + 1" (identifier "local_20") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "psVar4 = psVar4 + 1;" (assignment_expression "psVar4 = psVar4 + 1" (identifier "psVar4") (= "=") (binary_expression "psVar4 + 1" (identifier "psVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(psVar4 != (short *)&DAT_000b0d46)" (( "(") (binary_expression "psVar4 != (short *)&DAT_000b0d46" (identifier "psVar4") (!= "!=") (cast_expression "(short *)&DAT_000b0d46" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_000b0d46" (& "&") (identifier "DAT_000b0d46")))) () ")")) (; ";")) (return_statement "return local_20;" (return "return") (identifier "local_20") (; ";")) (} "}")))

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

int function_1(type_1 var_3,type_2 *folded)

{
  type_2 var_4;
  type_2 var_5;
  type_2 var_6;
  type_2 var_9;
  int var_7;
  short *var_8;
  type_3 uVar5;
  type_3 var_10;
  
  var_4 = var_1(var_3);
  var_5 = var_2(var_4);
  if (var_3 == var_4) {
    uVar5 = 1;
    var_7 = 0;
  }
  else {
    uVar5 = 2;
    var_7 = 4;
    *folded = var_4;
  }
  var_10 = (type_3)(var_3 != var_4);
  if ((var_4 != var_5) && (var_3 != var_5)) {
    var_6 = var_1(var_5);
    if (var_6 == var_4) {
      *(type_2 *)((int)folded + var_7) = var_5;
      var_10 = uVar5;
    }
  }
  var_8 = lonesome_lower;
  do {
    var_6 = (type_2)*var_8;
    if ((var_5 != var_6 && var_4 != var_6) && (var_3 != var_6)) {
      var_9 = var_1(var_6);
      if (var_9 == var_4) {
        folded[var_10] = var_6;
        var_10 = var_10 + 1;
      }
    }
    var_8 = var_8 + 1;
  } while (var_8 != (short *)&DAT_000b0d46);
  return var_10;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (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))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) (return_statement (identifier)))))

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

uint MASKED(wint_t param_1,wint_t *param_2)

{
  wint_t __wc;
  wint_t __wc_00;
  wint_t wVar1;
  wint_t wVar2;
  int iVar3;
  short *psVar4;
  uint uVar5;
  uint local_20;
  
  __wc = towupper(param_1);
  __wc_00 = towlower(__wc);
  if (param_1 == __wc) {
    uVar5 = 1;
    iVar3 = 0;
  }
  else {
    uVar5 = 2;
    iVar3 = 4;
    *param_2 = __wc;
  }
  local_20 = (uint)(param_1 != __wc);
  if ((__wc != __wc_00) && (param_1 != __wc_00)) {
    wVar1 = towupper(__wc_00);
    if (wVar1 == __wc) {
      *(wint_t *)((int)param_2 + iVar3) = __wc_00;
      local_20 = uVar5;
    }
  }
  psVar4 = &DAT_000b0d20;
  do {
    wVar1 = (wint_t)*psVar4;
    if ((__wc_00 != wVar1 && __wc != wVar1) && (param_1 != wVar1)) {
      wVar2 = towupper(wVar1);
      if (wVar2 == __wc) {
        param_2[local_20] = wVar1;
        local_20 = local_20 + 1;
      }
    }
    psVar4 = psVar4 + 1;
  } while (psVar4 != (short *)&DAT_000b0d46);
  return local_20;
}

