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

size_t __regparm3 critical_factorization(uchar *needle,size_t needle_len,size_t *period)

{
  ushort *puVar1;
  byte bVar2;
  ushort **ppuVar3;
  __int32_t **pp_Var4;
  uint uVar5;
  byte bVar6;
  uint uVar7;
  size_t sVar8;
  uint local_3c;
  uint local_34;
  uint local_30;
  size_t local_2c;
  size_t local_28;
  
  sVar8 = 1;
  local_2c = 1;
  local_3c = 0;
  local_34 = 0xffffffff;
  while (uVar5 = sVar8 + local_3c, sVar8 + local_3c < needle_len) {
    while( true ) {
      uVar7 = uVar5;
      ppuVar3 = __ctype_b_loc();
      puVar1 = *ppuVar3;
      bVar6 = needle[uVar7];
      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {
        pp_Var4 = __ctype_tolower_loc();
        bVar6 = *(byte *)(*pp_Var4 + bVar6);
      }
      bVar2 = needle[sVar8 + local_34];
      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {
        pp_Var4 = __ctype_tolower_loc();
        bVar2 = *(byte *)(*pp_Var4 + bVar2);
      }
      if (bVar2 <= bVar6) break;
      local_2c = uVar7 - local_34;
      sVar8 = 1;
      uVar5 = uVar7 + 1;
      local_3c = uVar7;
      if (needle_len <= uVar7 + 1) goto LAB_0002f679;
    }
    if (bVar6 == bVar2) {
      if (sVar8 == local_2c) {
        sVar8 = 1;
        local_3c = uVar7;
      }
      else {
        sVar8 = sVar8 + 1;
      }
    }
    else {
      local_34 = local_3c;
      local_2c = 1;
      sVar8 = 1;
      local_3c = local_3c + 1;
    }
  }
LAB_0002f679:
  local_28 = 1;
  sVar8 = 1;
  local_3c = 0;
  *period = local_2c;
  local_30 = 0xffffffff;
  while (uVar5 = sVar8 + local_3c, sVar8 + local_3c < needle_len) {
    while( true ) {
      uVar7 = uVar5;
      ppuVar3 = __ctype_b_loc();
      puVar1 = *ppuVar3;
      bVar6 = needle[uVar7];
      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {
        pp_Var4 = __ctype_tolower_loc();
        bVar6 = *(byte *)(*pp_Var4 + bVar6);
      }
      bVar2 = needle[sVar8 + local_30];
      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {
        pp_Var4 = __ctype_tolower_loc();
        bVar2 = *(byte *)(*pp_Var4 + bVar2);
      }
      if (bVar6 <= bVar2) break;
      local_28 = uVar7 - local_30;
      sVar8 = 1;
      uVar5 = uVar7 + 1;
      local_3c = uVar7;
      if (needle_len <= uVar7 + 1) goto LAB_0002f731;
    }
    if (bVar6 == bVar2) {
      if (sVar8 == local_28) {
        sVar8 = 1;
        local_3c = uVar7;
      }
      else {
        sVar8 = sVar8 + 1;
      }
    }
    else {
      local_30 = local_3c;
      local_28 = 1;
      sVar8 = 1;
      local_3c = local_3c + 1;
    }
  }
LAB_0002f731:
  uVar5 = local_34 + 1;
  if (local_34 + 1 <= local_30 + 1) {
    *period = local_28;
    uVar5 = local_30 + 1;
  }
  return uVar5;
}



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

uint __regparm3 FUN_0002f5a0(int param_1,uint param_2,int *param_3)

{
  ushort *puVar1;
  byte bVar2;
  ushort **ppuVar3;
  __int32_t **pp_Var4;
  uint uVar5;
  byte bVar6;
  uint uVar7;
  int iVar8;
  uint local_3c;
  uint local_34;
  uint local_30;
  int local_2c;
  int local_28;
  
  iVar8 = 1;
  local_2c = 1;
  local_3c = 0;
  local_34 = 0xffffffff;
  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {
    while( true ) {
      uVar7 = uVar5;
      ppuVar3 = __ctype_b_loc();
      puVar1 = *ppuVar3;
      bVar6 = *(byte *)(param_1 + uVar7);
      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {
        pp_Var4 = __ctype_tolower_loc();
        bVar6 = *(byte *)(*pp_Var4 + bVar6);
      }
      bVar2 = *(byte *)(param_1 + local_34 + iVar8);
      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {
        pp_Var4 = __ctype_tolower_loc();
        bVar2 = *(byte *)(*pp_Var4 + bVar2);
      }
      if (bVar2 <= bVar6) break;
      local_2c = uVar7 - local_34;
      iVar8 = 1;
      uVar5 = uVar7 + 1;
      local_3c = uVar7;
      if (param_2 <= uVar7 + 1) goto LAB_0002f679;
    }
    if (bVar6 == bVar2) {
      if (iVar8 == local_2c) {
        iVar8 = 1;
        local_3c = uVar7;
      }
      else {
        iVar8 = iVar8 + 1;
      }
    }
    else {
      local_34 = local_3c;
      local_2c = 1;
      iVar8 = 1;
      local_3c = local_3c + 1;
    }
  }
LAB_0002f679:
  local_28 = 1;
  iVar8 = 1;
  local_3c = 0;
  *param_3 = local_2c;
  local_30 = 0xffffffff;
  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {
    while( true ) {
      uVar7 = uVar5;
      ppuVar3 = __ctype_b_loc();
      puVar1 = *ppuVar3;
      bVar6 = *(byte *)(param_1 + uVar7);
      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {
        pp_Var4 = __ctype_tolower_loc();
        bVar6 = *(byte *)(*pp_Var4 + bVar6);
      }
      bVar2 = *(byte *)(param_1 + local_30 + iVar8);
      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {
        pp_Var4 = __ctype_tolower_loc();
        bVar2 = *(byte *)(*pp_Var4 + bVar2);
      }
      if (bVar6 <= bVar2) break;
      local_28 = uVar7 - local_30;
      iVar8 = 1;
      uVar5 = uVar7 + 1;
      local_3c = uVar7;
      if (param_2 <= uVar7 + 1) goto LAB_0002f731;
    }
    if (bVar6 == bVar2) {
      if (iVar8 == local_28) {
        iVar8 = 1;
        local_3c = uVar7;
      }
      else {
        iVar8 = iVar8 + 1;
      }
    }
    else {
      local_30 = local_3c;
      local_28 = 1;
      iVar8 = 1;
      local_3c = local_3c + 1;
    }
  }
LAB_0002f731:
  uVar5 = local_34 + 1;
  if (local_34 + 1 <= local_30 + 1) {
    *param_3 = local_28;
    uVar5 = local_30 + 1;
  }
  return uVar5;
}


PUSH EBP
PUSH EDI
MOV EDI,0x1
PUSH ESI
PUSH EBX
CALL 0x000134d0
ADD EBX,0xe856
SUB ESP,0x3c
MOV dword ptr [ESP + 0xc],EAX
MOV dword ptr [ESP + 0x14],EDX
MOV dword ptr [ESP + 0x2c],ECX
MOV dword ptr [ESP + 0x20],0x1
MOV dword ptr [ESP + 0x10],0x0
MOV dword ptr [ESP + 0x18],0xffffffff
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESP + 0x10]
LEA ESI,[EDI + EAX*0x1]
CMP ESI,dword ptr [ESP + 0x14]
JNC 0x0002f679
CALL 0x000126d0
MOV EBP,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0xc]
MOVZX ECX,byte ptr [EAX + ESI*0x1]
TEST byte ptr [EBP + ECX*0x2 + 0x1],0x1
MOV EDX,ECX
MOV dword ptr [ESP + 0x1c],ECX
JZ 0x0002f61c
CALL 0x000126b0
MOV ECX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [EAX]
MOVZX EDX,byte ptr [EAX + ECX*0x4]
MOV EAX,dword ptr [ESP + 0xc]
ADD EAX,dword ptr [ESP + 0x18]
MOVZX ECX,byte ptr [EAX + EDI*0x1]
TEST byte ptr [EBP + ECX*0x2 + 0x1],0x1
MOV EAX,ECX
MOV dword ptr [ESP + 0x1c],ECX
JZ 0x0002f64d
MOV byte ptr [ESP + 0x24],DL
CALL 0x000126b0
MOV ECX,dword ptr [ESP + 0x1c]
MOVZX EDX,byte ptr [ESP + 0x24]
MOV EAX,dword ptr [EAX]
MOVZX EAX,byte ptr [EAX + ECX*0x4]
CMP DL,AL
JNC 0x0002f788
MOV EAX,ESI
SUB EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x10],ESI
MOV EDI,0x1
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x10]
LEA ESI,[EDI + EAX*0x1]
CMP ESI,dword ptr [ESP + 0x14]
JC 0x0002f5f1
MOV EAX,dword ptr [ESP + 0x2c]
MOV ESI,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x24],0x1
MOV EDI,0x1
MOV dword ptr [ESP + 0x10],0x0
MOV dword ptr [EAX],ESI
MOV dword ptr [ESP + 0x1c],0xffffffff
MOV EAX,dword ptr [ESP + 0x10]
LEA ESI,[EDI + EAX*0x1]
CMP dword ptr [ESP + 0x14],ESI
JBE 0x0002f731
CALL 0x000126d0
MOV EBP,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0xc]
MOVZX ECX,byte ptr [EAX + ESI*0x1]
TEST byte ptr [EBP + ECX*0x2 + 0x1],0x1
MOV EDX,ECX
MOV dword ptr [ESP + 0x20],ECX
JZ 0x0002f6dc
CALL 0x000126b0
MOV ECX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX]
MOVZX EDX,byte ptr [EAX + ECX*0x4]
MOV EAX,dword ptr [ESP + 0xc]
ADD EAX,dword ptr [ESP + 0x1c]
MOVZX ECX,byte ptr [EAX + EDI*0x1]
TEST byte ptr [EBP + ECX*0x2 + 0x1],0x1
MOV EAX,ECX
MOV dword ptr [ESP + 0x20],ECX
JZ 0x0002f70d
MOV byte ptr [ESP + 0x2b],DL
CALL 0x000126b0
MOV ECX,dword ptr [ESP + 0x20]
MOVZX EDX,byte ptr [ESP + 0x2b]
MOV EAX,dword ptr [EAX]
MOVZX EAX,byte ptr [EAX + ECX*0x4]
CMP DL,AL
JBE 0x0002f760
MOV EAX,ESI
SUB EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x10],ESI
MOV EDI,0x1
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,dword ptr [ESP + 0x10]
LEA ESI,[EDI + EAX*0x1]
CMP dword ptr [ESP + 0x14],ESI
JA 0x0002f6b1
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x18]
ADD EDX,0x1
ADD EAX,0x1
CMP EDX,EAX
JC 0x0002f74f
MOV EAX,dword ptr [ESP + 0x2c]
MOV EBX,dword ptr [ESP + 0x24]
MOV dword ptr [EAX],EBX
MOV EAX,EDX
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
JZ 0x0002f7b0
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x24],0x1
MOV EDI,0x1
MOV dword ptr [ESP + 0x1c],EAX
ADD EAX,0x1
MOV dword ptr [ESP + 0x10],EAX
JMP 0x0002f6a0
JZ 0x0002f7c0
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x20],0x1
MOV EDI,0x1
MOV dword ptr [ESP + 0x18],EAX
ADD EAX,0x1
MOV dword ptr [ESP + 0x10],EAX
JMP 0x0002f5e0
CMP EDI,dword ptr [ESP + 0x24]
JZ 0x0002f7d0
ADD EDI,0x1
JMP 0x0002f6a0
CMP EDI,dword ptr [ESP + 0x20]
JZ 0x0002f7e0
ADD EDI,0x1
JMP 0x0002f5e0
MOV dword ptr [ESP + 0x10],ESI
MOV EDI,0x1
JMP 0x0002f6a0
MOV dword ptr [ESP + 0x10],ESI
MOV EDI,0x1
JMP 0x0002f5e0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nuint __regparm3 FUN_0002f5a0(int param_1,uint param_2,int *param_3)\n\n{\n  ushort *puVar1;\n  byte bVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  uint uVar5;\n  byte bVar6;\n  uint uVar7;\n  int iVar8;\n  uint local_3c;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar8 = 1;\n  local_2c = 1;\n  local_3c = 0;\n  local_34 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f679:\n  local_28 = 1;\n  iVar8 = 1;\n  local_3c = 0;\n  *param_3 = local_2c;\n  local_30 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f731:\n  uVar5 = local_34 + 1;\n  if (local_34 + 1 <= local_30 + 1) {\n    *param_3 = local_28;\n    uVar5 = local_30 + 1;\n  }\n  return uVar5;\n}\n\n" comment (function_definition "uint __regparm3 FUN_0002f5a0(int param_1,uint param_2,int *param_3)\n\n{\n  ushort *puVar1;\n  byte bVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  uint uVar5;\n  byte bVar6;\n  uint uVar7;\n  int iVar8;\n  uint local_3c;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar8 = 1;\n  local_2c = 1;\n  local_3c = 0;\n  local_34 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f679:\n  local_28 = 1;\n  iVar8 = 1;\n  local_3c = 0;\n  *param_3 = local_2c;\n  local_30 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f731:\n  uVar5 = local_34 + 1;\n  if (local_34 + 1 <= local_30 + 1) {\n    *param_3 = local_28;\n    uVar5 = local_30 + 1;\n  }\n  return uVar5;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0002f5a0(int param_1,uint param_2,int *param_3)" identifier (parameter_list "(int param_1,uint param_2,int *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  ushort *puVar1;\n  byte bVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  uint uVar5;\n  byte bVar6;\n  uint uVar7;\n  int iVar8;\n  uint local_3c;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar8 = 1;\n  local_2c = 1;\n  local_3c = 0;\n  local_34 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f679:\n  local_28 = 1;\n  iVar8 = 1;\n  local_3c = 0;\n  *param_3 = local_2c;\n  local_30 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f731:\n  uVar5 = local_34 + 1;\n  if (local_34 + 1 <= local_30 + 1) {\n    *param_3 = local_28;\n    uVar5 = local_30 + 1;\n  }\n  return uVar5;\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "ushort **ppuVar3;" type_identifier (pointer_declarator "**ppuVar3" * (pointer_declarator "*ppuVar3" * identifier)) ;) (declaration "__int32_t **pp_Var4;" type_identifier (pointer_declarator "**pp_Var4" * (pointer_declarator "*pp_Var4" * identifier)) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "local_2c = 1;" (assignment_expression "local_2c = 1" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_34 = 0xffffffff;" (assignment_expression "local_34 = 0xffffffff" identifier = number_literal) ;) (while_statement "while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" while (parenthesized_expression "(uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2)" ( (comma_expression "uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2" (assignment_expression "uVar5 = iVar8 + local_3c" identifier = (binary_expression "iVar8 + local_3c" identifier + identifier)) , (binary_expression "iVar8 + local_3c < param_2" (binary_expression "iVar8 + local_3c" identifier + identifier) < identifier)) )) (compound_statement "{\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" { (while_statement "while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }" { (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (expression_statement "ppuVar3 = __ctype_b_loc();" (assignment_expression "ppuVar3 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar1 = *ppuVar3;" (assignment_expression "puVar1 = *ppuVar3" identifier = (pointer_expression "*ppuVar3" * identifier)) ;) (expression_statement "bVar6 = *(byte *)(param_1 + uVar7);" (assignment_expression "bVar6 = *(byte *)(param_1 + uVar7)" identifier = (pointer_expression "*(byte *)(param_1 + uVar7)" * (cast_expression "(byte *)(param_1 + uVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar7)" ( (binary_expression "param_1 + uVar7" identifier + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" if (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + (uint)bVar6 * 2 + 1)" ( (binary_expression "(int)puVar1 + (uint)bVar6 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar6 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar6 * 2" (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" { (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar6 = *(byte *)(*pp_Var4 + bVar6);" (assignment_expression "bVar6 = *(byte *)(*pp_Var4 + bVar6)" identifier = (pointer_expression "*(byte *)(*pp_Var4 + bVar6)" * (cast_expression "(byte *)(*pp_Var4 + bVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pp_Var4 + bVar6)" ( (binary_expression "*pp_Var4 + bVar6" (pointer_expression "*pp_Var4" * identifier) + identifier) ))))) ;) })) (expression_statement "bVar2 = *(byte *)(param_1 + local_34 + iVar8);" (assignment_expression "bVar2 = *(byte *)(param_1 + local_34 + iVar8)" identifier = (pointer_expression "*(byte *)(param_1 + local_34 + iVar8)" * (cast_expression "(byte *)(param_1 + local_34 + iVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + local_34 + iVar8)" ( (binary_expression "param_1 + local_34 + iVar8" (binary_expression "param_1 + local_34" identifier + identifier) + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" if (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + (uint)bVar2 * 2 + 1)" ( (binary_expression "(int)puVar1 + (uint)bVar2 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar2 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" { (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar2 = *(byte *)(*pp_Var4 + bVar2);" (assignment_expression "bVar2 = *(byte *)(*pp_Var4 + bVar2)" identifier = (pointer_expression "*(byte *)(*pp_Var4 + bVar2)" * (cast_expression "(byte *)(*pp_Var4 + bVar2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pp_Var4 + bVar2)" ( (binary_expression "*pp_Var4 + bVar2" (pointer_expression "*pp_Var4" * identifier) + identifier) ))))) ;) })) (if_statement "if (bVar2 <= bVar6) break;" if (parenthesized_expression "(bVar2 <= bVar6)" ( (binary_expression "bVar2 <= bVar6" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "local_2c = uVar7 - local_34;" (assignment_expression "local_2c = uVar7 - local_34" identifier = (binary_expression "uVar7 - local_34" identifier - identifier)) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "uVar5 = uVar7 + 1;" (assignment_expression "uVar5 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" identifier = identifier) ;) (if_statement "if (param_2 <= uVar7 + 1) goto LAB_0002f679;" if (parenthesized_expression "(param_2 <= uVar7 + 1)" ( (binary_expression "param_2 <= uVar7 + 1" identifier <= (binary_expression "uVar7 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_0002f679;" goto statement_identifier ;)) })) (if_statement "if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" if (parenthesized_expression "(bVar6 == bVar2)" ( (binary_expression "bVar6 == bVar2" identifier == identifier) )) (compound_statement "{\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }" { (if_statement "if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }" if (parenthesized_expression "(iVar8 == local_2c)" ( (binary_expression "iVar8 == local_2c" identifier == identifier) )) (compound_statement "{\n        iVar8 = 1;\n        local_3c = uVar7;\n      }" { (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" identifier = identifier) ;) }) (else_clause "else {\n        iVar8 = iVar8 + 1;\n      }" else (compound_statement "{\n        iVar8 = iVar8 + 1;\n      }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" else (compound_statement "{\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" { (expression_statement "local_34 = local_3c;" (assignment_expression "local_34 = local_3c" identifier = identifier) ;) (expression_statement "local_2c = 1;" (assignment_expression "local_2c = 1" identifier = number_literal) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) }))) })) (labeled_statement "LAB_0002f679:\n  local_28 = 1;" statement_identifier : (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;)) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "*param_3 = local_2c;" (assignment_expression "*param_3 = local_2c" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "local_30 = 0xffffffff;" (assignment_expression "local_30 = 0xffffffff" identifier = number_literal) ;) (while_statement "while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" while (parenthesized_expression "(uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2)" ( (comma_expression "uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2" (assignment_expression "uVar5 = iVar8 + local_3c" identifier = (binary_expression "iVar8 + local_3c" identifier + identifier)) , (binary_expression "iVar8 + local_3c < param_2" (binary_expression "iVar8 + local_3c" identifier + identifier) < identifier)) )) (compound_statement "{\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" { (while_statement "while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }" { (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (expression_statement "ppuVar3 = __ctype_b_loc();" (assignment_expression "ppuVar3 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar1 = *ppuVar3;" (assignment_expression "puVar1 = *ppuVar3" identifier = (pointer_expression "*ppuVar3" * identifier)) ;) (expression_statement "bVar6 = *(byte *)(param_1 + uVar7);" (assignment_expression "bVar6 = *(byte *)(param_1 + uVar7)" identifier = (pointer_expression "*(byte *)(param_1 + uVar7)" * (cast_expression "(byte *)(param_1 + uVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar7)" ( (binary_expression "param_1 + uVar7" identifier + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" if (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + (uint)bVar6 * 2 + 1)" ( (binary_expression "(int)puVar1 + (uint)bVar6 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar6 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar6 * 2" (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" { (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar6 = *(byte *)(*pp_Var4 + bVar6);" (assignment_expression "bVar6 = *(byte *)(*pp_Var4 + bVar6)" identifier = (pointer_expression "*(byte *)(*pp_Var4 + bVar6)" * (cast_expression "(byte *)(*pp_Var4 + bVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pp_Var4 + bVar6)" ( (binary_expression "*pp_Var4 + bVar6" (pointer_expression "*pp_Var4" * identifier) + identifier) ))))) ;) })) (expression_statement "bVar2 = *(byte *)(param_1 + local_30 + iVar8);" (assignment_expression "bVar2 = *(byte *)(param_1 + local_30 + iVar8)" identifier = (pointer_expression "*(byte *)(param_1 + local_30 + iVar8)" * (cast_expression "(byte *)(param_1 + local_30 + iVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + local_30 + iVar8)" ( (binary_expression "param_1 + local_30 + iVar8" (binary_expression "param_1 + local_30" identifier + identifier) + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" if (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + (uint)bVar2 * 2 + 1)" ( (binary_expression "(int)puVar1 + (uint)bVar2 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar2 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" { (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar2 = *(byte *)(*pp_Var4 + bVar2);" (assignment_expression "bVar2 = *(byte *)(*pp_Var4 + bVar2)" identifier = (pointer_expression "*(byte *)(*pp_Var4 + bVar2)" * (cast_expression "(byte *)(*pp_Var4 + bVar2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pp_Var4 + bVar2)" ( (binary_expression "*pp_Var4 + bVar2" (pointer_expression "*pp_Var4" * identifier) + identifier) ))))) ;) })) (if_statement "if (bVar6 <= bVar2) break;" if (parenthesized_expression "(bVar6 <= bVar2)" ( (binary_expression "bVar6 <= bVar2" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "local_28 = uVar7 - local_30;" (assignment_expression "local_28 = uVar7 - local_30" identifier = (binary_expression "uVar7 - local_30" identifier - identifier)) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "uVar5 = uVar7 + 1;" (assignment_expression "uVar5 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" identifier = identifier) ;) (if_statement "if (param_2 <= uVar7 + 1) goto LAB_0002f731;" if (parenthesized_expression "(param_2 <= uVar7 + 1)" ( (binary_expression "param_2 <= uVar7 + 1" identifier <= (binary_expression "uVar7 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_0002f731;" goto statement_identifier ;)) })) (if_statement "if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" if (parenthesized_expression "(bVar6 == bVar2)" ( (binary_expression "bVar6 == bVar2" identifier == identifier) )) (compound_statement "{\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }" { (if_statement "if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }" if (parenthesized_expression "(iVar8 == local_28)" ( (binary_expression "iVar8 == local_28" identifier == identifier) )) (compound_statement "{\n        iVar8 = 1;\n        local_3c = uVar7;\n      }" { (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" identifier = identifier) ;) }) (else_clause "else {\n        iVar8 = iVar8 + 1;\n      }" else (compound_statement "{\n        iVar8 = iVar8 + 1;\n      }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" else (compound_statement "{\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" { (expression_statement "local_30 = local_3c;" (assignment_expression "local_30 = local_3c" identifier = identifier) ;) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) }))) })) (labeled_statement "LAB_0002f731:\n  uVar5 = local_34 + 1;" statement_identifier : (expression_statement "uVar5 = local_34 + 1;" (assignment_expression "uVar5 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;)) (if_statement "if (local_34 + 1 <= local_30 + 1) {\n    *param_3 = local_28;\n    uVar5 = local_30 + 1;\n  }" if (parenthesized_expression "(local_34 + 1 <= local_30 + 1)" ( (binary_expression "local_34 + 1 <= local_30 + 1" (binary_expression "local_34 + 1" identifier + number_literal) <= (binary_expression "local_30 + 1" identifier + number_literal)) )) (compound_statement "{\n    *param_3 = local_28;\n    uVar5 = local_30 + 1;\n  }" { (expression_statement "*param_3 = local_28;" (assignment_expression "*param_3 = local_28" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "uVar5 = local_30 + 1;" (assignment_expression "uVar5 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) })) (return_statement "return uVar5;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nsize_t __regparm3 critical_factorization(uchar *needle,size_t needle_len,size_t *period)\n\n{\n  ushort *puVar1;\n  byte bVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  uint uVar5;\n  byte bVar6;\n  uint uVar7;\n  size_t sVar8;\n  uint local_3c;\n  uint local_34;\n  uint local_30;\n  size_t local_2c;\n  size_t local_28;\n  \n  sVar8 = 1;\n  local_2c = 1;\n  local_3c = 0;\n  local_34 = 0xffffffff;\n  while (uVar5 = sVar8 + local_3c, sVar8 + local_3c < needle_len) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = needle[uVar7];\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = needle[sVar8 + local_34];\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      sVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (needle_len <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (sVar8 == local_2c) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f679:\n  local_28 = 1;\n  sVar8 = 1;\n  local_3c = 0;\n  *period = local_2c;\n  local_30 = 0xffffffff;\n  while (uVar5 = sVar8 + local_3c, sVar8 + local_3c < needle_len) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = needle[uVar7];\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = needle[sVar8 + local_30];\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      sVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (needle_len <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (sVar8 == local_28) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f731:\n  uVar5 = local_34 + 1;\n  if (local_34 + 1 <= local_30 + 1) {\n    *period = local_28;\n    uVar5 = local_30 + 1;\n  }\n  return uVar5;\n}\n\n" comment (function_definition "size_t __regparm3 critical_factorization(uchar *needle,size_t needle_len,size_t *period)\n\n{\n  ushort *puVar1;\n  byte bVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  uint uVar5;\n  byte bVar6;\n  uint uVar7;\n  size_t sVar8;\n  uint local_3c;\n  uint local_34;\n  uint local_30;\n  size_t local_2c;\n  size_t local_28;\n  \n  sVar8 = 1;\n  local_2c = 1;\n  local_3c = 0;\n  local_34 = 0xffffffff;\n  while (uVar5 = sVar8 + local_3c, sVar8 + local_3c < needle_len) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = needle[uVar7];\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = needle[sVar8 + local_34];\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      sVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (needle_len <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (sVar8 == local_2c) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f679:\n  local_28 = 1;\n  sVar8 = 1;\n  local_3c = 0;\n  *period = local_2c;\n  local_30 = 0xffffffff;\n  while (uVar5 = sVar8 + local_3c, sVar8 + local_3c < needle_len) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = needle[uVar7];\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = needle[sVar8 + local_30];\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      sVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (needle_len <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (sVar8 == local_28) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f731:\n  uVar5 = local_34 + 1;\n  if (local_34 + 1 <= local_30 + 1) {\n    *period = local_28;\n    uVar5 = local_30 + 1;\n  }\n  return uVar5;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "critical_factorization(uchar *needle,size_t needle_len,size_t *period)" identifier (parameter_list "(uchar *needle,size_t needle_len,size_t *period)" ( (parameter_declaration "uchar *needle" type_identifier (pointer_declarator "*needle" * identifier)) , (parameter_declaration "size_t needle_len" primitive_type identifier) , (parameter_declaration "size_t *period" primitive_type (pointer_declarator "*period" * identifier)) ))) (compound_statement "{\n  ushort *puVar1;\n  byte bVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  uint uVar5;\n  byte bVar6;\n  uint uVar7;\n  size_t sVar8;\n  uint local_3c;\n  uint local_34;\n  uint local_30;\n  size_t local_2c;\n  size_t local_28;\n  \n  sVar8 = 1;\n  local_2c = 1;\n  local_3c = 0;\n  local_34 = 0xffffffff;\n  while (uVar5 = sVar8 + local_3c, sVar8 + local_3c < needle_len) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = needle[uVar7];\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = needle[sVar8 + local_34];\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      sVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (needle_len <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (sVar8 == local_2c) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f679:\n  local_28 = 1;\n  sVar8 = 1;\n  local_3c = 0;\n  *period = local_2c;\n  local_30 = 0xffffffff;\n  while (uVar5 = sVar8 + local_3c, sVar8 + local_3c < needle_len) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = needle[uVar7];\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = needle[sVar8 + local_30];\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      sVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (needle_len <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (sVar8 == local_28) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f731:\n  uVar5 = local_34 + 1;\n  if (local_34 + 1 <= local_30 + 1) {\n    *period = local_28;\n    uVar5 = local_30 + 1;\n  }\n  return uVar5;\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "ushort **ppuVar3;" type_identifier (pointer_declarator "**ppuVar3" * (pointer_declarator "*ppuVar3" * identifier)) ;) (declaration "__int32_t **pp_Var4;" type_identifier (pointer_declarator "**pp_Var4" * (pointer_declarator "*pp_Var4" * identifier)) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "size_t local_2c;" primitive_type identifier ;) (declaration "size_t local_28;" primitive_type identifier ;) (expression_statement "sVar8 = 1;" (assignment_expression "sVar8 = 1" identifier = number_literal) ;) (expression_statement "local_2c = 1;" (assignment_expression "local_2c = 1" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_34 = 0xffffffff;" (assignment_expression "local_34 = 0xffffffff" identifier = number_literal) ;) (while_statement "while (uVar5 = sVar8 + local_3c, sVar8 + local_3c < needle_len) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = needle[uVar7];\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = needle[sVar8 + local_34];\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      sVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (needle_len <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (sVar8 == local_2c) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" while (parenthesized_expression "(uVar5 = sVar8 + local_3c, sVar8 + local_3c < needle_len)" ( (comma_expression "uVar5 = sVar8 + local_3c, sVar8 + local_3c < needle_len" (assignment_expression "uVar5 = sVar8 + local_3c" identifier = (binary_expression "sVar8 + local_3c" identifier + identifier)) , (binary_expression "sVar8 + local_3c < needle_len" (binary_expression "sVar8 + local_3c" identifier + identifier) < identifier)) )) (compound_statement "{\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = needle[uVar7];\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = needle[sVar8 + local_34];\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      sVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (needle_len <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (sVar8 == local_2c) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" { (while_statement "while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = needle[uVar7];\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = needle[sVar8 + local_34];\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      sVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (needle_len <= uVar7 + 1) goto LAB_0002f679;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = needle[uVar7];\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = needle[sVar8 + local_34];\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      sVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (needle_len <= uVar7 + 1) goto LAB_0002f679;\n    }" { (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (expression_statement "ppuVar3 = __ctype_b_loc();" (assignment_expression "ppuVar3 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar1 = *ppuVar3;" (assignment_expression "puVar1 = *ppuVar3" identifier = (pointer_expression "*ppuVar3" * identifier)) ;) (expression_statement "bVar6 = needle[uVar7];" (assignment_expression "bVar6 = needle[uVar7]" identifier = (subscript_expression "needle[uVar7]" identifier [ identifier ])) ;) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" if (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + (uint)bVar6 * 2 + 1)" ( (binary_expression "(int)puVar1 + (uint)bVar6 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar6 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar6 * 2" (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" { (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar6 = *(byte *)(*pp_Var4 + bVar6);" (assignment_expression "bVar6 = *(byte *)(*pp_Var4 + bVar6)" identifier = (pointer_expression "*(byte *)(*pp_Var4 + bVar6)" * (cast_expression "(byte *)(*pp_Var4 + bVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pp_Var4 + bVar6)" ( (binary_expression "*pp_Var4 + bVar6" (pointer_expression "*pp_Var4" * identifier) + identifier) ))))) ;) })) (expression_statement "bVar2 = needle[sVar8 + local_34];" (assignment_expression "bVar2 = needle[sVar8 + local_34]" identifier = (subscript_expression "needle[sVar8 + local_34]" identifier [ (binary_expression "sVar8 + local_34" identifier + identifier) ])) ;) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" if (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + (uint)bVar2 * 2 + 1)" ( (binary_expression "(int)puVar1 + (uint)bVar2 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar2 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" { (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar2 = *(byte *)(*pp_Var4 + bVar2);" (assignment_expression "bVar2 = *(byte *)(*pp_Var4 + bVar2)" identifier = (pointer_expression "*(byte *)(*pp_Var4 + bVar2)" * (cast_expression "(byte *)(*pp_Var4 + bVar2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pp_Var4 + bVar2)" ( (binary_expression "*pp_Var4 + bVar2" (pointer_expression "*pp_Var4" * identifier) + identifier) ))))) ;) })) (if_statement "if (bVar2 <= bVar6) break;" if (parenthesized_expression "(bVar2 <= bVar6)" ( (binary_expression "bVar2 <= bVar6" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "local_2c = uVar7 - local_34;" (assignment_expression "local_2c = uVar7 - local_34" identifier = (binary_expression "uVar7 - local_34" identifier - identifier)) ;) (expression_statement "sVar8 = 1;" (assignment_expression "sVar8 = 1" identifier = number_literal) ;) (expression_statement "uVar5 = uVar7 + 1;" (assignment_expression "uVar5 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" identifier = identifier) ;) (if_statement "if (needle_len <= uVar7 + 1) goto LAB_0002f679;" if (parenthesized_expression "(needle_len <= uVar7 + 1)" ( (binary_expression "needle_len <= uVar7 + 1" identifier <= (binary_expression "uVar7 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_0002f679;" goto statement_identifier ;)) })) (if_statement "if (bVar6 == bVar2) {\n      if (sVar8 == local_2c) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }" if (parenthesized_expression "(bVar6 == bVar2)" ( (binary_expression "bVar6 == bVar2" identifier == identifier) )) (compound_statement "{\n      if (sVar8 == local_2c) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }\n    }" { (if_statement "if (sVar8 == local_2c) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }" if (parenthesized_expression "(sVar8 == local_2c)" ( (binary_expression "sVar8 == local_2c" identifier == identifier) )) (compound_statement "{\n        sVar8 = 1;\n        local_3c = uVar7;\n      }" { (expression_statement "sVar8 = 1;" (assignment_expression "sVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" identifier = identifier) ;) }) (else_clause "else {\n        sVar8 = sVar8 + 1;\n      }" else (compound_statement "{\n        sVar8 = sVar8 + 1;\n      }" { (expression_statement "sVar8 = sVar8 + 1;" (assignment_expression "sVar8 = sVar8 + 1" identifier = (binary_expression "sVar8 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n      local_34 = local_3c;\n      local_2c = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }" else (compound_statement "{\n      local_34 = local_3c;\n      local_2c = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }" { (expression_statement "local_34 = local_3c;" (assignment_expression "local_34 = local_3c" identifier = identifier) ;) (expression_statement "local_2c = 1;" (assignment_expression "local_2c = 1" identifier = number_literal) ;) (expression_statement "sVar8 = 1;" (assignment_expression "sVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) }))) })) (labeled_statement "LAB_0002f679:\n  local_28 = 1;" statement_identifier : (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;)) (expression_statement "sVar8 = 1;" (assignment_expression "sVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "*period = local_2c;" (assignment_expression "*period = local_2c" (pointer_expression "*period" * identifier) = identifier) ;) (expression_statement "local_30 = 0xffffffff;" (assignment_expression "local_30 = 0xffffffff" identifier = number_literal) ;) (while_statement "while (uVar5 = sVar8 + local_3c, sVar8 + local_3c < needle_len) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = needle[uVar7];\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = needle[sVar8 + local_30];\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      sVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (needle_len <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (sVar8 == local_28) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" while (parenthesized_expression "(uVar5 = sVar8 + local_3c, sVar8 + local_3c < needle_len)" ( (comma_expression "uVar5 = sVar8 + local_3c, sVar8 + local_3c < needle_len" (assignment_expression "uVar5 = sVar8 + local_3c" identifier = (binary_expression "sVar8 + local_3c" identifier + identifier)) , (binary_expression "sVar8 + local_3c < needle_len" (binary_expression "sVar8 + local_3c" identifier + identifier) < identifier)) )) (compound_statement "{\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = needle[uVar7];\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = needle[sVar8 + local_30];\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      sVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (needle_len <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (sVar8 == local_28) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" { (while_statement "while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = needle[uVar7];\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = needle[sVar8 + local_30];\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      sVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (needle_len <= uVar7 + 1) goto LAB_0002f731;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = needle[uVar7];\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = needle[sVar8 + local_30];\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      sVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (needle_len <= uVar7 + 1) goto LAB_0002f731;\n    }" { (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (expression_statement "ppuVar3 = __ctype_b_loc();" (assignment_expression "ppuVar3 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar1 = *ppuVar3;" (assignment_expression "puVar1 = *ppuVar3" identifier = (pointer_expression "*ppuVar3" * identifier)) ;) (expression_statement "bVar6 = needle[uVar7];" (assignment_expression "bVar6 = needle[uVar7]" identifier = (subscript_expression "needle[uVar7]" identifier [ identifier ])) ;) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" if (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + (uint)bVar6 * 2 + 1)" ( (binary_expression "(int)puVar1 + (uint)bVar6 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar6 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar6 * 2" (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" { (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar6 = *(byte *)(*pp_Var4 + bVar6);" (assignment_expression "bVar6 = *(byte *)(*pp_Var4 + bVar6)" identifier = (pointer_expression "*(byte *)(*pp_Var4 + bVar6)" * (cast_expression "(byte *)(*pp_Var4 + bVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pp_Var4 + bVar6)" ( (binary_expression "*pp_Var4 + bVar6" (pointer_expression "*pp_Var4" * identifier) + identifier) ))))) ;) })) (expression_statement "bVar2 = needle[sVar8 + local_30];" (assignment_expression "bVar2 = needle[sVar8 + local_30]" identifier = (subscript_expression "needle[sVar8 + local_30]" identifier [ (binary_expression "sVar8 + local_30" identifier + identifier) ])) ;) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" if (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + (uint)bVar2 * 2 + 1)" ( (binary_expression "(int)puVar1 + (uint)bVar2 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar2 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" { (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar2 = *(byte *)(*pp_Var4 + bVar2);" (assignment_expression "bVar2 = *(byte *)(*pp_Var4 + bVar2)" identifier = (pointer_expression "*(byte *)(*pp_Var4 + bVar2)" * (cast_expression "(byte *)(*pp_Var4 + bVar2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pp_Var4 + bVar2)" ( (binary_expression "*pp_Var4 + bVar2" (pointer_expression "*pp_Var4" * identifier) + identifier) ))))) ;) })) (if_statement "if (bVar6 <= bVar2) break;" if (parenthesized_expression "(bVar6 <= bVar2)" ( (binary_expression "bVar6 <= bVar2" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "local_28 = uVar7 - local_30;" (assignment_expression "local_28 = uVar7 - local_30" identifier = (binary_expression "uVar7 - local_30" identifier - identifier)) ;) (expression_statement "sVar8 = 1;" (assignment_expression "sVar8 = 1" identifier = number_literal) ;) (expression_statement "uVar5 = uVar7 + 1;" (assignment_expression "uVar5 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" identifier = identifier) ;) (if_statement "if (needle_len <= uVar7 + 1) goto LAB_0002f731;" if (parenthesized_expression "(needle_len <= uVar7 + 1)" ( (binary_expression "needle_len <= uVar7 + 1" identifier <= (binary_expression "uVar7 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_0002f731;" goto statement_identifier ;)) })) (if_statement "if (bVar6 == bVar2) {\n      if (sVar8 == local_28) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }" if (parenthesized_expression "(bVar6 == bVar2)" ( (binary_expression "bVar6 == bVar2" identifier == identifier) )) (compound_statement "{\n      if (sVar8 == local_28) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }\n    }" { (if_statement "if (sVar8 == local_28) {\n        sVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        sVar8 = sVar8 + 1;\n      }" if (parenthesized_expression "(sVar8 == local_28)" ( (binary_expression "sVar8 == local_28" identifier == identifier) )) (compound_statement "{\n        sVar8 = 1;\n        local_3c = uVar7;\n      }" { (expression_statement "sVar8 = 1;" (assignment_expression "sVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" identifier = identifier) ;) }) (else_clause "else {\n        sVar8 = sVar8 + 1;\n      }" else (compound_statement "{\n        sVar8 = sVar8 + 1;\n      }" { (expression_statement "sVar8 = sVar8 + 1;" (assignment_expression "sVar8 = sVar8 + 1" identifier = (binary_expression "sVar8 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n      local_30 = local_3c;\n      local_28 = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }" else (compound_statement "{\n      local_30 = local_3c;\n      local_28 = 1;\n      sVar8 = 1;\n      local_3c = local_3c + 1;\n    }" { (expression_statement "local_30 = local_3c;" (assignment_expression "local_30 = local_3c" identifier = identifier) ;) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "sVar8 = 1;" (assignment_expression "sVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) }))) })) (labeled_statement "LAB_0002f731:\n  uVar5 = local_34 + 1;" statement_identifier : (expression_statement "uVar5 = local_34 + 1;" (assignment_expression "uVar5 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;)) (if_statement "if (local_34 + 1 <= local_30 + 1) {\n    *period = local_28;\n    uVar5 = local_30 + 1;\n  }" if (parenthesized_expression "(local_34 + 1 <= local_30 + 1)" ( (binary_expression "local_34 + 1 <= local_30 + 1" (binary_expression "local_34 + 1" identifier + number_literal) <= (binary_expression "local_30 + 1" identifier + number_literal)) )) (compound_statement "{\n    *period = local_28;\n    uVar5 = local_30 + 1;\n  }" { (expression_statement "*period = local_28;" (assignment_expression "*period = local_28" (pointer_expression "*period" * identifier) = identifier) ;) (expression_statement "uVar5 = local_30 + 1;" (assignment_expression "uVar5 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) })) (return_statement "return uVar5;" return identifier ;) })))
(translation_unit "uint __regparm3 FUN_0002f5a0(int param_1,uint param_2,int *param_3)\n\n{\n  ushort *puVar1;\n  byte bVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  uint uVar5;\n  byte bVar6;\n  uint uVar7;\n  int iVar8;\n  uint local_3c;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar8 = 1;\n  local_2c = 1;\n  local_3c = 0;\n  local_34 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f679:\n  local_28 = 1;\n  iVar8 = 1;\n  local_3c = 0;\n  *param_3 = local_2c;\n  local_30 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f731:\n  uVar5 = local_34 + 1;\n  if (local_34 + 1 <= local_30 + 1) {\n    *param_3 = local_28;\n    uVar5 = local_30 + 1;\n  }\n  return uVar5;\n}\n\n" (function_definition "uint __regparm3 FUN_0002f5a0(int param_1,uint param_2,int *param_3)\n\n{\n  ushort *puVar1;\n  byte bVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  uint uVar5;\n  byte bVar6;\n  uint uVar7;\n  int iVar8;\n  uint local_3c;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar8 = 1;\n  local_2c = 1;\n  local_3c = 0;\n  local_34 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f679:\n  local_28 = 1;\n  iVar8 = 1;\n  local_3c = 0;\n  *param_3 = local_2c;\n  local_30 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f731:\n  uVar5 = local_34 + 1;\n  if (local_34 + 1 <= local_30 + 1) {\n    *param_3 = local_28;\n    uVar5 = local_30 + 1;\n  }\n  return uVar5;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0002f5a0(int param_1,uint param_2,int *param_3)" identifier (parameter_list "(int param_1,uint param_2,int *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  ushort *puVar1;\n  byte bVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  uint uVar5;\n  byte bVar6;\n  uint uVar7;\n  int iVar8;\n  uint local_3c;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar8 = 1;\n  local_2c = 1;\n  local_3c = 0;\n  local_34 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f679:\n  local_28 = 1;\n  iVar8 = 1;\n  local_3c = 0;\n  *param_3 = local_2c;\n  local_30 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f731:\n  uVar5 = local_34 + 1;\n  if (local_34 + 1 <= local_30 + 1) {\n    *param_3 = local_28;\n    uVar5 = local_30 + 1;\n  }\n  return uVar5;\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "ushort **ppuVar3;" type_identifier (pointer_declarator "**ppuVar3" * (pointer_declarator "*ppuVar3" * identifier)) ;) (declaration "__int32_t **pp_Var4;" type_identifier (pointer_declarator "**pp_Var4" * (pointer_declarator "*pp_Var4" * identifier)) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "local_2c = 1;" (assignment_expression "local_2c = 1" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_34 = 0xffffffff;" (assignment_expression "local_34 = 0xffffffff" identifier = number_literal) ;) (while_statement "while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" while (parenthesized_expression "(uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2)" ( (comma_expression "uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2" (assignment_expression "uVar5 = iVar8 + local_3c" identifier = (binary_expression "iVar8 + local_3c" identifier + identifier)) , (binary_expression "iVar8 + local_3c < param_2" (binary_expression "iVar8 + local_3c" identifier + identifier) < identifier)) )) (compound_statement "{\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" { (while_statement "while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }" { (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (expression_statement "ppuVar3 = __ctype_b_loc();" (assignment_expression "ppuVar3 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar1 = *ppuVar3;" (assignment_expression "puVar1 = *ppuVar3" identifier = (pointer_expression "*ppuVar3" * identifier)) ;) (expression_statement "bVar6 = *(byte *)(param_1 + uVar7);" (assignment_expression "bVar6 = *(byte *)(param_1 + uVar7)" identifier = (pointer_expression "*(byte *)(param_1 + uVar7)" * (cast_expression "(byte *)(param_1 + uVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar7)" ( (binary_expression "param_1 + uVar7" identifier + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" if (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + (uint)bVar6 * 2 + 1)" ( (binary_expression "(int)puVar1 + (uint)bVar6 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar6 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar6 * 2" (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" { (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar6 = *(byte *)(*pp_Var4 + bVar6);" (assignment_expression "bVar6 = *(byte *)(*pp_Var4 + bVar6)" identifier = (pointer_expression "*(byte *)(*pp_Var4 + bVar6)" * (cast_expression "(byte *)(*pp_Var4 + bVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pp_Var4 + bVar6)" ( (binary_expression "*pp_Var4 + bVar6" (pointer_expression "*pp_Var4" * identifier) + identifier) ))))) ;) })) (expression_statement "bVar2 = *(byte *)(param_1 + local_34 + iVar8);" (assignment_expression "bVar2 = *(byte *)(param_1 + local_34 + iVar8)" identifier = (pointer_expression "*(byte *)(param_1 + local_34 + iVar8)" * (cast_expression "(byte *)(param_1 + local_34 + iVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + local_34 + iVar8)" ( (binary_expression "param_1 + local_34 + iVar8" (binary_expression "param_1 + local_34" identifier + identifier) + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" if (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + (uint)bVar2 * 2 + 1)" ( (binary_expression "(int)puVar1 + (uint)bVar2 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar2 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" { (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar2 = *(byte *)(*pp_Var4 + bVar2);" (assignment_expression "bVar2 = *(byte *)(*pp_Var4 + bVar2)" identifier = (pointer_expression "*(byte *)(*pp_Var4 + bVar2)" * (cast_expression "(byte *)(*pp_Var4 + bVar2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pp_Var4 + bVar2)" ( (binary_expression "*pp_Var4 + bVar2" (pointer_expression "*pp_Var4" * identifier) + identifier) ))))) ;) })) (if_statement "if (bVar2 <= bVar6) break;" if (parenthesized_expression "(bVar2 <= bVar6)" ( (binary_expression "bVar2 <= bVar6" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "local_2c = uVar7 - local_34;" (assignment_expression "local_2c = uVar7 - local_34" identifier = (binary_expression "uVar7 - local_34" identifier - identifier)) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "uVar5 = uVar7 + 1;" (assignment_expression "uVar5 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" identifier = identifier) ;) (if_statement "if (param_2 <= uVar7 + 1) goto LAB_0002f679;" if (parenthesized_expression "(param_2 <= uVar7 + 1)" ( (binary_expression "param_2 <= uVar7 + 1" identifier <= (binary_expression "uVar7 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_0002f679;" goto statement_identifier ;)) })) (if_statement "if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" if (parenthesized_expression "(bVar6 == bVar2)" ( (binary_expression "bVar6 == bVar2" identifier == identifier) )) (compound_statement "{\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }" { (if_statement "if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }" if (parenthesized_expression "(iVar8 == local_2c)" ( (binary_expression "iVar8 == local_2c" identifier == identifier) )) (compound_statement "{\n        iVar8 = 1;\n        local_3c = uVar7;\n      }" { (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" identifier = identifier) ;) }) (else_clause "else {\n        iVar8 = iVar8 + 1;\n      }" else (compound_statement "{\n        iVar8 = iVar8 + 1;\n      }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" else (compound_statement "{\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" { (expression_statement "local_34 = local_3c;" (assignment_expression "local_34 = local_3c" identifier = identifier) ;) (expression_statement "local_2c = 1;" (assignment_expression "local_2c = 1" identifier = number_literal) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) }))) })) (labeled_statement "LAB_0002f679:\n  local_28 = 1;" statement_identifier : (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;)) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "*param_3 = local_2c;" (assignment_expression "*param_3 = local_2c" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "local_30 = 0xffffffff;" (assignment_expression "local_30 = 0xffffffff" identifier = number_literal) ;) (while_statement "while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" while (parenthesized_expression "(uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2)" ( (comma_expression "uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2" (assignment_expression "uVar5 = iVar8 + local_3c" identifier = (binary_expression "iVar8 + local_3c" identifier + identifier)) , (binary_expression "iVar8 + local_3c < param_2" (binary_expression "iVar8 + local_3c" identifier + identifier) < identifier)) )) (compound_statement "{\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" { (while_statement "while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }" { (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (expression_statement "ppuVar3 = __ctype_b_loc();" (assignment_expression "ppuVar3 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar1 = *ppuVar3;" (assignment_expression "puVar1 = *ppuVar3" identifier = (pointer_expression "*ppuVar3" * identifier)) ;) (expression_statement "bVar6 = *(byte *)(param_1 + uVar7);" (assignment_expression "bVar6 = *(byte *)(param_1 + uVar7)" identifier = (pointer_expression "*(byte *)(param_1 + uVar7)" * (cast_expression "(byte *)(param_1 + uVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar7)" ( (binary_expression "param_1 + uVar7" identifier + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" if (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + (uint)bVar6 * 2 + 1)" ( (binary_expression "(int)puVar1 + (uint)bVar6 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar6 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar6 * 2" (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" { (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar6 = *(byte *)(*pp_Var4 + bVar6);" (assignment_expression "bVar6 = *(byte *)(*pp_Var4 + bVar6)" identifier = (pointer_expression "*(byte *)(*pp_Var4 + bVar6)" * (cast_expression "(byte *)(*pp_Var4 + bVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pp_Var4 + bVar6)" ( (binary_expression "*pp_Var4 + bVar6" (pointer_expression "*pp_Var4" * identifier) + identifier) ))))) ;) })) (expression_statement "bVar2 = *(byte *)(param_1 + local_30 + iVar8);" (assignment_expression "bVar2 = *(byte *)(param_1 + local_30 + iVar8)" identifier = (pointer_expression "*(byte *)(param_1 + local_30 + iVar8)" * (cast_expression "(byte *)(param_1 + local_30 + iVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + local_30 + iVar8)" ( (binary_expression "param_1 + local_30 + iVar8" (binary_expression "param_1 + local_30" identifier + identifier) + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" if (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + (uint)bVar2 * 2 + 1)" ( (binary_expression "(int)puVar1 + (uint)bVar2 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar2 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" { (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar2 = *(byte *)(*pp_Var4 + bVar2);" (assignment_expression "bVar2 = *(byte *)(*pp_Var4 + bVar2)" identifier = (pointer_expression "*(byte *)(*pp_Var4 + bVar2)" * (cast_expression "(byte *)(*pp_Var4 + bVar2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pp_Var4 + bVar2)" ( (binary_expression "*pp_Var4 + bVar2" (pointer_expression "*pp_Var4" * identifier) + identifier) ))))) ;) })) (if_statement "if (bVar6 <= bVar2) break;" if (parenthesized_expression "(bVar6 <= bVar2)" ( (binary_expression "bVar6 <= bVar2" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "local_28 = uVar7 - local_30;" (assignment_expression "local_28 = uVar7 - local_30" identifier = (binary_expression "uVar7 - local_30" identifier - identifier)) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "uVar5 = uVar7 + 1;" (assignment_expression "uVar5 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" identifier = identifier) ;) (if_statement "if (param_2 <= uVar7 + 1) goto LAB_0002f731;" if (parenthesized_expression "(param_2 <= uVar7 + 1)" ( (binary_expression "param_2 <= uVar7 + 1" identifier <= (binary_expression "uVar7 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_0002f731;" goto statement_identifier ;)) })) (if_statement "if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" if (parenthesized_expression "(bVar6 == bVar2)" ( (binary_expression "bVar6 == bVar2" identifier == identifier) )) (compound_statement "{\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }" { (if_statement "if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }" if (parenthesized_expression "(iVar8 == local_28)" ( (binary_expression "iVar8 == local_28" identifier == identifier) )) (compound_statement "{\n        iVar8 = 1;\n        local_3c = uVar7;\n      }" { (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" identifier = identifier) ;) }) (else_clause "else {\n        iVar8 = iVar8 + 1;\n      }" else (compound_statement "{\n        iVar8 = iVar8 + 1;\n      }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" else (compound_statement "{\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" { (expression_statement "local_30 = local_3c;" (assignment_expression "local_30 = local_3c" identifier = identifier) ;) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) }))) })) (labeled_statement "LAB_0002f731:\n  uVar5 = local_34 + 1;" statement_identifier : (expression_statement "uVar5 = local_34 + 1;" (assignment_expression "uVar5 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;)) (if_statement "if (local_34 + 1 <= local_30 + 1) {\n    *param_3 = local_28;\n    uVar5 = local_30 + 1;\n  }" if (parenthesized_expression "(local_34 + 1 <= local_30 + 1)" ( (binary_expression "local_34 + 1 <= local_30 + 1" (binary_expression "local_34 + 1" identifier + number_literal) <= (binary_expression "local_30 + 1" identifier + number_literal)) )) (compound_statement "{\n    *param_3 = local_28;\n    uVar5 = local_30 + 1;\n  }" { (expression_statement "*param_3 = local_28;" (assignment_expression "*param_3 = local_28" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "uVar5 = local_30 + 1;" (assignment_expression "uVar5 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) })) (return_statement "return uVar5;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + IDENT)) , (binary_expression (binary_expression IDENT + IDENT) < IDENT)) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (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 = LIT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + IDENT)) , (binary_expression (binary_expression IDENT + IDENT) < IDENT)) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) <= (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (return_statement return IDENT ;) })))
(function_definition "uint __regparm3 FUN_0002f5a0(int param_1,uint param_2,int *param_3)\n\n{\n  ushort *puVar1;\n  byte bVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  uint uVar5;\n  byte bVar6;\n  uint uVar7;\n  int iVar8;\n  uint local_3c;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar8 = 1;\n  local_2c = 1;\n  local_3c = 0;\n  local_34 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f679:\n  local_28 = 1;\n  iVar8 = 1;\n  local_3c = 0;\n  *param_3 = local_2c;\n  local_30 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f731:\n  uVar5 = local_34 + 1;\n  if (local_34 + 1 <= local_30 + 1) {\n    *param_3 = local_28;\n    uVar5 = local_30 + 1;\n  }\n  return uVar5;\n}" (type_identifier "uint") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0002f5a0(int param_1,uint param_2,int *param_3)" (identifier "FUN_0002f5a0") (parameter_list "(int param_1,uint param_2,int *param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  ushort *puVar1;\n  byte bVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  uint uVar5;\n  byte bVar6;\n  uint uVar7;\n  int iVar8;\n  uint local_3c;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar8 = 1;\n  local_2c = 1;\n  local_3c = 0;\n  local_34 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f679:\n  local_28 = 1;\n  iVar8 = 1;\n  local_3c = 0;\n  *param_3 = local_2c;\n  local_30 = 0xffffffff;\n  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }\nLAB_0002f731:\n  uVar5 = local_34 + 1;\n  if (local_34 + 1 <= local_30 + 1) {\n    *param_3 = local_28;\n    uVar5 = local_30 + 1;\n  }\n  return uVar5;\n}" ({ "{") (declaration "ushort *puVar1;" (type_identifier "ushort") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "ushort **ppuVar3;" (type_identifier "ushort") (pointer_declarator "**ppuVar3" (* "*") (pointer_declarator "*ppuVar3" (* "*") (identifier "ppuVar3"))) (; ";")) (declaration "__int32_t **pp_Var4;" (type_identifier "__int32_t") (pointer_declarator "**pp_Var4" (* "*") (pointer_declarator "*pp_Var4" (* "*") (identifier "pp_Var4"))) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "byte bVar6;" (type_identifier "byte") (identifier "bVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "uint local_3c;" (type_identifier "uint") (identifier "local_3c") (; ";")) (declaration "uint local_34;" (type_identifier "uint") (identifier "local_34") (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" (identifier "iVar8") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_2c = 1;" (assignment_expression "local_2c = 1" (identifier "local_2c") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34 = 0xffffffff;" (assignment_expression "local_34 = 0xffffffff" (identifier "local_34") (= "=") (number_literal "0xffffffff")) (; ";")) (while_statement "while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" (while "while") (parenthesized_expression "(uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2)" (( "(") (comma_expression "uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2" (assignment_expression "uVar5 = iVar8 + local_3c" (identifier "uVar5") (= "=") (binary_expression "iVar8 + local_3c" (identifier "iVar8") (+ "+") (identifier "local_3c"))) (, ",") (binary_expression "iVar8 + local_3c < param_2" (binary_expression "iVar8 + local_3c" (identifier "iVar8") (+ "+") (identifier "local_3c")) (< "<") (identifier "param_2"))) () ")")) (compound_statement "{\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" ({ "{") (while_statement "while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_34 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar2 <= bVar6) break;\n      local_2c = uVar7 - local_34;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f679;\n    }" ({ "{") (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" (identifier "uVar7") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "ppuVar3 = __ctype_b_loc();" (assignment_expression "ppuVar3 = __ctype_b_loc()" (identifier "ppuVar3") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar1 = *ppuVar3;" (assignment_expression "puVar1 = *ppuVar3" (identifier "puVar1") (= "=") (pointer_expression "*ppuVar3" (* "*") (identifier "ppuVar3"))) (; ";")) (expression_statement "bVar6 = *(byte *)(param_1 + uVar7);" (assignment_expression "bVar6 = *(byte *)(param_1 + uVar7)" (identifier "bVar6") (= "=") (pointer_expression "*(byte *)(param_1 + uVar7)" (* "*") (cast_expression "(byte *)(param_1 + uVar7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + uVar7)" (( "(") (binary_expression "param_1 + uVar7" (identifier "param_1") (+ "+") (identifier "uVar7")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + (uint)bVar6 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + (uint)bVar6 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar6 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "(uint)bVar6 * 2" (cast_expression "(uint)bVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar6")) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" ({ "{") (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" (identifier "pp_Var4") (= "=") (call_expression "__ctype_tolower_loc()" (identifier "__ctype_tolower_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar6 = *(byte *)(*pp_Var4 + bVar6);" (assignment_expression "bVar6 = *(byte *)(*pp_Var4 + bVar6)" (identifier "bVar6") (= "=") (pointer_expression "*(byte *)(*pp_Var4 + bVar6)" (* "*") (cast_expression "(byte *)(*pp_Var4 + bVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*pp_Var4 + bVar6)" (( "(") (binary_expression "*pp_Var4 + bVar6" (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) (+ "+") (identifier "bVar6")) () ")"))))) (; ";")) (} "}"))) (expression_statement "bVar2 = *(byte *)(param_1 + local_34 + iVar8);" (assignment_expression "bVar2 = *(byte *)(param_1 + local_34 + iVar8)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(param_1 + local_34 + iVar8)" (* "*") (cast_expression "(byte *)(param_1 + local_34 + iVar8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + local_34 + iVar8)" (( "(") (binary_expression "param_1 + local_34 + iVar8" (binary_expression "param_1 + local_34" (identifier "param_1") (+ "+") (identifier "local_34")) (+ "+") (identifier "iVar8")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + (uint)bVar2 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + (uint)bVar2 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar2 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" ({ "{") (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" (identifier "pp_Var4") (= "=") (call_expression "__ctype_tolower_loc()" (identifier "__ctype_tolower_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar2 = *(byte *)(*pp_Var4 + bVar2);" (assignment_expression "bVar2 = *(byte *)(*pp_Var4 + bVar2)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(*pp_Var4 + bVar2)" (* "*") (cast_expression "(byte *)(*pp_Var4 + bVar2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*pp_Var4 + bVar2)" (( "(") (binary_expression "*pp_Var4 + bVar2" (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) (+ "+") (identifier "bVar2")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (bVar2 <= bVar6) break;" (if "if") (parenthesized_expression "(bVar2 <= bVar6)" (( "(") (binary_expression "bVar2 <= bVar6" (identifier "bVar2") (<= "<=") (identifier "bVar6")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_2c = uVar7 - local_34;" (assignment_expression "local_2c = uVar7 - local_34" (identifier "local_2c") (= "=") (binary_expression "uVar7 - local_34" (identifier "uVar7") (- "-") (identifier "local_34"))) (; ";")) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" (identifier "iVar8") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar5 = uVar7 + 1;" (assignment_expression "uVar5 = uVar7 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" (identifier "local_3c") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (param_2 <= uVar7 + 1) goto LAB_0002f679;" (if "if") (parenthesized_expression "(param_2 <= uVar7 + 1)" (( "(") (binary_expression "param_2 <= uVar7 + 1" (identifier "param_2") (<= "<=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) () ")")) (goto_statement "goto LAB_0002f679;" (goto "goto") (statement_identifier "LAB_0002f679") (; ";"))) (} "}"))) (if_statement "if (bVar6 == bVar2) {\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" (if "if") (parenthesized_expression "(bVar6 == bVar2)" (( "(") (binary_expression "bVar6 == bVar2" (identifier "bVar6") (== "==") (identifier "bVar2")) () ")")) (compound_statement "{\n      if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }" ({ "{") (if_statement "if (iVar8 == local_2c) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }" (if "if") (parenthesized_expression "(iVar8 == local_2c)" (( "(") (binary_expression "iVar8 == local_2c" (identifier "iVar8") (== "==") (identifier "local_2c")) () ")")) (compound_statement "{\n        iVar8 = 1;\n        local_3c = uVar7;\n      }" ({ "{") (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" (identifier "iVar8") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" (identifier "local_3c") (= "=") (identifier "uVar7")) (; ";")) (} "}")) (else_clause "else {\n        iVar8 = iVar8 + 1;\n      }" (else "else") (compound_statement "{\n        iVar8 = iVar8 + 1;\n      }" ({ "{") (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" (else "else") (compound_statement "{\n      local_34 = local_3c;\n      local_2c = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" ({ "{") (expression_statement "local_34 = local_3c;" (assignment_expression "local_34 = local_3c" (identifier "local_34") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "local_2c = 1;" (assignment_expression "local_2c = 1" (identifier "local_2c") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" (identifier "iVar8") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" (identifier "local_3c") (= "=") (binary_expression "local_3c + 1" (identifier "local_3c") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_0002f679:\n  local_28 = 1;" (statement_identifier "LAB_0002f679") (: ":") (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" (identifier "local_28") (= "=") (number_literal "1")) (; ";"))) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" (identifier "iVar8") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_3 = local_2c;" (assignment_expression "*param_3 = local_2c" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "local_2c")) (; ";")) (expression_statement "local_30 = 0xffffffff;" (assignment_expression "local_30 = 0xffffffff" (identifier "local_30") (= "=") (number_literal "0xffffffff")) (; ";")) (while_statement "while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" (while "while") (parenthesized_expression "(uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2)" (( "(") (comma_expression "uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2" (assignment_expression "uVar5 = iVar8 + local_3c" (identifier "uVar5") (= "=") (binary_expression "iVar8 + local_3c" (identifier "iVar8") (+ "+") (identifier "local_3c"))) (, ",") (binary_expression "iVar8 + local_3c < param_2" (binary_expression "iVar8 + local_3c" (identifier "iVar8") (+ "+") (identifier "local_3c")) (< "<") (identifier "param_2"))) () ")")) (compound_statement "{\n    while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }\n    if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }\n  }" ({ "{") (while_statement "while( true ) {\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar7 = uVar5;\n      ppuVar3 = __ctype_b_loc();\n      puVar1 = *ppuVar3;\n      bVar6 = *(byte *)(param_1 + uVar7);\n      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }\n      bVar2 = *(byte *)(param_1 + local_30 + iVar8);\n      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }\n      if (bVar6 <= bVar2) break;\n      local_28 = uVar7 - local_30;\n      iVar8 = 1;\n      uVar5 = uVar7 + 1;\n      local_3c = uVar7;\n      if (param_2 <= uVar7 + 1) goto LAB_0002f731;\n    }" ({ "{") (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" (identifier "uVar7") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "ppuVar3 = __ctype_b_loc();" (assignment_expression "ppuVar3 = __ctype_b_loc()" (identifier "ppuVar3") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar1 = *ppuVar3;" (assignment_expression "puVar1 = *ppuVar3" (identifier "puVar1") (= "=") (pointer_expression "*ppuVar3" (* "*") (identifier "ppuVar3"))) (; ";")) (expression_statement "bVar6 = *(byte *)(param_1 + uVar7);" (assignment_expression "bVar6 = *(byte *)(param_1 + uVar7)" (identifier "bVar6") (= "=") (pointer_expression "*(byte *)(param_1 + uVar7)" (* "*") (cast_expression "(byte *)(param_1 + uVar7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + uVar7)" (( "(") (binary_expression "param_1 + uVar7" (identifier "param_1") (+ "+") (identifier "uVar7")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + (uint)bVar6 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + (uint)bVar6 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar6 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "(uint)bVar6 * 2" (cast_expression "(uint)bVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar6")) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar6 = *(byte *)(*pp_Var4 + bVar6);\n      }" ({ "{") (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" (identifier "pp_Var4") (= "=") (call_expression "__ctype_tolower_loc()" (identifier "__ctype_tolower_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar6 = *(byte *)(*pp_Var4 + bVar6);" (assignment_expression "bVar6 = *(byte *)(*pp_Var4 + bVar6)" (identifier "bVar6") (= "=") (pointer_expression "*(byte *)(*pp_Var4 + bVar6)" (* "*") (cast_expression "(byte *)(*pp_Var4 + bVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*pp_Var4 + bVar6)" (( "(") (binary_expression "*pp_Var4 + bVar6" (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) (+ "+") (identifier "bVar6")) () ")"))))) (; ";")) (} "}"))) (expression_statement "bVar2 = *(byte *)(param_1 + local_30 + iVar8);" (assignment_expression "bVar2 = *(byte *)(param_1 + local_30 + iVar8)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(param_1 + local_30 + iVar8)" (* "*") (cast_expression "(byte *)(param_1 + local_30 + iVar8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + local_30 + iVar8)" (( "(") (binary_expression "param_1 + local_30 + iVar8" (binary_expression "param_1 + local_30" (identifier "param_1") (+ "+") (identifier "local_30")) (+ "+") (identifier "iVar8")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + (uint)bVar2 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + (uint)bVar2 * 2 + 1" (binary_expression "(int)puVar1 + (uint)bVar2 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pp_Var4 = __ctype_tolower_loc();\n        bVar2 = *(byte *)(*pp_Var4 + bVar2);\n      }" ({ "{") (expression_statement "pp_Var4 = __ctype_tolower_loc();" (assignment_expression "pp_Var4 = __ctype_tolower_loc()" (identifier "pp_Var4") (= "=") (call_expression "__ctype_tolower_loc()" (identifier "__ctype_tolower_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar2 = *(byte *)(*pp_Var4 + bVar2);" (assignment_expression "bVar2 = *(byte *)(*pp_Var4 + bVar2)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(*pp_Var4 + bVar2)" (* "*") (cast_expression "(byte *)(*pp_Var4 + bVar2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*pp_Var4 + bVar2)" (( "(") (binary_expression "*pp_Var4 + bVar2" (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) (+ "+") (identifier "bVar2")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (bVar6 <= bVar2) break;" (if "if") (parenthesized_expression "(bVar6 <= bVar2)" (( "(") (binary_expression "bVar6 <= bVar2" (identifier "bVar6") (<= "<=") (identifier "bVar2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_28 = uVar7 - local_30;" (assignment_expression "local_28 = uVar7 - local_30" (identifier "local_28") (= "=") (binary_expression "uVar7 - local_30" (identifier "uVar7") (- "-") (identifier "local_30"))) (; ";")) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" (identifier "iVar8") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar5 = uVar7 + 1;" (assignment_expression "uVar5 = uVar7 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" (identifier "local_3c") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (param_2 <= uVar7 + 1) goto LAB_0002f731;" (if "if") (parenthesized_expression "(param_2 <= uVar7 + 1)" (( "(") (binary_expression "param_2 <= uVar7 + 1" (identifier "param_2") (<= "<=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) () ")")) (goto_statement "goto LAB_0002f731;" (goto "goto") (statement_identifier "LAB_0002f731") (; ";"))) (} "}"))) (if_statement "if (bVar6 == bVar2) {\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }\n    else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" (if "if") (parenthesized_expression "(bVar6 == bVar2)" (( "(") (binary_expression "bVar6 == bVar2" (identifier "bVar6") (== "==") (identifier "bVar2")) () ")")) (compound_statement "{\n      if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }\n    }" ({ "{") (if_statement "if (iVar8 == local_28) {\n        iVar8 = 1;\n        local_3c = uVar7;\n      }\n      else {\n        iVar8 = iVar8 + 1;\n      }" (if "if") (parenthesized_expression "(iVar8 == local_28)" (( "(") (binary_expression "iVar8 == local_28" (identifier "iVar8") (== "==") (identifier "local_28")) () ")")) (compound_statement "{\n        iVar8 = 1;\n        local_3c = uVar7;\n      }" ({ "{") (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" (identifier "iVar8") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" (identifier "local_3c") (= "=") (identifier "uVar7")) (; ";")) (} "}")) (else_clause "else {\n        iVar8 = iVar8 + 1;\n      }" (else "else") (compound_statement "{\n        iVar8 = iVar8 + 1;\n      }" ({ "{") (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" (else "else") (compound_statement "{\n      local_30 = local_3c;\n      local_28 = 1;\n      iVar8 = 1;\n      local_3c = local_3c + 1;\n    }" ({ "{") (expression_statement "local_30 = local_3c;" (assignment_expression "local_30 = local_3c" (identifier "local_30") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" (identifier "local_28") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" (identifier "iVar8") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" (identifier "local_3c") (= "=") (binary_expression "local_3c + 1" (identifier "local_3c") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_0002f731:\n  uVar5 = local_34 + 1;" (statement_identifier "LAB_0002f731") (: ":") (expression_statement "uVar5 = local_34 + 1;" (assignment_expression "uVar5 = local_34 + 1" (identifier "uVar5") (= "=") (binary_expression "local_34 + 1" (identifier "local_34") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if (local_34 + 1 <= local_30 + 1) {\n    *param_3 = local_28;\n    uVar5 = local_30 + 1;\n  }" (if "if") (parenthesized_expression "(local_34 + 1 <= local_30 + 1)" (( "(") (binary_expression "local_34 + 1 <= local_30 + 1" (binary_expression "local_34 + 1" (identifier "local_34") (+ "+") (number_literal "1")) (<= "<=") (binary_expression "local_30 + 1" (identifier "local_30") (+ "+") (number_literal "1"))) () ")")) (compound_statement "{\n    *param_3 = local_28;\n    uVar5 = local_30 + 1;\n  }" ({ "{") (expression_statement "*param_3 = local_28;" (assignment_expression "*param_3 = local_28" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "uVar5 = local_30 + 1;" (assignment_expression "uVar5 = local_30 + 1" (identifier "uVar5") (= "=") (binary_expression "local_30 + 1" (identifier "local_30") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (return_statement "return uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}")))

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

size_t __regparm3 function_1(type_1 *needle,size_t var_3,size_t *period)

{
  type_2 *puVar1;
  type_3 var_8;
  type_2 **ppuVar3;
  type_4 **pp_Var4;
  type_5 uVar5;
  type_3 var_6;
  type_5 var_9;
  size_t var_1;
  type_5 var_2;
  type_5 var_7;
  type_5 var_11;
  size_t var_10;
  size_t var_12;
  
  var_1 = 1;
  var_10 = 1;
  var_2 = 0;
  var_7 = 0xffffffff;
  while (uVar5 = var_1 + var_2, var_1 + var_2 < var_3) {
    while( true ) {
      var_9 = uVar5;
      ppuVar3 = var_4();
      puVar1 = *ppuVar3;
      var_6 = needle[var_9];
      if ((*(type_3 *)((int)puVar1 + (type_5)var_6 * 2 + 1) & 1) != 0) {
        pp_Var4 = var_5();
        var_6 = *(type_3 *)(*pp_Var4 + var_6);
      }
      var_8 = needle[var_1 + var_7];
      if ((*(type_3 *)((int)puVar1 + (type_5)var_8 * 2 + 1) & 1) != 0) {
        pp_Var4 = var_5();
        var_8 = *(type_3 *)(*pp_Var4 + var_8);
      }
      if (var_8 <= var_6) break;
      var_10 = var_9 - var_7;
      var_1 = 1;
      uVar5 = var_9 + 1;
      var_2 = var_9;
      if (var_3 <= var_9 + 1) goto LAB_0002f679;
    }
    if (var_6 == var_8) {
      if (var_1 == var_10) {
        var_1 = 1;
        var_2 = var_9;
      }
      else {
        var_1 = var_1 + 1;
      }
    }
    else {
      var_7 = var_2;
      var_10 = 1;
      var_1 = 1;
      var_2 = var_2 + 1;
    }
  }
LAB_0002f679:
  var_12 = 1;
  var_1 = 1;
  var_2 = 0;
  *period = var_10;
  var_11 = 0xffffffff;
  while (uVar5 = var_1 + var_2, var_1 + var_2 < var_3) {
    while( true ) {
      var_9 = uVar5;
      ppuVar3 = var_4();
      puVar1 = *ppuVar3;
      var_6 = needle[var_9];
      if ((*(type_3 *)((int)puVar1 + (type_5)var_6 * 2 + 1) & 1) != 0) {
        pp_Var4 = var_5();
        var_6 = *(type_3 *)(*pp_Var4 + var_6);
      }
      var_8 = needle[var_1 + var_11];
      if ((*(type_3 *)((int)puVar1 + (type_5)var_8 * 2 + 1) & 1) != 0) {
        pp_Var4 = var_5();
        var_8 = *(type_3 *)(*pp_Var4 + var_8);
      }
      if (var_6 <= var_8) break;
      var_12 = var_9 - var_11;
      var_1 = 1;
      uVar5 = var_9 + 1;
      var_2 = var_9;
      if (var_3 <= var_9 + 1) goto LAB_0002f731;
    }
    if (var_6 == var_8) {
      if (var_1 == var_12) {
        var_1 = 1;
        var_2 = var_9;
      }
      else {
        var_1 = var_1 + 1;
      }
    }
    else {
      var_11 = var_2;
      var_12 = 1;
      var_1 = 1;
      var_2 = var_2 + 1;
    }
  }
LAB_0002f731:
  uVar5 = var_7 + 1;
  if (var_7 + 1 <= var_11 + 1) {
    *period = var_12;
    uVar5 = var_11 + 1;
  }
  return uVar5;
}


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

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

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

{
  ushort *puVar1;
  byte bVar2;
  ushort **ppuVar3;
  __int32_t **pp_Var4;
  uint uVar5;
  byte bVar6;
  uint uVar7;
  int iVar8;
  uint local_3c;
  uint local_34;
  uint local_30;
  int local_2c;
  int local_28;
  
  iVar8 = 1;
  local_2c = 1;
  local_3c = 0;
  local_34 = 0xffffffff;
  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {
    while( true ) {
      uVar7 = uVar5;
      ppuVar3 = __ctype_b_loc();
      puVar1 = *ppuVar3;
      bVar6 = *(byte *)(param_1 + uVar7);
      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {
        pp_Var4 = __ctype_tolower_loc();
        bVar6 = *(byte *)(*pp_Var4 + bVar6);
      }
      bVar2 = *(byte *)(param_1 + local_34 + iVar8);
      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {
        pp_Var4 = __ctype_tolower_loc();
        bVar2 = *(byte *)(*pp_Var4 + bVar2);
      }
      if (bVar2 <= bVar6) break;
      local_2c = uVar7 - local_34;
      iVar8 = 1;
      uVar5 = uVar7 + 1;
      local_3c = uVar7;
      if (param_2 <= uVar7 + 1) goto LAB_0002f679;
    }
    if (bVar6 == bVar2) {
      if (iVar8 == local_2c) {
        iVar8 = 1;
        local_3c = uVar7;
      }
      else {
        iVar8 = iVar8 + 1;
      }
    }
    else {
      local_34 = local_3c;
      local_2c = 1;
      iVar8 = 1;
      local_3c = local_3c + 1;
    }
  }
LAB_0002f679:
  local_28 = 1;
  iVar8 = 1;
  local_3c = 0;
  *param_3 = local_2c;
  local_30 = 0xffffffff;
  while (uVar5 = iVar8 + local_3c, iVar8 + local_3c < param_2) {
    while( true ) {
      uVar7 = uVar5;
      ppuVar3 = __ctype_b_loc();
      puVar1 = *ppuVar3;
      bVar6 = *(byte *)(param_1 + uVar7);
      if ((*(byte *)((int)puVar1 + (uint)bVar6 * 2 + 1) & 1) != 0) {
        pp_Var4 = __ctype_tolower_loc();
        bVar6 = *(byte *)(*pp_Var4 + bVar6);
      }
      bVar2 = *(byte *)(param_1 + local_30 + iVar8);
      if ((*(byte *)((int)puVar1 + (uint)bVar2 * 2 + 1) & 1) != 0) {
        pp_Var4 = __ctype_tolower_loc();
        bVar2 = *(byte *)(*pp_Var4 + bVar2);
      }
      if (bVar6 <= bVar2) break;
      local_28 = uVar7 - local_30;
      iVar8 = 1;
      uVar5 = uVar7 + 1;
      local_3c = uVar7;
      if (param_2 <= uVar7 + 1) goto LAB_0002f731;
    }
    if (bVar6 == bVar2) {
      if (iVar8 == local_28) {
        iVar8 = 1;
        local_3c = uVar7;
      }
      else {
        iVar8 = iVar8 + 1;
      }
    }
    else {
      local_30 = local_3c;
      local_28 = 1;
      iVar8 = 1;
      local_3c = local_3c + 1;
    }
  }
LAB_0002f731:
  uVar5 = local_34 + 1;
  if (local_34 + 1 <= local_30 + 1) {
    *param_3 = local_28;
    uVar5 = local_30 + 1;
  }
  return uVar5;
}

