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

char * __regparm3
two_way_long_needle(uchar *haystack,size_t haystack_len,uchar *needle,size_t needle_len)

{
  ushort *puVar1;
  size_t *psVar2;
  uchar *puVar3;
  ushort **ppuVar4;
  __int32_t **pp_Var5;
  int iVar6;
  void *pvVar7;
  byte *pbVar8;
  size_t sVar9;
  uint uVar10;
  uint uVar11;
  size_t sVar12;
  uint uVar13;
  uint uVar14;
  int in_GS_OFFSET;
  uint local_458;
  uint local_450;
  uint local_444;
  int local_440;
  uint local_43c;
  size_t period;
  size_t shift_table [256];
  size_t local_20 [3];
  undefined4 uStack_14;
  
  uStack_14 = 0x59beb;
  local_20[0] = *(size_t *)(in_GS_OFFSET + 0x14);
  if (needle_len < 3) {
    local_43c = needle_len - 1;
    period = 1;
  }
  else {
    local_43c = critical_factorization(needle,needle_len,&period);
  }
  sVar12 = period;
  psVar2 = shift_table;
  do {
    *psVar2 = needle_len;
    psVar2 = psVar2 + 1;
  } while (local_20 != psVar2);
  puVar3 = needle + period;
  if (needle_len == 0) {
    iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);
    if (iVar6 == 0) {
LAB_00059e30:
      puVar3 = (uchar *)0x0;
LAB_00059e32:
      if (local_20[0] != *(size_t *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
        __stack_chk_fail_local();
      }
      return (char *)puVar3;
    }
    local_458 = 0xffffffff;
  }
  else {
    ppuVar4 = __ctype_b_loc();
    local_458 = needle_len - 1;
    puVar1 = *ppuVar4;
    pbVar8 = needle;
    uVar10 = local_458;
    do {
      while (uVar11 = (uint)*pbVar8, (*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) == 0) {
        shift_table[uVar11] = uVar10;
        uVar10 = uVar10 - 1;
        pbVar8 = pbVar8 + 1;
        if (uVar10 == 0xffffffff) goto LAB_00059cb7;
      }
      pp_Var5 = __ctype_tolower_loc();
      pbVar8 = pbVar8 + 1;
      shift_table[(*pp_Var5)[uVar11]] = uVar10;
      uVar10 = uVar10 - 1;
    } while (uVar10 != 0xffffffff);
LAB_00059cb7:
    iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);
    if (iVar6 == 0) {
      local_444 = 0;
      local_440 = 0;
LAB_00059f1f:
      do {
        sVar9 = local_440 + needle_len;
        pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len);
        if ((pvVar7 != (void *)0x0) || (sVar9 == 0)) goto LAB_00059e30;
        uVar10 = (uint)haystack[sVar9 - 1];
        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {
          pp_Var5 = __ctype_tolower_loc();
          uVar10 = (*pp_Var5)[uVar10];
        }
        uVar10 = shift_table[uVar10];
        haystack_len = sVar9;
        if (uVar10 == 0) {
          uVar10 = local_444;
          if (local_444 <= local_43c) {
            uVar10 = local_43c;
          }
          if (uVar10 < local_458) {
            do {
              uVar11 = (uint)needle[uVar10];
              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {
                pp_Var5 = __ctype_tolower_loc();
                uVar11 = (*pp_Var5)[uVar11];
              }
              uVar13 = (uint)haystack[uVar10 + local_440];
              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {
                pp_Var5 = __ctype_tolower_loc();
                uVar13 = (*pp_Var5)[uVar13];
              }
              if (uVar11 != uVar13) {
                local_444 = 0;
                local_440 = local_440 + (1 - local_43c) + uVar10;
                goto LAB_00059f1f;
              }
              uVar10 = uVar10 + 1;
            } while (uVar10 != local_458);
          }
          uVar10 = local_43c;
          local_450 = local_43c;
          if (local_444 < local_43c) {
            do {
              uVar13 = uVar10 - 1;
              uVar11 = (uint)needle[uVar13];
              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {
                pp_Var5 = __ctype_tolower_loc();
                uVar11 = (*pp_Var5)[uVar11];
              }
              uVar14 = (uint)haystack[uVar13 + local_440];
              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {
                pp_Var5 = __ctype_tolower_loc();
                uVar14 = (*pp_Var5)[uVar14];
              }
              local_450 = uVar10;
            } while ((uVar11 == uVar14) &&
                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));
          }
          if (local_450 < local_444 + 1) {
            puVar3 = haystack + local_440;
            goto LAB_00059e32;
          }
          local_440 = local_440 + sVar12;
          local_444 = needle_len - sVar12;
        }
        else {
          if ((uVar10 < sVar12) && (local_444 != 0)) {
            uVar10 = needle_len - sVar12;
          }
          local_440 = local_440 + uVar10;
          local_444 = 0;
        }
      } while( true );
    }
  }
  local_444 = 0;
  uVar10 = needle_len - local_43c;
  if (needle_len - local_43c < local_43c) {
    uVar10 = local_43c;
  }
  period = uVar10 + 1;
LAB_00059d28:
  do {
    sVar12 = local_444 + needle_len;
    pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar12 - haystack_len);
    if ((sVar12 == 0) || (pvVar7 != (void *)0x0)) goto LAB_00059e30;
    ppuVar4 = __ctype_b_loc();
    puVar1 = *ppuVar4;
    uVar11 = (uint)haystack[sVar12 - 1];
    if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {
      pp_Var5 = __ctype_tolower_loc();
      uVar11 = (*pp_Var5)[uVar11];
    }
    haystack_len = sVar12;
    if (shift_table[uVar11] == 0) {
      puVar3 = haystack + local_444;
      for (uVar11 = local_43c; uVar13 = local_43c, uVar11 < local_458; uVar11 = uVar11 + 1) {
        uVar13 = (uint)needle[uVar11];
        if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {
          pp_Var5 = __ctype_tolower_loc();
          uVar13 = (*pp_Var5)[uVar13];
        }
        uVar14 = (uint)puVar3[uVar11];
        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {
          pp_Var5 = __ctype_tolower_loc();
          uVar14 = (*pp_Var5)[uVar14];
        }
        if (uVar13 != uVar14) {
          local_444 = local_444 + (1 - local_43c) + uVar11;
          goto LAB_00059d28;
        }
      }
      do {
        uVar13 = uVar13 - 1;
        if (uVar13 == 0xffffffff) goto LAB_00059e32;
        uVar11 = (uint)needle[uVar13];
        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {
          pp_Var5 = __ctype_tolower_loc();
          uVar11 = (*pp_Var5)[uVar11];
        }
        uVar14 = (uint)puVar3[uVar13];
        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {
          pp_Var5 = __ctype_tolower_loc();
          uVar14 = (*pp_Var5)[uVar14];
        }
      } while (uVar11 == uVar14);
      local_444 = local_444 + uVar10 + 1;
    }
    else {
      local_444 = local_444 + shift_table[uVar11];
    }
  } while( true );
}



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

int __regparm3 FUN_00059be0(int param_1,int param_2,byte *param_3,uint param_4)

{
  ushort *puVar1;
  uint *puVar2;
  ushort **ppuVar3;
  __int32_t **pp_Var4;
  int iVar5;
  byte *pbVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  int in_GS_OFFSET;
  uint local_458;
  uint local_450;
  uint local_444;
  int local_440;
  uint local_43c;
  uint local_434;
  uint local_424;
  uint local_420 [256];
  uint local_20 [3];
  undefined4 uStack_14;
  
  uStack_14 = 0x59beb;
  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);
  if (param_4 < 3) {
    local_43c = param_4 - 1;
    local_434 = 1;
  }
  else {
    local_43c = FUN_00059940();
    local_434 = local_424;
  }
  puVar2 = local_420;
  do {
    *puVar2 = param_4;
    puVar2 = puVar2 + 1;
  } while (local_20 != puVar2);
  if (param_4 == 0) {
    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);
    if (iVar5 == 0) {
LAB_00059e30:
      local_440 = 0;
LAB_00059e32:
      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
        FUN_0005a8b0();
      }
      return local_440;
    }
    local_458 = 0xffffffff;
  }
  else {
    ppuVar3 = __ctype_b_loc();
    local_458 = param_4 - 1;
    puVar1 = *ppuVar3;
    pbVar6 = param_3;
    uVar7 = local_458;
    do {
      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {
        local_420[uVar8] = uVar7;
        uVar7 = uVar7 - 1;
        pbVar6 = pbVar6 + 1;
        if (uVar7 == 0xffffffff) goto LAB_00059cb7;
      }
      pp_Var4 = __ctype_tolower_loc();
      pbVar6 = pbVar6 + 1;
      local_420[(*pp_Var4)[uVar8]] = uVar7;
      uVar7 = uVar7 - 1;
    } while (uVar7 != 0xffffffff);
LAB_00059cb7:
    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);
    if (iVar5 == 0) {
      local_444 = 0;
      local_440 = 0;
LAB_00059f1f:
      do {
        iVar9 = local_440 + param_4;
        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);
        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;
        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);
        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {
          pp_Var4 = __ctype_tolower_loc();
          uVar7 = (*pp_Var4)[uVar7];
        }
        uVar7 = local_420[uVar7];
        param_2 = iVar9;
        if (uVar7 == 0) {
          uVar7 = local_444;
          if (local_444 <= local_43c) {
            uVar7 = local_43c;
          }
          if (uVar7 < local_458) {
            do {
              uVar8 = (uint)param_3[uVar7];
              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {
                pp_Var4 = __ctype_tolower_loc();
                uVar8 = (*pp_Var4)[uVar8];
              }
              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);
              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {
                pp_Var4 = __ctype_tolower_loc();
                uVar10 = (*pp_Var4)[uVar10];
              }
              if (uVar8 != uVar10) {
                local_444 = 0;
                local_440 = local_440 + (1 - local_43c) + uVar7;
                goto LAB_00059f1f;
              }
              uVar7 = uVar7 + 1;
            } while (uVar7 != local_458);
          }
          uVar7 = local_43c;
          local_450 = local_43c;
          if (local_444 < local_43c) {
            do {
              uVar10 = uVar7 - 1;
              uVar8 = (uint)param_3[uVar10];
              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {
                pp_Var4 = __ctype_tolower_loc();
                uVar8 = (*pp_Var4)[uVar8];
              }
              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);
              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {
                pp_Var4 = __ctype_tolower_loc();
                uVar11 = (*pp_Var4)[uVar11];
              }
              local_450 = uVar7;
            } while ((uVar8 == uVar11) &&
                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));
          }
          if (local_450 < local_444 + 1) {
            local_440 = param_1 + local_440;
            goto LAB_00059e32;
          }
          local_440 = local_440 + local_434;
          local_444 = param_4 - local_434;
        }
        else {
          if ((uVar7 < local_434) && (local_444 != 0)) {
            uVar7 = param_4 - local_434;
          }
          local_440 = local_440 + uVar7;
          local_444 = 0;
        }
      } while( true );
    }
  }
  local_444 = 0;
  uVar7 = param_4 - local_43c;
  if (param_4 - local_43c < local_43c) {
    uVar7 = local_43c;
  }
LAB_00059d28:
  do {
    iVar9 = local_444 + param_4;
    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);
    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;
    ppuVar3 = __ctype_b_loc();
    puVar1 = *ppuVar3;
    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);
    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {
      pp_Var4 = __ctype_tolower_loc();
      uVar8 = (*pp_Var4)[uVar8];
    }
    param_2 = iVar9;
    if (local_420[uVar8] == 0) {
      local_440 = param_1 + local_444;
      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {
        uVar10 = (uint)param_3[uVar8];
        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {
          pp_Var4 = __ctype_tolower_loc();
          uVar10 = (*pp_Var4)[uVar10];
        }
        uVar11 = (uint)*(byte *)(local_440 + uVar8);
        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {
          pp_Var4 = __ctype_tolower_loc();
          uVar11 = (*pp_Var4)[uVar11];
        }
        if (uVar10 != uVar11) {
          local_444 = local_444 + (1 - local_43c) + uVar8;
          goto LAB_00059d28;
        }
      }
      do {
        uVar10 = uVar10 - 1;
        if (uVar10 == 0xffffffff) goto LAB_00059e32;
        uVar8 = (uint)param_3[uVar10];
        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {
          pp_Var4 = __ctype_tolower_loc();
          uVar8 = (*pp_Var4)[uVar8];
        }
        uVar11 = (uint)*(byte *)(local_440 + uVar10);
        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {
          pp_Var4 = __ctype_tolower_loc();
          uVar11 = (*pp_Var4)[uVar11];
        }
      } while (uVar8 == uVar11);
      local_444 = local_444 + uVar7 + 1;
    }
    else {
      local_444 = local_444 + local_420[uVar8];
    }
  } while( true );
}


PUSH EBP
PUSH EDI
PUSH ESI
MOV ESI,EDX
PUSH EBX
CALL 0x00015680
ADD EBX,0x20fe5
SUB ESP,0x44c
MOV dword ptr [ESP + 0x8],EAX
MOV EBP,dword ptr [ESP + 0x460]
MOV EAX,ECX
MOV dword ptr [ESP],ECX
MOV ECX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x43c],ECX
XOR ECX,ECX
CMP EBP,0x2
JBE 0x0005a0bc
LEA ECX,[ESP + 0x38]
MOV EDX,EBP
CALL 0x00059940
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x28],EAX
LEA EAX,[ESP + 0x3c]
LEA EDX,[ESP + 0x43c]
LEA ESI,[ESI]
MOV dword ptr [EAX],EBP
ADD EAX,0x4
CMP EDX,EAX
JNZ 0x00059c48
MOV EAX,dword ptr [ESP]
ADD EAX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x10],EAX
TEST EBP,EBP
JZ 0x0005a0d8
CALL 0x00013b00
LEA ECX,[EBP + -0x1]
MOV EDX,dword ptr [ESP]
MOV dword ptr [ESP + 0x14],ESI
MOV EDI,dword ptr [EAX]
MOV dword ptr [ESP + 0x4],ECX
MOV ESI,ECX
MOV dword ptr [ESP + 0x460],EBP
MOV EBP,EDI
LEA ESI,[ESI]
MOVZX EDI,byte ptr [EDX]
TEST byte ptr [EBP + EDI*0x2 + 0x1],0x1
JZ 0x00059e18
MOV dword ptr [ESP + 0xc],EDX
CALL 0x00013af0
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX]
ADD EDX,0x1
MOV EAX,dword ptr [EAX + EDI*0x4]
MOV dword ptr [ESP + EAX*0x4 + 0x3c],ESI
SUB ESI,0x1
CMP ESI,-0x1
JNZ 0x00059c88
MOV ESI,dword ptr [ESP + 0x14]
MOV EDI,EBP
SUB ESP,0x4
MOV EBP,dword ptr [ESP + 0x464]
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x18]
PUSH dword ptr [ESP + 0xc]
CALL 0x000137c0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00059eca
MOV ECX,dword ptr [ESP + 0x20]
MOV EAX,EBP
MOV dword ptr [ESP + 0x18],0x0
MOV dword ptr [ESP + 0x460],EBP
SUB EAX,ECX
CMP EAX,ECX
CMOVC EAX,ECX
ADD EAX,0x1
MOV dword ptr [ESP + 0x28],EAX
MOV dword ptr [ESP + 0x38],EAX
LEA EAX,[ECX + -0x1]
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,0x1
SUB EAX,ECX
MOV dword ptr [ESP + 0x1c],EAX
JMP 0x00059d28
ADD dword ptr [ESP + 0x18],EAX
MOV ESI,dword ptr [ESP + 0x14]
MOV EDI,dword ptr [ESP + 0x18]
ADD EDI,dword ptr [ESP + 0x460]
SUB ESP,0x4
MOV EAX,EDI
MOV dword ptr [ESP + 0x18],EDI
SUB EAX,ESI
PUSH EAX
PUSH 0x0
ADD ESI,dword ptr [ESP + 0x14]
PUSH ESI
CALL 0x0005a700
ADD ESP,0x10
TEST EDI,EDI
JZ 0x00059e30
TEST EAX,EAX
JNZ 0x00059e30
CALL 0x00013b00
MOV ECX,dword ptr [ESP + 0x14]
MOV EBP,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x8]
MOVZX ESI,byte ptr [EAX + ECX*0x1 + -0x1]
MOV EAX,ESI
TEST byte ptr [EBP + ESI*0x2 + 0x1],0x1
JZ 0x00059d85
CALL 0x00013af0
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + ESI*0x4]
MOV EAX,dword ptr [ESP + EAX*0x4 + 0x3c]
TEST EAX,EAX
JNZ 0x00059d20
MOV ECX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x20]
ADD ECX,EDX
MOV dword ptr [ESP + 0xc],ECX
MOV ECX,dword ptr [ESP + 0x4]
MOV ESI,EAX
CMP EAX,ECX
JC 0x00059dbd
JMP 0x00059e58
ADD ESI,0x1
CMP ESI,dword ptr [ESP + 0x4]
JNC 0x00059e58
MOV EAX,dword ptr [ESP]
MOVZX EDI,byte ptr [EAX + ESI*0x1]
MOV EDX,EDI
TEST byte ptr [EBP + EDI*0x2 + 0x1],0x1
JZ 0x00059dd7
CALL 0x00013af0
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EAX + EDI*0x4]
MOV EAX,dword ptr [ESP + 0xc]
MOVZX EDI,byte ptr [EAX + ESI*0x1]
MOV EAX,EDI
TEST byte ptr [EBP + EDI*0x2 + 0x1],0x1
JZ 0x00059dfa
MOV dword ptr [ESP + 0x10],EDX
CALL 0x00013af0
MOV EDX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + EDI*0x4]
CMP EDX,EAX
JZ 0x00059db0
MOV EAX,dword ptr [ESP + 0x18]
ADD EAX,dword ptr [ESP + 0x1c]
ADD EAX,ESI
MOV dword ptr [ESP + 0x18],EAX
JMP 0x00059d24
MOV dword ptr [ESP + EDI*0x4 + 0x3c],ESI
SUB ESI,0x1
ADD EDX,0x1
CMP ESI,-0x1
JNZ 0x00059c88
JMP 0x00059cb7
XOR EAX,EAX
MOV ECX,dword ptr [ESP + 0x43c]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x0005a11a
ADD ESP,0x44c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP dword ptr [ESP + 0x24],-0x1
JZ 0x0005a111
MOV ESI,dword ptr [ESP + 0x24]
JMP 0x00059e7c
SUB ESI,0x1
CMP ESI,-0x1
JZ 0x0005a111
MOV EAX,dword ptr [ESP]
MOVZX EDI,byte ptr [EAX + ESI*0x1]
MOV EDX,EDI
TEST byte ptr [EBP + EDI*0x2 + 0x1],0x1
JZ 0x00059e96
CALL 0x00013af0
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EAX + EDI*0x4]
MOV EAX,dword ptr [ESP + 0xc]
MOVZX EDI,byte ptr [EAX + ESI*0x1]
MOV EAX,EDI
TEST byte ptr [EBP + EDI*0x2 + 0x1],0x1
JZ 0x00059eb9
MOV dword ptr [ESP + 0x10],EDX
CALL 0x00013af0
MOV EDX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + EDI*0x4]
CMP EDX,EAX
JZ 0x00059e70
MOV ECX,dword ptr [ESP + 0x28]
ADD dword ptr [ESP + 0x18],ECX
JMP 0x00059d24
MOV EAX,0x1
SUB EAX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x18],0x0
MOV dword ptr [ESP + 0x1c],0x0
MOV dword ptr [ESP + 0x2c],EAX
MOV dword ptr [ESP + 0x460],EBP
JMP 0x00059f1f
MOV ESI,dword ptr [ESP + 0x28]
CMP EAX,ESI
JNC 0x00059f0f
MOV EDX,dword ptr [ESP + 0x18]
TEST EDX,EDX
MOV EDX,dword ptr [ESP + 0x460]
SETNZ CL
SUB EDX,ESI
TEST CL,CL
CMOVNZ EAX,EDX
ADD dword ptr [ESP + 0x1c],EAX
MOV dword ptr [ESP + 0x18],0x0
MOV ESI,dword ptr [ESP + 0x14]
MOV EBP,dword ptr [ESP + 0x1c]
ADD EBP,dword ptr [ESP + 0x460]
SUB ESP,0x4
MOV EAX,EBP
MOV dword ptr [ESP + 0x18],EBP
SUB EAX,ESI
PUSH EAX
PUSH 0x0
ADD ESI,dword ptr [ESP + 0x14]
PUSH ESI
CALL 0x0005a700
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00059e30
TEST EBP,EBP
JZ 0x00059e30
MOV EAX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [ESP + 0x14]
MOVZX ESI,byte ptr [EAX + ECX*0x1 + -0x1]
MOV EAX,ESI
TEST byte ptr [EDI + ESI*0x2 + 0x1],0x1
JZ 0x00059f75
CALL 0x00013af0
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + ESI*0x4]
MOV EAX,dword ptr [ESP + EAX*0x4 + 0x3c]
TEST EAX,EAX
JNZ 0x00059ef0
MOV EAX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x1c]
CMP EAX,ESI
CMOVNC ESI,EAX
MOV EAX,dword ptr [ESP + 0x8]
LEA EBP,[EAX + ECX*0x1]
CMP ESI,dword ptr [ESP + 0x4]
JNC 0x0005a010
MOV dword ptr [ESP + 0xc],EBP
JMP 0x00059fb1
ADD ESI,0x1
CMP ESI,dword ptr [ESP + 0x4]
JZ 0x0005a010
MOV EAX,dword ptr [ESP]
MOVZX EBP,byte ptr [EAX + ESI*0x1]
MOV EDX,EBP
TEST byte ptr [EDI + EBP*0x2 + 0x1],0x1
JZ 0x00059fcb
CALL 0x00013af0
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EAX + EBP*0x4]
MOV EAX,dword ptr [ESP + 0xc]
MOVZX EBP,byte ptr [EAX + ESI*0x1]
MOV EAX,EBP
TEST byte ptr [EDI + EBP*0x2 + 0x1],0x1
JZ 0x00059fee
MOV dword ptr [ESP + 0x10],EDX
CALL 0x00013af0
MOV EDX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + EBP*0x4]
CMP EDX,EAX
JZ 0x00059fa8
MOV EAX,dword ptr [ESP + 0x1c]
ADD EAX,dword ptr [ESP + 0x2c]
MOV dword ptr [ESP + 0x18],0x0
ADD EAX,ESI
MOV dword ptr [ESP + 0x1c],EAX
JMP 0x00059f1b
MOV EAX,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0x1c]
LEA ESI,[EAX + -0x1]
LEA EBP,[ECX + EDX*0x1]
CMP EAX,dword ptr [ESP + 0x18]
JBE 0x0005a0b6
MOV dword ptr [ESP + 0x10],EBP
JMP 0x0005a043
LEA EAX,[ESI + -0x1]
CMP dword ptr [ESP + 0x18],ESI
JZ 0x0005a0b2
MOV ESI,EAX
LEA EAX,[ESI + 0x1]
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [ESP]
MOVZX EBP,byte ptr [EAX + ESI*0x1]
MOV EDX,EBP
TEST byte ptr [EDI + EBP*0x2 + 0x1],0x1
JZ 0x0005a064
CALL 0x00013af0
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EAX + EBP*0x4]
MOV EAX,dword ptr [ESP + 0x10]
MOVZX EBP,byte ptr [EAX + ESI*0x1]
MOV EAX,EBP
TEST byte ptr [EDI + EBP*0x2 + 0x1],0x1
JZ 0x0005a087
MOV dword ptr [ESP + 0x24],EDX
CALL 0x00013af0
MOV EDX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + EBP*0x4]
CMP EDX,EAX
JZ 0x0005a038
MOV EAX,dword ptr [ESP + 0x18]
ADD EAX,0x1
CMP EAX,dword ptr [ESP + 0xc]
JA 0x0005a104
MOV ECX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x460]
ADD dword ptr [ESP + 0x1c],ECX
SUB EAX,ECX
MOV dword ptr [ESP + 0x18],EAX
JMP 0x00059f1b
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0xc],EAX
JMP 0x0005a08b
LEA EAX,[EBP + -0x1]
MOV dword ptr [ESP + 0x38],0x1
MOV dword ptr [ESP + 0x20],EAX
MOV dword ptr [ESP + 0x28],0x1
JMP 0x00059c37
SUB ESP,0x4
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x18]
PUSH dword ptr [ESP + 0xc]
CALL 0x000137c0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00059e30
MOV dword ptr [ESP + 0x4],0xffffffff
JMP 0x00059ce3
MOV EAX,dword ptr [ESP + 0x8]
ADD EAX,dword ptr [ESP + 0x1c]
JMP 0x00059e32
MOV EAX,dword ptr [ESP + 0xc]
JMP 0x00059e32
CALL 0x0005a8b0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3 FUN_00059be0(int param_1,int param_2,byte *param_3,uint param_4)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int in_GS_OFFSET;\n  uint local_458;\n  uint local_450;\n  uint local_444;\n  int local_440;\n  uint local_43c;\n  uint local_434;\n  uint local_424;\n  uint local_420 [256];\n  uint local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x59beb;\n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  if (param_4 < 3) {\n    local_43c = param_4 - 1;\n    local_434 = 1;\n  }\n  else {\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }\n  puVar2 = local_420;\n  do {\n    *puVar2 = param_4;\n    puVar2 = puVar2 + 1;\n  } while (local_20 != puVar2);\n  if (param_4 == 0) {\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005a8b0();\n      }\n      return local_440;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }\n  local_444 = 0;\n  uVar7 = param_4 - local_43c;\n  if (param_4 - local_43c < local_43c) {\n    uVar7 = local_43c;\n  }\nLAB_00059d28:\n  do {\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  } while( true );\n}\n\n" comment (function_definition "int __regparm3 FUN_00059be0(int param_1,int param_2,byte *param_3,uint param_4)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int in_GS_OFFSET;\n  uint local_458;\n  uint local_450;\n  uint local_444;\n  int local_440;\n  uint local_43c;\n  uint local_434;\n  uint local_424;\n  uint local_420 [256];\n  uint local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x59beb;\n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  if (param_4 < 3) {\n    local_43c = param_4 - 1;\n    local_434 = 1;\n  }\n  else {\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }\n  puVar2 = local_420;\n  do {\n    *puVar2 = param_4;\n    puVar2 = puVar2 + 1;\n  } while (local_20 != puVar2);\n  if (param_4 == 0) {\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005a8b0();\n      }\n      return local_440;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }\n  local_444 = 0;\n  uVar7 = param_4 - local_43c;\n  if (param_4 - local_43c < local_43c) {\n    uVar7 = local_43c;\n  }\nLAB_00059d28:\n  do {\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  } while( true );\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00059be0(int param_1,int param_2,byte *param_3,uint param_4)" identifier (parameter_list "(int param_1,int param_2,byte *param_3,uint param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  ushort *puVar1;\n  uint *puVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int in_GS_OFFSET;\n  uint local_458;\n  uint local_450;\n  uint local_444;\n  int local_440;\n  uint local_43c;\n  uint local_434;\n  uint local_424;\n  uint local_420 [256];\n  uint local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x59beb;\n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  if (param_4 < 3) {\n    local_43c = param_4 - 1;\n    local_434 = 1;\n  }\n  else {\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }\n  puVar2 = local_420;\n  do {\n    *puVar2 = param_4;\n    puVar2 = puVar2 + 1;\n  } while (local_20 != puVar2);\n  if (param_4 == 0) {\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005a8b0();\n      }\n      return local_440;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }\n  local_444 = 0;\n  uVar7 = param_4 - local_43c;\n  if (param_4 - local_43c < local_43c) {\n    uVar7 = local_43c;\n  }\nLAB_00059d28:\n  do {\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  } while( true );\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * 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 "int iVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_458;" type_identifier identifier ;) (declaration "uint local_450;" type_identifier identifier ;) (declaration "uint local_444;" type_identifier identifier ;) (declaration "int local_440;" primitive_type identifier ;) (declaration "uint local_43c;" type_identifier identifier ;) (declaration "uint local_434;" type_identifier identifier ;) (declaration "uint local_424;" type_identifier identifier ;) (declaration "uint local_420 [256];" type_identifier (array_declarator "local_420 [256]" identifier [ number_literal ]) ;) (declaration "uint local_20 [3];" type_identifier (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x59beb;" (assignment_expression "uStack_14 = 0x59beb" identifier = number_literal) ;) (expression_statement "local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20[0] = *(uint *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(in_GS_OFFSET + 0x14)" * (cast_expression "(uint *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (param_4 < 3) {\n    local_43c = param_4 - 1;\n    local_434 = 1;\n  }\n  else {\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }" if (parenthesized_expression "(param_4 < 3)" ( (binary_expression "param_4 < 3" identifier < number_literal) )) (compound_statement "{\n    local_43c = param_4 - 1;\n    local_434 = 1;\n  }" { (expression_statement "local_43c = param_4 - 1;" (assignment_expression "local_43c = param_4 - 1" identifier = (binary_expression "param_4 - 1" identifier - number_literal)) ;) (expression_statement "local_434 = 1;" (assignment_expression "local_434 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }" else (compound_statement "{\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }" { (expression_statement "local_43c = FUN_00059940();" (assignment_expression "local_43c = FUN_00059940()" identifier = (call_expression "FUN_00059940()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_434 = local_424;" (assignment_expression "local_434 = local_424" identifier = identifier) ;) }))) (expression_statement "puVar2 = local_420;" (assignment_expression "puVar2 = local_420" identifier = identifier) ;) (do_statement "do {\n    *puVar2 = param_4;\n    puVar2 = puVar2 + 1;\n  } while (local_20 != puVar2);" do (compound_statement "{\n    *puVar2 = param_4;\n    puVar2 = puVar2 + 1;\n  }" { (expression_statement "*puVar2 = param_4;" (assignment_expression "*puVar2 = param_4" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_20 != puVar2)" ( (binary_expression "local_20 != puVar2" identifier != identifier) )) ;) (if_statement "if (param_4 == 0) {\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005a8b0();\n      }\n      return local_440;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005a8b0();\n      }\n      return local_440;\n    }\n    local_458 = 0xffffffff;\n  }" { (expression_statement "iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);" (assignment_expression "iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c)" identifier = (call_expression "strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c)" identifier (argument_list "((char *)param_3,(char *)(param_3 + local_434),local_43c)" ( (cast_expression "(char *)param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)(param_3 + local_434)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + local_434)" ( (binary_expression "param_3 + local_434" identifier + identifier) ))) , identifier )))) ;) (if_statement "if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005a8b0();\n      }\n      return local_440;\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005a8b0();\n      }\n      return local_440;\n    }" { (labeled_statement "LAB_00059e30:\n      local_440 = 0;" statement_identifier : (expression_statement "local_440 = 0;" (assignment_expression "local_440 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005a8b0();\n      }" statement_identifier : (if_statement "if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005a8b0();\n      }" if (parenthesized_expression "(local_20[0] != *(uint *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) != (pointer_expression "*(uint *)(in_GS_OFFSET + 0x14)" * (cast_expression "(uint *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0005a8b0();\n      }" { comment (expression_statement "FUN_0005a8b0();" (call_expression "FUN_0005a8b0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_440;" return identifier ;) })) (expression_statement "local_458 = 0xffffffff;" (assignment_expression "local_458 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }" else (compound_statement "{\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }" { (expression_statement "ppuVar3 = __ctype_b_loc();" (assignment_expression "ppuVar3 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_458 = param_4 - 1;" (assignment_expression "local_458 = param_4 - 1" identifier = (binary_expression "param_4 - 1" identifier - number_literal)) ;) (expression_statement "puVar1 = *ppuVar3;" (assignment_expression "puVar1 = *ppuVar3" identifier = (pointer_expression "*ppuVar3" * identifier)) ;) (expression_statement "pbVar6 = param_3;" (assignment_expression "pbVar6 = param_3" identifier = identifier) ;) (expression_statement "uVar7 = local_458;" (assignment_expression "uVar7 = local_458" identifier = identifier) ;) (do_statement "do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);" do (compound_statement "{\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    }" { (while_statement "while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }" while (parenthesized_expression "(uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0)" ( (comma_expression "uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0" (assignment_expression "uVar8 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) , (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar8 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) == number_literal)) )) (compound_statement "{\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }" { (expression_statement "local_420[uVar8] = uVar7;" (assignment_expression "local_420[uVar8] = uVar7" (subscript_expression "local_420[uVar8]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar7 = uVar7 - 1;" (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if (uVar7 == 0xffffffff) goto LAB_00059cb7;" if (parenthesized_expression "(uVar7 == 0xffffffff)" ( (binary_expression "uVar7 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_00059cb7;" goto statement_identifier ;)) })) (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 "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "local_420[(*pp_Var4)[uVar8]] = uVar7;" (assignment_expression "local_420[(*pp_Var4)[uVar8]] = uVar7" (subscript_expression "local_420[(*pp_Var4)[uVar8]]" identifier [ (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ]) ]) = identifier) ;) (expression_statement "uVar7 = uVar7 - 1;" (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar7 != 0xffffffff)" ( (binary_expression "uVar7 != 0xffffffff" identifier != number_literal) )) ;) (labeled_statement "LAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);" statement_identifier : (expression_statement "iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);" (assignment_expression "iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c)" identifier = (call_expression "strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c)" identifier (argument_list "((char *)param_3,(char *)(param_3 + local_434),local_43c)" ( (cast_expression "(char *)param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)(param_3 + local_434)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + local_434)" ( (binary_expression "param_3 + local_434" identifier + identifier) ))) , identifier )))) ;)) (if_statement "if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }" { (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" identifier = number_literal) ;) (expression_statement "local_440 = 0;" (assignment_expression "local_440 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );" statement_identifier : (do_statement "do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );" do (compound_statement "{\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      }" { (expression_statement "iVar9 = local_440 + param_4;" (assignment_expression "iVar9 = local_440 + param_4" identifier = (binary_expression "local_440 + param_4" identifier + identifier)) ;) (expression_statement "iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);" (assignment_expression "iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2)" identifier = (call_expression "FUN_0005a700(param_2 + param_1,0,iVar9 - param_2)" identifier (argument_list "(param_2 + param_1,0,iVar9 - param_2)" ( (binary_expression "param_2 + param_1" identifier + identifier) , number_literal , (binary_expression "iVar9 - param_2" identifier - identifier) )))) ;) (if_statement "if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;" if (parenthesized_expression "((iVar5 != 0) || (iVar9 == 0))" ( (binary_expression "(iVar5 != 0) || (iVar9 == 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00059e30;" goto statement_identifier ;)) (expression_statement "uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);" (assignment_expression "uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9)" identifier = (binary_expression "(uint)*(byte *)(param_1 + -1 + iVar9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + -1 + iVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + -1 + iVar9)" ( (binary_expression "param_1 + -1 + iVar9" (binary_expression "param_1 + -1" identifier + number_literal) + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar7 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar7 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar7 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar7 * 2 + 1" (binary_expression "(int)puVar1 + uVar7 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar7 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\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 "uVar7 = (*pp_Var4)[uVar7];" (assignment_expression "uVar7 = (*pp_Var4)[uVar7]" identifier = (subscript_expression "(*pp_Var4)[uVar7]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar7 = local_420[uVar7];" (assignment_expression "uVar7 = local_420[uVar7]" identifier = (subscript_expression "local_420[uVar7]" identifier [ identifier ])) ;) (expression_statement "param_2 = iVar9;" (assignment_expression "param_2 = iVar9" identifier = identifier) ;) (if_statement "if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }" { (expression_statement "uVar7 = local_444;" (assignment_expression "uVar7 = local_444" identifier = identifier) ;) (if_statement "if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }" if (parenthesized_expression "(local_444 <= local_43c)" ( (binary_expression "local_444 <= local_43c" identifier <= identifier) )) (compound_statement "{\n            uVar7 = local_43c;\n          }" { (expression_statement "uVar7 = local_43c;" (assignment_expression "uVar7 = local_43c" identifier = identifier) ;) })) (if_statement "if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }" if (parenthesized_expression "(uVar7 < local_458)" ( (binary_expression "uVar7 < local_458" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }" { (do_statement "do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);" do (compound_statement "{\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            }" { (expression_statement "uVar8 = (uint)param_3[uVar7];" (assignment_expression "uVar8 = (uint)param_3[uVar7]" identifier = (cast_expression "(uint)param_3[uVar7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[uVar7]" identifier [ identifier ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar8 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\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 "uVar8 = (*pp_Var4)[uVar8];" (assignment_expression "uVar8 = (*pp_Var4)[uVar8]" identifier = (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);" (assignment_expression "uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7)" identifier = (binary_expression "(uint)*(byte *)(param_1 + local_440 + uVar7)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + local_440 + uVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + local_440 + uVar7)" ( (binary_expression "param_1 + local_440 + uVar7" (binary_expression "param_1 + local_440" identifier + identifier) + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar10 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar10 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar10 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar10 * 2 + 1" (binary_expression "(int)puVar1 + uVar10 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar10 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\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 "uVar10 = (*pp_Var4)[uVar10];" (assignment_expression "uVar10 = (*pp_Var4)[uVar10]" identifier = (subscript_expression "(*pp_Var4)[uVar10]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (if_statement "if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }" if (parenthesized_expression "(uVar8 != uVar10)" ( (binary_expression "uVar8 != uVar10" identifier != identifier) )) (compound_statement "{\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }" { (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" identifier = number_literal) ;) (expression_statement "local_440 = local_440 + (1 - local_43c) + uVar7;" (assignment_expression "local_440 = local_440 + (1 - local_43c) + uVar7" identifier = (binary_expression "local_440 + (1 - local_43c) + uVar7" (binary_expression "local_440 + (1 - local_43c)" identifier + (parenthesized_expression "(1 - local_43c)" ( (binary_expression "1 - local_43c" number_literal - identifier) ))) + identifier)) ;) (goto_statement "goto LAB_00059f1f;" goto statement_identifier ;) })) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar7 != local_458)" ( (binary_expression "uVar7 != local_458" identifier != identifier) )) ;) })) (expression_statement "uVar7 = local_43c;" (assignment_expression "uVar7 = local_43c" identifier = identifier) ;) (expression_statement "local_450 = local_43c;" (assignment_expression "local_450 = local_43c" identifier = identifier) ;) (if_statement "if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }" if (parenthesized_expression "(local_444 < local_43c)" ( (binary_expression "local_444 < local_43c" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }" { (do_statement "do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));" do (compound_statement "{\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            }" { (expression_statement "uVar10 = uVar7 - 1;" (assignment_expression "uVar10 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (expression_statement "uVar8 = (uint)param_3[uVar10];" (assignment_expression "uVar8 = (uint)param_3[uVar10]" identifier = (cast_expression "(uint)param_3[uVar10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[uVar10]" identifier [ identifier ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar8 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\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 "uVar8 = (*pp_Var4)[uVar8];" (assignment_expression "uVar8 = (*pp_Var4)[uVar8]" identifier = (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);" (assignment_expression "uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10)" identifier = (binary_expression "(uint)*(byte *)(param_1 + local_440 + uVar10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + local_440 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + local_440 + uVar10)" ( (binary_expression "param_1 + local_440 + uVar10" (binary_expression "param_1 + local_440" identifier + identifier) + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar11 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar11 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar11 * 2 + 1" (binary_expression "(int)puVar1 + uVar11 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar11 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\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 "uVar11 = (*pp_Var4)[uVar11];" (assignment_expression "uVar11 = (*pp_Var4)[uVar11]" identifier = (subscript_expression "(*pp_Var4)[uVar11]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (expression_statement "local_450 = uVar7;" (assignment_expression "local_450 = uVar7" identifier = identifier) ;) }) while (parenthesized_expression "((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10))" ( (binary_expression "(uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10)" (parenthesized_expression "(uVar8 == uVar11)" ( (binary_expression "uVar8 == uVar11" identifier == identifier) )) && (parenthesized_expression "(uVar7 = uVar10, local_450 = local_444, local_444 != uVar10)" ( (comma_expression "uVar7 = uVar10, local_450 = local_444, local_444 != uVar10" (assignment_expression "uVar7 = uVar10" identifier = identifier) , (comma_expression "local_450 = local_444, local_444 != uVar10" (assignment_expression "local_450 = local_444" identifier = identifier) , (binary_expression "local_444 != uVar10" identifier != identifier))) ))) )) ;) })) (if_statement "if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }" if (parenthesized_expression "(local_450 < local_444 + 1)" ( (binary_expression "local_450 < local_444 + 1" identifier < (binary_expression "local_444 + 1" identifier + number_literal)) )) (compound_statement "{\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }" { (expression_statement "local_440 = param_1 + local_440;" (assignment_expression "local_440 = param_1 + local_440" identifier = (binary_expression "param_1 + local_440" identifier + identifier)) ;) (goto_statement "goto LAB_00059e32;" goto statement_identifier ;) })) (expression_statement "local_440 = local_440 + local_434;" (assignment_expression "local_440 = local_440 + local_434" identifier = (binary_expression "local_440 + local_434" identifier + identifier)) ;) (expression_statement "local_444 = param_4 - local_434;" (assignment_expression "local_444 = param_4 - local_434" identifier = (binary_expression "param_4 - local_434" identifier - identifier)) ;) }) (else_clause "else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }" else (compound_statement "{\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }" { (if_statement "if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }" if (parenthesized_expression "((uVar7 < local_434) && (local_444 != 0))" ( (binary_expression "(uVar7 < local_434) && (local_444 != 0)" (parenthesized_expression "(uVar7 < local_434)" ( (binary_expression "uVar7 < local_434" identifier < identifier) )) && (parenthesized_expression "(local_444 != 0)" ( (binary_expression "local_444 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            uVar7 = param_4 - local_434;\n          }" { (expression_statement "uVar7 = param_4 - local_434;" (assignment_expression "uVar7 = param_4 - local_434" identifier = (binary_expression "param_4 - local_434" identifier - identifier)) ;) })) (expression_statement "local_440 = local_440 + uVar7;" (assignment_expression "local_440 = local_440 + uVar7" identifier = (binary_expression "local_440 + uVar7" identifier + identifier)) ;) (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" identifier = number_literal) ;) }))) }) while (parenthesized_expression "( true )" ( true )) ;)) })) }))) (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = param_4 - local_43c;" (assignment_expression "uVar7 = param_4 - local_43c" identifier = (binary_expression "param_4 - local_43c" identifier - identifier)) ;) (if_statement "if (param_4 - local_43c < local_43c) {\n    uVar7 = local_43c;\n  }" if (parenthesized_expression "(param_4 - local_43c < local_43c)" ( (binary_expression "param_4 - local_43c < local_43c" (binary_expression "param_4 - local_43c" identifier - identifier) < identifier) )) (compound_statement "{\n    uVar7 = local_43c;\n  }" { (expression_statement "uVar7 = local_43c;" (assignment_expression "uVar7 = local_43c" identifier = identifier) ;) })) (labeled_statement "LAB_00059d28:\n  do {\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  } while( true );" do (compound_statement "{\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  }" { (expression_statement "iVar9 = local_444 + param_4;" (assignment_expression "iVar9 = local_444 + param_4" identifier = (binary_expression "local_444 + param_4" identifier + identifier)) ;) (expression_statement "iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);" (assignment_expression "iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2)" identifier = (call_expression "FUN_0005a700(param_2 + param_1,0,iVar9 - param_2)" identifier (argument_list "(param_2 + param_1,0,iVar9 - param_2)" ( (binary_expression "param_2 + param_1" identifier + identifier) , number_literal , (binary_expression "iVar9 - param_2" identifier - identifier) )))) ;) (if_statement "if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;" if (parenthesized_expression "((iVar9 == 0) || (iVar5 != 0))" ( (binary_expression "(iVar9 == 0) || (iVar5 != 0)" (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_00059e30;" goto statement_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 "uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);" (assignment_expression "uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9)" identifier = (binary_expression "(uint)*(byte *)(param_1 + -1 + iVar9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + -1 + iVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + -1 + iVar9)" ( (binary_expression "param_1 + -1 + iVar9" (binary_expression "param_1 + -1" identifier + number_literal) + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar8 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\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 "uVar8 = (*pp_Var4)[uVar8];" (assignment_expression "uVar8 = (*pp_Var4)[uVar8]" identifier = (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (expression_statement "param_2 = iVar9;" (assignment_expression "param_2 = iVar9" identifier = identifier) ;) (if_statement "if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }" if (parenthesized_expression "(local_420[uVar8] == 0)" ( (binary_expression "local_420[uVar8] == 0" (subscript_expression "local_420[uVar8]" identifier [ identifier ]) == number_literal) )) (compound_statement "{\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }" { (expression_statement "local_440 = param_1 + local_444;" (assignment_expression "local_440 = param_1 + local_444" identifier = (binary_expression "param_1 + local_444" identifier + identifier)) ;) (for_statement "for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }" for ( (assignment_expression "uVar8 = local_43c" identifier = identifier) ; (comma_expression "uVar10 = local_43c, uVar8 < local_458" (assignment_expression "uVar10 = local_43c" identifier = identifier) , (binary_expression "uVar8 < local_458" identifier < identifier)) ; (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ) (compound_statement "{\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }" { (expression_statement "uVar10 = (uint)param_3[uVar8];" (assignment_expression "uVar10 = (uint)param_3[uVar8]" identifier = (cast_expression "(uint)param_3[uVar8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[uVar8]" identifier [ identifier ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar10 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar10 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar10 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar10 * 2 + 1" (binary_expression "(int)puVar1 + uVar10 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar10 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\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 "uVar10 = (*pp_Var4)[uVar10];" (assignment_expression "uVar10 = (*pp_Var4)[uVar10]" identifier = (subscript_expression "(*pp_Var4)[uVar10]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar11 = (uint)*(byte *)(local_440 + uVar8);" (assignment_expression "uVar11 = (uint)*(byte *)(local_440 + uVar8)" identifier = (binary_expression "(uint)*(byte *)(local_440 + uVar8)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_440 + uVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_440 + uVar8)" ( (binary_expression "local_440 + uVar8" identifier + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar11 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar11 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar11 * 2 + 1" (binary_expression "(int)puVar1 + uVar11 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar11 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\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 "uVar11 = (*pp_Var4)[uVar11];" (assignment_expression "uVar11 = (*pp_Var4)[uVar11]" identifier = (subscript_expression "(*pp_Var4)[uVar11]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (if_statement "if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }" if (parenthesized_expression "(uVar10 != uVar11)" ( (binary_expression "uVar10 != uVar11" identifier != identifier) )) (compound_statement "{\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }" { (expression_statement "local_444 = local_444 + (1 - local_43c) + uVar8;" (assignment_expression "local_444 = local_444 + (1 - local_43c) + uVar8" identifier = (binary_expression "local_444 + (1 - local_43c) + uVar8" (binary_expression "local_444 + (1 - local_43c)" identifier + (parenthesized_expression "(1 - local_43c)" ( (binary_expression "1 - local_43c" number_literal - identifier) ))) + identifier)) ;) (goto_statement "goto LAB_00059d28;" goto statement_identifier ;) })) })) (do_statement "do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);" do (compound_statement "{\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      }" { (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (if_statement "if (uVar10 == 0xffffffff) goto LAB_00059e32;" if (parenthesized_expression "(uVar10 == 0xffffffff)" ( (binary_expression "uVar10 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_00059e32;" goto statement_identifier ;)) (expression_statement "uVar8 = (uint)param_3[uVar10];" (assignment_expression "uVar8 = (uint)param_3[uVar10]" identifier = (cast_expression "(uint)param_3[uVar10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[uVar10]" identifier [ identifier ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar8 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\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 "uVar8 = (*pp_Var4)[uVar8];" (assignment_expression "uVar8 = (*pp_Var4)[uVar8]" identifier = (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar11 = (uint)*(byte *)(local_440 + uVar10);" (assignment_expression "uVar11 = (uint)*(byte *)(local_440 + uVar10)" identifier = (binary_expression "(uint)*(byte *)(local_440 + uVar10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_440 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_440 + uVar10)" ( (binary_expression "local_440 + uVar10" identifier + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar11 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar11 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar11 * 2 + 1" (binary_expression "(int)puVar1 + uVar11 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar11 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\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 "uVar11 = (*pp_Var4)[uVar11];" (assignment_expression "uVar11 = (*pp_Var4)[uVar11]" identifier = (subscript_expression "(*pp_Var4)[uVar11]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) }) while (parenthesized_expression "(uVar8 == uVar11)" ( (binary_expression "uVar8 == uVar11" identifier == identifier) )) ;) (expression_statement "local_444 = local_444 + uVar7 + 1;" (assignment_expression "local_444 = local_444 + uVar7 + 1" identifier = (binary_expression "local_444 + uVar7 + 1" (binary_expression "local_444 + uVar7" identifier + identifier) + number_literal)) ;) }) (else_clause "else {\n      local_444 = local_444 + local_420[uVar8];\n    }" else (compound_statement "{\n      local_444 = local_444 + local_420[uVar8];\n    }" { (expression_statement "local_444 = local_444 + local_420[uVar8];" (assignment_expression "local_444 = local_444 + local_420[uVar8]" identifier = (binary_expression "local_444 + local_420[uVar8]" identifier + (subscript_expression "local_420[uVar8]" identifier [ identifier ]))) ;) }))) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * __regparm3\ntwo_way_long_needle(uchar *haystack,size_t haystack_len,uchar *needle,size_t needle_len)\n\n{\n  ushort *puVar1;\n  size_t *psVar2;\n  uchar *puVar3;\n  ushort **ppuVar4;\n  __int32_t **pp_Var5;\n  int iVar6;\n  void *pvVar7;\n  byte *pbVar8;\n  size_t sVar9;\n  uint uVar10;\n  uint uVar11;\n  size_t sVar12;\n  uint uVar13;\n  uint uVar14;\n  int in_GS_OFFSET;\n  uint local_458;\n  uint local_450;\n  uint local_444;\n  int local_440;\n  uint local_43c;\n  size_t period;\n  size_t shift_table [256];\n  size_t local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x59beb;\n  local_20[0] = *(size_t *)(in_GS_OFFSET + 0x14);\n  if (needle_len < 3) {\n    local_43c = needle_len - 1;\n    period = 1;\n  }\n  else {\n    local_43c = critical_factorization(needle,needle_len,&period);\n  }\n  sVar12 = period;\n  psVar2 = shift_table;\n  do {\n    *psVar2 = needle_len;\n    psVar2 = psVar2 + 1;\n  } while (local_20 != psVar2);\n  puVar3 = needle + period;\n  if (needle_len == 0) {\n    iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);\n    if (iVar6 == 0) {\nLAB_00059e30:\n      puVar3 = (uchar *)0x0;\nLAB_00059e32:\n      if (local_20[0] != *(size_t *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      return (char *)puVar3;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar4 = __ctype_b_loc();\n    local_458 = needle_len - 1;\n    puVar1 = *ppuVar4;\n    pbVar8 = needle;\n    uVar10 = local_458;\n    do {\n      while (uVar11 = (uint)*pbVar8, (*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) == 0) {\n        shift_table[uVar11] = uVar10;\n        uVar10 = uVar10 - 1;\n        pbVar8 = pbVar8 + 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var5 = __ctype_tolower_loc();\n      pbVar8 = pbVar8 + 1;\n      shift_table[(*pp_Var5)[uVar11]] = uVar10;\n      uVar10 = uVar10 - 1;\n    } while (uVar10 != 0xffffffff);\nLAB_00059cb7:\n    iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);\n    if (iVar6 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        sVar9 = local_440 + needle_len;\n        pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len);\n        if ((pvVar7 != (void *)0x0) || (sVar9 == 0)) goto LAB_00059e30;\n        uVar10 = (uint)haystack[sVar9 - 1];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var5)[uVar10];\n        }\n        uVar10 = shift_table[uVar10];\n        haystack_len = sVar9;\n        if (uVar10 == 0) {\n          uVar10 = local_444;\n          if (local_444 <= local_43c) {\n            uVar10 = local_43c;\n          }\n          if (uVar10 < local_458) {\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }\n          uVar10 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }\n          if (local_450 < local_444 + 1) {\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + sVar12;\n          local_444 = needle_len - sVar12;\n        }\n        else {\n          if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }\n          local_440 = local_440 + uVar10;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }\n  local_444 = 0;\n  uVar10 = needle_len - local_43c;\n  if (needle_len - local_43c < local_43c) {\n    uVar10 = local_43c;\n  }\n  period = uVar10 + 1;\nLAB_00059d28:\n  do {\n    sVar12 = local_444 + needle_len;\n    pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar12 - haystack_len);\n    if ((sVar12 == 0) || (pvVar7 != (void *)0x0)) goto LAB_00059e30;\n    ppuVar4 = __ctype_b_loc();\n    puVar1 = *ppuVar4;\n    uVar11 = (uint)haystack[sVar12 - 1];\n    if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n      pp_Var5 = __ctype_tolower_loc();\n      uVar11 = (*pp_Var5)[uVar11];\n    }\n    haystack_len = sVar12;\n    if (shift_table[uVar11] == 0) {\n      puVar3 = haystack + local_444;\n      for (uVar11 = local_43c; uVar13 = local_43c, uVar11 < local_458; uVar11 = uVar11 + 1) {\n        uVar13 = (uint)needle[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar13 = (*pp_Var5)[uVar13];\n        }\n        uVar14 = (uint)puVar3[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n        if (uVar13 != uVar14) {\n          local_444 = local_444 + (1 - local_43c) + uVar11;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar13 = uVar13 - 1;\n        if (uVar13 == 0xffffffff) goto LAB_00059e32;\n        uVar11 = (uint)needle[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var5)[uVar11];\n        }\n        uVar14 = (uint)puVar3[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n      } while (uVar11 == uVar14);\n      local_444 = local_444 + uVar10 + 1;\n    }\n    else {\n      local_444 = local_444 + shift_table[uVar11];\n    }\n  } while( true );\n}\n\n" comment (function_definition "char * __regparm3\ntwo_way_long_needle(uchar *haystack,size_t haystack_len,uchar *needle,size_t needle_len)\n\n{\n  ushort *puVar1;\n  size_t *psVar2;\n  uchar *puVar3;\n  ushort **ppuVar4;\n  __int32_t **pp_Var5;\n  int iVar6;\n  void *pvVar7;\n  byte *pbVar8;\n  size_t sVar9;\n  uint uVar10;\n  uint uVar11;\n  size_t sVar12;\n  uint uVar13;\n  uint uVar14;\n  int in_GS_OFFSET;\n  uint local_458;\n  uint local_450;\n  uint local_444;\n  int local_440;\n  uint local_43c;\n  size_t period;\n  size_t shift_table [256];\n  size_t local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x59beb;\n  local_20[0] = *(size_t *)(in_GS_OFFSET + 0x14);\n  if (needle_len < 3) {\n    local_43c = needle_len - 1;\n    period = 1;\n  }\n  else {\n    local_43c = critical_factorization(needle,needle_len,&period);\n  }\n  sVar12 = period;\n  psVar2 = shift_table;\n  do {\n    *psVar2 = needle_len;\n    psVar2 = psVar2 + 1;\n  } while (local_20 != psVar2);\n  puVar3 = needle + period;\n  if (needle_len == 0) {\n    iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);\n    if (iVar6 == 0) {\nLAB_00059e30:\n      puVar3 = (uchar *)0x0;\nLAB_00059e32:\n      if (local_20[0] != *(size_t *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      return (char *)puVar3;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar4 = __ctype_b_loc();\n    local_458 = needle_len - 1;\n    puVar1 = *ppuVar4;\n    pbVar8 = needle;\n    uVar10 = local_458;\n    do {\n      while (uVar11 = (uint)*pbVar8, (*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) == 0) {\n        shift_table[uVar11] = uVar10;\n        uVar10 = uVar10 - 1;\n        pbVar8 = pbVar8 + 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var5 = __ctype_tolower_loc();\n      pbVar8 = pbVar8 + 1;\n      shift_table[(*pp_Var5)[uVar11]] = uVar10;\n      uVar10 = uVar10 - 1;\n    } while (uVar10 != 0xffffffff);\nLAB_00059cb7:\n    iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);\n    if (iVar6 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        sVar9 = local_440 + needle_len;\n        pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len);\n        if ((pvVar7 != (void *)0x0) || (sVar9 == 0)) goto LAB_00059e30;\n        uVar10 = (uint)haystack[sVar9 - 1];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var5)[uVar10];\n        }\n        uVar10 = shift_table[uVar10];\n        haystack_len = sVar9;\n        if (uVar10 == 0) {\n          uVar10 = local_444;\n          if (local_444 <= local_43c) {\n            uVar10 = local_43c;\n          }\n          if (uVar10 < local_458) {\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }\n          uVar10 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }\n          if (local_450 < local_444 + 1) {\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + sVar12;\n          local_444 = needle_len - sVar12;\n        }\n        else {\n          if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }\n          local_440 = local_440 + uVar10;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }\n  local_444 = 0;\n  uVar10 = needle_len - local_43c;\n  if (needle_len - local_43c < local_43c) {\n    uVar10 = local_43c;\n  }\n  period = uVar10 + 1;\nLAB_00059d28:\n  do {\n    sVar12 = local_444 + needle_len;\n    pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar12 - haystack_len);\n    if ((sVar12 == 0) || (pvVar7 != (void *)0x0)) goto LAB_00059e30;\n    ppuVar4 = __ctype_b_loc();\n    puVar1 = *ppuVar4;\n    uVar11 = (uint)haystack[sVar12 - 1];\n    if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n      pp_Var5 = __ctype_tolower_loc();\n      uVar11 = (*pp_Var5)[uVar11];\n    }\n    haystack_len = sVar12;\n    if (shift_table[uVar11] == 0) {\n      puVar3 = haystack + local_444;\n      for (uVar11 = local_43c; uVar13 = local_43c, uVar11 < local_458; uVar11 = uVar11 + 1) {\n        uVar13 = (uint)needle[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar13 = (*pp_Var5)[uVar13];\n        }\n        uVar14 = (uint)puVar3[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n        if (uVar13 != uVar14) {\n          local_444 = local_444 + (1 - local_43c) + uVar11;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar13 = uVar13 - 1;\n        if (uVar13 == 0xffffffff) goto LAB_00059e32;\n        uVar11 = (uint)needle[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var5)[uVar11];\n        }\n        uVar14 = (uint)puVar3[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n      } while (uVar11 == uVar14);\n      local_444 = local_444 + uVar10 + 1;\n    }\n    else {\n      local_444 = local_444 + shift_table[uVar11];\n    }\n  } while( true );\n}" primitive_type (pointer_declarator "* __regparm3\ntwo_way_long_needle(uchar *haystack,size_t haystack_len,uchar *needle,size_t needle_len)" * (ERROR "__regparm3" identifier) (function_declarator "two_way_long_needle(uchar *haystack,size_t haystack_len,uchar *needle,size_t needle_len)" identifier (parameter_list "(uchar *haystack,size_t haystack_len,uchar *needle,size_t needle_len)" ( (parameter_declaration "uchar *haystack" type_identifier (pointer_declarator "*haystack" * identifier)) , (parameter_declaration "size_t haystack_len" primitive_type identifier) , (parameter_declaration "uchar *needle" type_identifier (pointer_declarator "*needle" * identifier)) , (parameter_declaration "size_t needle_len" primitive_type identifier) )))) (compound_statement "{\n  ushort *puVar1;\n  size_t *psVar2;\n  uchar *puVar3;\n  ushort **ppuVar4;\n  __int32_t **pp_Var5;\n  int iVar6;\n  void *pvVar7;\n  byte *pbVar8;\n  size_t sVar9;\n  uint uVar10;\n  uint uVar11;\n  size_t sVar12;\n  uint uVar13;\n  uint uVar14;\n  int in_GS_OFFSET;\n  uint local_458;\n  uint local_450;\n  uint local_444;\n  int local_440;\n  uint local_43c;\n  size_t period;\n  size_t shift_table [256];\n  size_t local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x59beb;\n  local_20[0] = *(size_t *)(in_GS_OFFSET + 0x14);\n  if (needle_len < 3) {\n    local_43c = needle_len - 1;\n    period = 1;\n  }\n  else {\n    local_43c = critical_factorization(needle,needle_len,&period);\n  }\n  sVar12 = period;\n  psVar2 = shift_table;\n  do {\n    *psVar2 = needle_len;\n    psVar2 = psVar2 + 1;\n  } while (local_20 != psVar2);\n  puVar3 = needle + period;\n  if (needle_len == 0) {\n    iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);\n    if (iVar6 == 0) {\nLAB_00059e30:\n      puVar3 = (uchar *)0x0;\nLAB_00059e32:\n      if (local_20[0] != *(size_t *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      return (char *)puVar3;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar4 = __ctype_b_loc();\n    local_458 = needle_len - 1;\n    puVar1 = *ppuVar4;\n    pbVar8 = needle;\n    uVar10 = local_458;\n    do {\n      while (uVar11 = (uint)*pbVar8, (*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) == 0) {\n        shift_table[uVar11] = uVar10;\n        uVar10 = uVar10 - 1;\n        pbVar8 = pbVar8 + 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var5 = __ctype_tolower_loc();\n      pbVar8 = pbVar8 + 1;\n      shift_table[(*pp_Var5)[uVar11]] = uVar10;\n      uVar10 = uVar10 - 1;\n    } while (uVar10 != 0xffffffff);\nLAB_00059cb7:\n    iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);\n    if (iVar6 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        sVar9 = local_440 + needle_len;\n        pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len);\n        if ((pvVar7 != (void *)0x0) || (sVar9 == 0)) goto LAB_00059e30;\n        uVar10 = (uint)haystack[sVar9 - 1];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var5)[uVar10];\n        }\n        uVar10 = shift_table[uVar10];\n        haystack_len = sVar9;\n        if (uVar10 == 0) {\n          uVar10 = local_444;\n          if (local_444 <= local_43c) {\n            uVar10 = local_43c;\n          }\n          if (uVar10 < local_458) {\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }\n          uVar10 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }\n          if (local_450 < local_444 + 1) {\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + sVar12;\n          local_444 = needle_len - sVar12;\n        }\n        else {\n          if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }\n          local_440 = local_440 + uVar10;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }\n  local_444 = 0;\n  uVar10 = needle_len - local_43c;\n  if (needle_len - local_43c < local_43c) {\n    uVar10 = local_43c;\n  }\n  period = uVar10 + 1;\nLAB_00059d28:\n  do {\n    sVar12 = local_444 + needle_len;\n    pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar12 - haystack_len);\n    if ((sVar12 == 0) || (pvVar7 != (void *)0x0)) goto LAB_00059e30;\n    ppuVar4 = __ctype_b_loc();\n    puVar1 = *ppuVar4;\n    uVar11 = (uint)haystack[sVar12 - 1];\n    if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n      pp_Var5 = __ctype_tolower_loc();\n      uVar11 = (*pp_Var5)[uVar11];\n    }\n    haystack_len = sVar12;\n    if (shift_table[uVar11] == 0) {\n      puVar3 = haystack + local_444;\n      for (uVar11 = local_43c; uVar13 = local_43c, uVar11 < local_458; uVar11 = uVar11 + 1) {\n        uVar13 = (uint)needle[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar13 = (*pp_Var5)[uVar13];\n        }\n        uVar14 = (uint)puVar3[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n        if (uVar13 != uVar14) {\n          local_444 = local_444 + (1 - local_43c) + uVar11;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar13 = uVar13 - 1;\n        if (uVar13 == 0xffffffff) goto LAB_00059e32;\n        uVar11 = (uint)needle[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var5)[uVar11];\n        }\n        uVar14 = (uint)puVar3[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n      } while (uVar11 == uVar14);\n      local_444 = local_444 + uVar10 + 1;\n    }\n    else {\n      local_444 = local_444 + shift_table[uVar11];\n    }\n  } while( true );\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "size_t *psVar2;" primitive_type (pointer_declarator "*psVar2" * identifier) ;) (declaration "uchar *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "ushort **ppuVar4;" type_identifier (pointer_declarator "**ppuVar4" * (pointer_declarator "*ppuVar4" * identifier)) ;) (declaration "__int32_t **pp_Var5;" type_identifier (pointer_declarator "**pp_Var5" * (pointer_declarator "*pp_Var5" * identifier)) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "void *pvVar7;" primitive_type (pointer_declarator "*pvVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "size_t sVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_458;" type_identifier identifier ;) (declaration "uint local_450;" type_identifier identifier ;) (declaration "uint local_444;" type_identifier identifier ;) (declaration "int local_440;" primitive_type identifier ;) (declaration "uint local_43c;" type_identifier identifier ;) (declaration "size_t period;" primitive_type identifier ;) (declaration "size_t shift_table [256];" primitive_type (array_declarator "shift_table [256]" identifier [ number_literal ]) ;) (declaration "size_t local_20 [3];" primitive_type (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x59beb;" (assignment_expression "uStack_14 = 0x59beb" identifier = number_literal) ;) (expression_statement "local_20[0] = *(size_t *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20[0] = *(size_t *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "*(size_t *)(in_GS_OFFSET + 0x14)" * (cast_expression "(size_t *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (needle_len < 3) {\n    local_43c = needle_len - 1;\n    period = 1;\n  }\n  else {\n    local_43c = critical_factorization(needle,needle_len,&period);\n  }" if (parenthesized_expression "(needle_len < 3)" ( (binary_expression "needle_len < 3" identifier < number_literal) )) (compound_statement "{\n    local_43c = needle_len - 1;\n    period = 1;\n  }" { (expression_statement "local_43c = needle_len - 1;" (assignment_expression "local_43c = needle_len - 1" identifier = (binary_expression "needle_len - 1" identifier - number_literal)) ;) (expression_statement "period = 1;" (assignment_expression "period = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_43c = critical_factorization(needle,needle_len,&period);\n  }" else (compound_statement "{\n    local_43c = critical_factorization(needle,needle_len,&period);\n  }" { (expression_statement "local_43c = critical_factorization(needle,needle_len,&period);" (assignment_expression "local_43c = critical_factorization(needle,needle_len,&period)" identifier = (call_expression "critical_factorization(needle,needle_len,&period)" identifier (argument_list "(needle,needle_len,&period)" ( identifier , identifier , (pointer_expression "&period" & identifier) )))) ;) }))) (expression_statement "sVar12 = period;" (assignment_expression "sVar12 = period" identifier = identifier) ;) (expression_statement "psVar2 = shift_table;" (assignment_expression "psVar2 = shift_table" identifier = identifier) ;) (do_statement "do {\n    *psVar2 = needle_len;\n    psVar2 = psVar2 + 1;\n  } while (local_20 != psVar2);" do (compound_statement "{\n    *psVar2 = needle_len;\n    psVar2 = psVar2 + 1;\n  }" { (expression_statement "*psVar2 = needle_len;" (assignment_expression "*psVar2 = needle_len" (pointer_expression "*psVar2" * identifier) = identifier) ;) (expression_statement "psVar2 = psVar2 + 1;" (assignment_expression "psVar2 = psVar2 + 1" identifier = (binary_expression "psVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_20 != psVar2)" ( (binary_expression "local_20 != psVar2" identifier != identifier) )) ;) (expression_statement "puVar3 = needle + period;" (assignment_expression "puVar3 = needle + period" identifier = (binary_expression "needle + period" identifier + identifier)) ;) (if_statement "if (needle_len == 0) {\n    iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);\n    if (iVar6 == 0) {\nLAB_00059e30:\n      puVar3 = (uchar *)0x0;\nLAB_00059e32:\n      if (local_20[0] != *(size_t *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      return (char *)puVar3;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar4 = __ctype_b_loc();\n    local_458 = needle_len - 1;\n    puVar1 = *ppuVar4;\n    pbVar8 = needle;\n    uVar10 = local_458;\n    do {\n      while (uVar11 = (uint)*pbVar8, (*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) == 0) {\n        shift_table[uVar11] = uVar10;\n        uVar10 = uVar10 - 1;\n        pbVar8 = pbVar8 + 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var5 = __ctype_tolower_loc();\n      pbVar8 = pbVar8 + 1;\n      shift_table[(*pp_Var5)[uVar11]] = uVar10;\n      uVar10 = uVar10 - 1;\n    } while (uVar10 != 0xffffffff);\nLAB_00059cb7:\n    iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);\n    if (iVar6 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        sVar9 = local_440 + needle_len;\n        pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len);\n        if ((pvVar7 != (void *)0x0) || (sVar9 == 0)) goto LAB_00059e30;\n        uVar10 = (uint)haystack[sVar9 - 1];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var5)[uVar10];\n        }\n        uVar10 = shift_table[uVar10];\n        haystack_len = sVar9;\n        if (uVar10 == 0) {\n          uVar10 = local_444;\n          if (local_444 <= local_43c) {\n            uVar10 = local_43c;\n          }\n          if (uVar10 < local_458) {\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }\n          uVar10 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }\n          if (local_450 < local_444 + 1) {\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + sVar12;\n          local_444 = needle_len - sVar12;\n        }\n        else {\n          if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }\n          local_440 = local_440 + uVar10;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }" if (parenthesized_expression "(needle_len == 0)" ( (binary_expression "needle_len == 0" identifier == number_literal) )) (compound_statement "{\n    iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);\n    if (iVar6 == 0) {\nLAB_00059e30:\n      puVar3 = (uchar *)0x0;\nLAB_00059e32:\n      if (local_20[0] != *(size_t *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      return (char *)puVar3;\n    }\n    local_458 = 0xffffffff;\n  }" { (expression_statement "iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);" (assignment_expression "iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c)" identifier = (call_expression "strncasecmp((char *)needle,(char *)puVar3,local_43c)" identifier (argument_list "((char *)needle,(char *)puVar3,local_43c)" ( (cast_expression "(char *)needle" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)puVar3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (if_statement "if (iVar6 == 0) {\nLAB_00059e30:\n      puVar3 = (uchar *)0x0;\nLAB_00059e32:\n      if (local_20[0] != *(size_t *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      return (char *)puVar3;\n    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00059e30:\n      puVar3 = (uchar *)0x0;\nLAB_00059e32:\n      if (local_20[0] != *(size_t *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }\n      return (char *)puVar3;\n    }" { (labeled_statement "LAB_00059e30:\n      puVar3 = (uchar *)0x0;" statement_identifier : (expression_statement "puVar3 = (uchar *)0x0;" (assignment_expression "puVar3 = (uchar *)0x0" identifier = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (labeled_statement "LAB_00059e32:\n      if (local_20[0] != *(size_t *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }" statement_identifier : (if_statement "if (local_20[0] != *(size_t *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }" if (parenthesized_expression "(local_20[0] != *(size_t *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20[0] != *(size_t *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) != (pointer_expression "*(size_t *)(in_GS_OFFSET + 0x14)" * (cast_expression "(size_t *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail_local();\n      }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return (char *)puVar3;" return (cast_expression "(char *)puVar3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ;) })) (expression_statement "local_458 = 0xffffffff;" (assignment_expression "local_458 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n    ppuVar4 = __ctype_b_loc();\n    local_458 = needle_len - 1;\n    puVar1 = *ppuVar4;\n    pbVar8 = needle;\n    uVar10 = local_458;\n    do {\n      while (uVar11 = (uint)*pbVar8, (*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) == 0) {\n        shift_table[uVar11] = uVar10;\n        uVar10 = uVar10 - 1;\n        pbVar8 = pbVar8 + 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var5 = __ctype_tolower_loc();\n      pbVar8 = pbVar8 + 1;\n      shift_table[(*pp_Var5)[uVar11]] = uVar10;\n      uVar10 = uVar10 - 1;\n    } while (uVar10 != 0xffffffff);\nLAB_00059cb7:\n    iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);\n    if (iVar6 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        sVar9 = local_440 + needle_len;\n        pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len);\n        if ((pvVar7 != (void *)0x0) || (sVar9 == 0)) goto LAB_00059e30;\n        uVar10 = (uint)haystack[sVar9 - 1];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var5)[uVar10];\n        }\n        uVar10 = shift_table[uVar10];\n        haystack_len = sVar9;\n        if (uVar10 == 0) {\n          uVar10 = local_444;\n          if (local_444 <= local_43c) {\n            uVar10 = local_43c;\n          }\n          if (uVar10 < local_458) {\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }\n          uVar10 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }\n          if (local_450 < local_444 + 1) {\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + sVar12;\n          local_444 = needle_len - sVar12;\n        }\n        else {\n          if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }\n          local_440 = local_440 + uVar10;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }" else (compound_statement "{\n    ppuVar4 = __ctype_b_loc();\n    local_458 = needle_len - 1;\n    puVar1 = *ppuVar4;\n    pbVar8 = needle;\n    uVar10 = local_458;\n    do {\n      while (uVar11 = (uint)*pbVar8, (*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) == 0) {\n        shift_table[uVar11] = uVar10;\n        uVar10 = uVar10 - 1;\n        pbVar8 = pbVar8 + 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var5 = __ctype_tolower_loc();\n      pbVar8 = pbVar8 + 1;\n      shift_table[(*pp_Var5)[uVar11]] = uVar10;\n      uVar10 = uVar10 - 1;\n    } while (uVar10 != 0xffffffff);\nLAB_00059cb7:\n    iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);\n    if (iVar6 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        sVar9 = local_440 + needle_len;\n        pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len);\n        if ((pvVar7 != (void *)0x0) || (sVar9 == 0)) goto LAB_00059e30;\n        uVar10 = (uint)haystack[sVar9 - 1];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var5)[uVar10];\n        }\n        uVar10 = shift_table[uVar10];\n        haystack_len = sVar9;\n        if (uVar10 == 0) {\n          uVar10 = local_444;\n          if (local_444 <= local_43c) {\n            uVar10 = local_43c;\n          }\n          if (uVar10 < local_458) {\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }\n          uVar10 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }\n          if (local_450 < local_444 + 1) {\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + sVar12;\n          local_444 = needle_len - sVar12;\n        }\n        else {\n          if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }\n          local_440 = local_440 + uVar10;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }" { (expression_statement "ppuVar4 = __ctype_b_loc();" (assignment_expression "ppuVar4 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_458 = needle_len - 1;" (assignment_expression "local_458 = needle_len - 1" identifier = (binary_expression "needle_len - 1" identifier - number_literal)) ;) (expression_statement "puVar1 = *ppuVar4;" (assignment_expression "puVar1 = *ppuVar4" identifier = (pointer_expression "*ppuVar4" * identifier)) ;) (expression_statement "pbVar8 = needle;" (assignment_expression "pbVar8 = needle" identifier = identifier) ;) (expression_statement "uVar10 = local_458;" (assignment_expression "uVar10 = local_458" identifier = identifier) ;) (do_statement "do {\n      while (uVar11 = (uint)*pbVar8, (*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) == 0) {\n        shift_table[uVar11] = uVar10;\n        uVar10 = uVar10 - 1;\n        pbVar8 = pbVar8 + 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var5 = __ctype_tolower_loc();\n      pbVar8 = pbVar8 + 1;\n      shift_table[(*pp_Var5)[uVar11]] = uVar10;\n      uVar10 = uVar10 - 1;\n    } while (uVar10 != 0xffffffff);" do (compound_statement "{\n      while (uVar11 = (uint)*pbVar8, (*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) == 0) {\n        shift_table[uVar11] = uVar10;\n        uVar10 = uVar10 - 1;\n        pbVar8 = pbVar8 + 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var5 = __ctype_tolower_loc();\n      pbVar8 = pbVar8 + 1;\n      shift_table[(*pp_Var5)[uVar11]] = uVar10;\n      uVar10 = uVar10 - 1;\n    }" { (while_statement "while (uVar11 = (uint)*pbVar8, (*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) == 0) {\n        shift_table[uVar11] = uVar10;\n        uVar10 = uVar10 - 1;\n        pbVar8 = pbVar8 + 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059cb7;\n      }" while (parenthesized_expression "(uVar11 = (uint)*pbVar8, (*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) == 0)" ( (comma_expression "uVar11 = (uint)*pbVar8, (*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) == 0" (assignment_expression "uVar11 = (uint)*pbVar8" identifier = (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" ( identifier )) * identifier)) , (binary_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) == 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar11 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar11 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar11 * 2 + 1" (binary_expression "(int)puVar1 + uVar11 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar11 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) == number_literal)) )) (compound_statement "{\n        shift_table[uVar11] = uVar10;\n        uVar10 = uVar10 - 1;\n        pbVar8 = pbVar8 + 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059cb7;\n      }" { (expression_statement "shift_table[uVar11] = uVar10;" (assignment_expression "shift_table[uVar11] = uVar10" (subscript_expression "shift_table[uVar11]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (if_statement "if (uVar10 == 0xffffffff) goto LAB_00059cb7;" if (parenthesized_expression "(uVar10 == 0xffffffff)" ( (binary_expression "uVar10 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_00059cb7;" goto statement_identifier ;)) })) (expression_statement "pp_Var5 = __ctype_tolower_loc();" (assignment_expression "pp_Var5 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (expression_statement "shift_table[(*pp_Var5)[uVar11]] = uVar10;" (assignment_expression "shift_table[(*pp_Var5)[uVar11]] = uVar10" (subscript_expression "shift_table[(*pp_Var5)[uVar11]]" identifier [ (subscript_expression "(*pp_Var5)[uVar11]" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * identifier) )) [ identifier ]) ]) = identifier) ;) (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar10 != 0xffffffff)" ( (binary_expression "uVar10 != 0xffffffff" identifier != number_literal) )) ;) (labeled_statement "LAB_00059cb7:\n    iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);" statement_identifier : (expression_statement "iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c);" (assignment_expression "iVar6 = strncasecmp((char *)needle,(char *)puVar3,local_43c)" identifier = (call_expression "strncasecmp((char *)needle,(char *)puVar3,local_43c)" identifier (argument_list "((char *)needle,(char *)puVar3,local_43c)" ( (cast_expression "(char *)needle" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)puVar3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;)) (if_statement "if (iVar6 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        sVar9 = local_440 + needle_len;\n        pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len);\n        if ((pvVar7 != (void *)0x0) || (sVar9 == 0)) goto LAB_00059e30;\n        uVar10 = (uint)haystack[sVar9 - 1];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var5)[uVar10];\n        }\n        uVar10 = shift_table[uVar10];\n        haystack_len = sVar9;\n        if (uVar10 == 0) {\n          uVar10 = local_444;\n          if (local_444 <= local_43c) {\n            uVar10 = local_43c;\n          }\n          if (uVar10 < local_458) {\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }\n          uVar10 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }\n          if (local_450 < local_444 + 1) {\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + sVar12;\n          local_444 = needle_len - sVar12;\n        }\n        else {\n          if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }\n          local_440 = local_440 + uVar10;\n          local_444 = 0;\n        }\n      } while( true );\n    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        sVar9 = local_440 + needle_len;\n        pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len);\n        if ((pvVar7 != (void *)0x0) || (sVar9 == 0)) goto LAB_00059e30;\n        uVar10 = (uint)haystack[sVar9 - 1];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var5)[uVar10];\n        }\n        uVar10 = shift_table[uVar10];\n        haystack_len = sVar9;\n        if (uVar10 == 0) {\n          uVar10 = local_444;\n          if (local_444 <= local_43c) {\n            uVar10 = local_43c;\n          }\n          if (uVar10 < local_458) {\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }\n          uVar10 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }\n          if (local_450 < local_444 + 1) {\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + sVar12;\n          local_444 = needle_len - sVar12;\n        }\n        else {\n          if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }\n          local_440 = local_440 + uVar10;\n          local_444 = 0;\n        }\n      } while( true );\n    }" { (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" identifier = number_literal) ;) (expression_statement "local_440 = 0;" (assignment_expression "local_440 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00059f1f:\n      do {\n        sVar9 = local_440 + needle_len;\n        pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len);\n        if ((pvVar7 != (void *)0x0) || (sVar9 == 0)) goto LAB_00059e30;\n        uVar10 = (uint)haystack[sVar9 - 1];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var5)[uVar10];\n        }\n        uVar10 = shift_table[uVar10];\n        haystack_len = sVar9;\n        if (uVar10 == 0) {\n          uVar10 = local_444;\n          if (local_444 <= local_43c) {\n            uVar10 = local_43c;\n          }\n          if (uVar10 < local_458) {\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }\n          uVar10 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }\n          if (local_450 < local_444 + 1) {\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + sVar12;\n          local_444 = needle_len - sVar12;\n        }\n        else {\n          if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }\n          local_440 = local_440 + uVar10;\n          local_444 = 0;\n        }\n      } while( true );" statement_identifier : (do_statement "do {\n        sVar9 = local_440 + needle_len;\n        pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len);\n        if ((pvVar7 != (void *)0x0) || (sVar9 == 0)) goto LAB_00059e30;\n        uVar10 = (uint)haystack[sVar9 - 1];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var5)[uVar10];\n        }\n        uVar10 = shift_table[uVar10];\n        haystack_len = sVar9;\n        if (uVar10 == 0) {\n          uVar10 = local_444;\n          if (local_444 <= local_43c) {\n            uVar10 = local_43c;\n          }\n          if (uVar10 < local_458) {\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }\n          uVar10 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }\n          if (local_450 < local_444 + 1) {\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + sVar12;\n          local_444 = needle_len - sVar12;\n        }\n        else {\n          if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }\n          local_440 = local_440 + uVar10;\n          local_444 = 0;\n        }\n      } while( true );" do (compound_statement "{\n        sVar9 = local_440 + needle_len;\n        pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len);\n        if ((pvVar7 != (void *)0x0) || (sVar9 == 0)) goto LAB_00059e30;\n        uVar10 = (uint)haystack[sVar9 - 1];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var5)[uVar10];\n        }\n        uVar10 = shift_table[uVar10];\n        haystack_len = sVar9;\n        if (uVar10 == 0) {\n          uVar10 = local_444;\n          if (local_444 <= local_43c) {\n            uVar10 = local_43c;\n          }\n          if (uVar10 < local_458) {\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }\n          uVar10 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }\n          if (local_450 < local_444 + 1) {\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + sVar12;\n          local_444 = needle_len - sVar12;\n        }\n        else {\n          if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }\n          local_440 = local_440 + uVar10;\n          local_444 = 0;\n        }\n      }" { (expression_statement "sVar9 = local_440 + needle_len;" (assignment_expression "sVar9 = local_440 + needle_len" identifier = (binary_expression "local_440 + needle_len" identifier + identifier)) ;) (expression_statement "pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len);" (assignment_expression "pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len)" identifier = (call_expression "rpl_memchr(haystack + haystack_len,0,sVar9 - haystack_len)" identifier (argument_list "(haystack + haystack_len,0,sVar9 - haystack_len)" ( (binary_expression "haystack + haystack_len" identifier + identifier) , number_literal , (binary_expression "sVar9 - haystack_len" identifier - identifier) )))) ;) (if_statement "if ((pvVar7 != (void *)0x0) || (sVar9 == 0)) goto LAB_00059e30;" if (parenthesized_expression "((pvVar7 != (void *)0x0) || (sVar9 == 0))" ( (binary_expression "(pvVar7 != (void *)0x0) || (sVar9 == 0)" (parenthesized_expression "(pvVar7 != (void *)0x0)" ( (binary_expression "pvVar7 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(sVar9 == 0)" ( (binary_expression "sVar9 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00059e30;" goto statement_identifier ;)) (expression_statement "uVar10 = (uint)haystack[sVar9 - 1];" (assignment_expression "uVar10 = (uint)haystack[sVar9 - 1]" identifier = (cast_expression "(uint)haystack[sVar9 - 1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "haystack[sVar9 - 1]" identifier [ (binary_expression "sVar9 - 1" identifier - number_literal) ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var5)[uVar10];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar10 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar10 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar10 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar10 * 2 + 1" (binary_expression "(int)puVar1 + uVar10 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar10 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var5 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var5)[uVar10];\n        }" { (expression_statement "pp_Var5 = __ctype_tolower_loc();" (assignment_expression "pp_Var5 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar10 = (*pp_Var5)[uVar10];" (assignment_expression "uVar10 = (*pp_Var5)[uVar10]" identifier = (subscript_expression "(*pp_Var5)[uVar10]" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar10 = shift_table[uVar10];" (assignment_expression "uVar10 = shift_table[uVar10]" identifier = (subscript_expression "shift_table[uVar10]" identifier [ identifier ])) ;) (expression_statement "haystack_len = sVar9;" (assignment_expression "haystack_len = sVar9" identifier = identifier) ;) (if_statement "if (uVar10 == 0) {\n          uVar10 = local_444;\n          if (local_444 <= local_43c) {\n            uVar10 = local_43c;\n          }\n          if (uVar10 < local_458) {\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }\n          uVar10 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }\n          if (local_450 < local_444 + 1) {\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + sVar12;\n          local_444 = needle_len - sVar12;\n        }\n        else {\n          if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }\n          local_440 = local_440 + uVar10;\n          local_444 = 0;\n        }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar10 = local_444;\n          if (local_444 <= local_43c) {\n            uVar10 = local_43c;\n          }\n          if (uVar10 < local_458) {\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }\n          uVar10 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }\n          if (local_450 < local_444 + 1) {\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + sVar12;\n          local_444 = needle_len - sVar12;\n        }" { (expression_statement "uVar10 = local_444;" (assignment_expression "uVar10 = local_444" identifier = identifier) ;) (if_statement "if (local_444 <= local_43c) {\n            uVar10 = local_43c;\n          }" if (parenthesized_expression "(local_444 <= local_43c)" ( (binary_expression "local_444 <= local_43c" identifier <= identifier) )) (compound_statement "{\n            uVar10 = local_43c;\n          }" { (expression_statement "uVar10 = local_43c;" (assignment_expression "uVar10 = local_43c" identifier = identifier) ;) })) (if_statement "if (uVar10 < local_458) {\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }" if (parenthesized_expression "(uVar10 < local_458)" ( (binary_expression "uVar10 < local_458" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);\n          }" { (do_statement "do {\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            } while (uVar10 != local_458);" do (compound_statement "{\n              uVar11 = (uint)needle[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar13 = (uint)haystack[uVar10 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }\n              if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }\n              uVar10 = uVar10 + 1;\n            }" { (expression_statement "uVar11 = (uint)needle[uVar10];" (assignment_expression "uVar11 = (uint)needle[uVar10]" identifier = (cast_expression "(uint)needle[uVar10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "needle[uVar10]" identifier [ identifier ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar11 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar11 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar11 * 2 + 1" (binary_expression "(int)puVar1 + uVar11 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar11 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }" { (expression_statement "pp_Var5 = __ctype_tolower_loc();" (assignment_expression "pp_Var5 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar11 = (*pp_Var5)[uVar11];" (assignment_expression "uVar11 = (*pp_Var5)[uVar11]" identifier = (subscript_expression "(*pp_Var5)[uVar11]" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar13 = (uint)haystack[uVar10 + local_440];" (assignment_expression "uVar13 = (uint)haystack[uVar10 + local_440]" identifier = (cast_expression "(uint)haystack[uVar10 + local_440]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "haystack[uVar10 + local_440]" identifier [ (binary_expression "uVar10 + local_440" identifier + identifier) ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar13 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar13 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar13 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar13 * 2 + 1" (binary_expression "(int)puVar1 + uVar13 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar13 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                pp_Var5 = __ctype_tolower_loc();\n                uVar13 = (*pp_Var5)[uVar13];\n              }" { (expression_statement "pp_Var5 = __ctype_tolower_loc();" (assignment_expression "pp_Var5 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar13 = (*pp_Var5)[uVar13];" (assignment_expression "uVar13 = (*pp_Var5)[uVar13]" identifier = (subscript_expression "(*pp_Var5)[uVar13]" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * identifier) )) [ identifier ])) ;) })) (if_statement "if (uVar11 != uVar13) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }" if (parenthesized_expression "(uVar11 != uVar13)" ( (binary_expression "uVar11 != uVar13" identifier != identifier) )) (compound_statement "{\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar10;\n                goto LAB_00059f1f;\n              }" { (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" identifier = number_literal) ;) (expression_statement "local_440 = local_440 + (1 - local_43c) + uVar10;" (assignment_expression "local_440 = local_440 + (1 - local_43c) + uVar10" identifier = (binary_expression "local_440 + (1 - local_43c) + uVar10" (binary_expression "local_440 + (1 - local_43c)" identifier + (parenthesized_expression "(1 - local_43c)" ( (binary_expression "1 - local_43c" number_literal - identifier) ))) + identifier)) ;) (goto_statement "goto LAB_00059f1f;" goto statement_identifier ;) })) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar10 != local_458)" ( (binary_expression "uVar10 != local_458" identifier != identifier) )) ;) })) (expression_statement "uVar10 = local_43c;" (assignment_expression "uVar10 = local_43c" identifier = identifier) ;) (expression_statement "local_450 = local_43c;" (assignment_expression "local_450 = local_43c" identifier = identifier) ;) (if_statement "if (local_444 < local_43c) {\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }" if (parenthesized_expression "(local_444 < local_43c)" ( (binary_expression "local_444 < local_43c" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));\n          }" { (do_statement "do {\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            } while ((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13));" do (compound_statement "{\n              uVar13 = uVar10 - 1;\n              uVar11 = (uint)needle[uVar13];\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }\n              uVar14 = (uint)haystack[uVar13 + local_440];\n              if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }\n              local_450 = uVar10;\n            }" { (expression_statement "uVar13 = uVar10 - 1;" (assignment_expression "uVar13 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "uVar11 = (uint)needle[uVar13];" (assignment_expression "uVar11 = (uint)needle[uVar13]" identifier = (cast_expression "(uint)needle[uVar13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "needle[uVar13]" identifier [ identifier ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar11 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar11 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar11 * 2 + 1" (binary_expression "(int)puVar1 + uVar11 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar11 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                pp_Var5 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var5)[uVar11];\n              }" { (expression_statement "pp_Var5 = __ctype_tolower_loc();" (assignment_expression "pp_Var5 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar11 = (*pp_Var5)[uVar11];" (assignment_expression "uVar11 = (*pp_Var5)[uVar11]" identifier = (subscript_expression "(*pp_Var5)[uVar11]" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar14 = (uint)haystack[uVar13 + local_440];" (assignment_expression "uVar14 = (uint)haystack[uVar13 + local_440]" identifier = (cast_expression "(uint)haystack[uVar13 + local_440]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "haystack[uVar13 + local_440]" identifier [ (binary_expression "uVar13 + local_440" identifier + identifier) ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar14 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar14 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar14 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar14 * 2 + 1" (binary_expression "(int)puVar1 + uVar14 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar14 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                pp_Var5 = __ctype_tolower_loc();\n                uVar14 = (*pp_Var5)[uVar14];\n              }" { (expression_statement "pp_Var5 = __ctype_tolower_loc();" (assignment_expression "pp_Var5 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar14 = (*pp_Var5)[uVar14];" (assignment_expression "uVar14 = (*pp_Var5)[uVar14]" identifier = (subscript_expression "(*pp_Var5)[uVar14]" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * identifier) )) [ identifier ])) ;) })) (expression_statement "local_450 = uVar10;" (assignment_expression "local_450 = uVar10" identifier = identifier) ;) }) while (parenthesized_expression "((uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13))" ( (binary_expression "(uVar11 == uVar14) &&\n                    (uVar10 = uVar13, local_450 = local_444, local_444 != uVar13)" (parenthesized_expression "(uVar11 == uVar14)" ( (binary_expression "uVar11 == uVar14" identifier == identifier) )) && (parenthesized_expression "(uVar10 = uVar13, local_450 = local_444, local_444 != uVar13)" ( (comma_expression "uVar10 = uVar13, local_450 = local_444, local_444 != uVar13" (assignment_expression "uVar10 = uVar13" identifier = identifier) , (comma_expression "local_450 = local_444, local_444 != uVar13" (assignment_expression "local_450 = local_444" identifier = identifier) , (binary_expression "local_444 != uVar13" identifier != identifier))) ))) )) ;) })) (if_statement "if (local_450 < local_444 + 1) {\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }" if (parenthesized_expression "(local_450 < local_444 + 1)" ( (binary_expression "local_450 < local_444 + 1" identifier < (binary_expression "local_444 + 1" identifier + number_literal)) )) (compound_statement "{\n            puVar3 = haystack + local_440;\n            goto LAB_00059e32;\n          }" { (expression_statement "puVar3 = haystack + local_440;" (assignment_expression "puVar3 = haystack + local_440" identifier = (binary_expression "haystack + local_440" identifier + identifier)) ;) (goto_statement "goto LAB_00059e32;" goto statement_identifier ;) })) (expression_statement "local_440 = local_440 + sVar12;" (assignment_expression "local_440 = local_440 + sVar12" identifier = (binary_expression "local_440 + sVar12" identifier + identifier)) ;) (expression_statement "local_444 = needle_len - sVar12;" (assignment_expression "local_444 = needle_len - sVar12" identifier = (binary_expression "needle_len - sVar12" identifier - identifier)) ;) }) (else_clause "else {\n          if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }\n          local_440 = local_440 + uVar10;\n          local_444 = 0;\n        }" else (compound_statement "{\n          if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }\n          local_440 = local_440 + uVar10;\n          local_444 = 0;\n        }" { (if_statement "if ((uVar10 < sVar12) && (local_444 != 0)) {\n            uVar10 = needle_len - sVar12;\n          }" if (parenthesized_expression "((uVar10 < sVar12) && (local_444 != 0))" ( (binary_expression "(uVar10 < sVar12) && (local_444 != 0)" (parenthesized_expression "(uVar10 < sVar12)" ( (binary_expression "uVar10 < sVar12" identifier < identifier) )) && (parenthesized_expression "(local_444 != 0)" ( (binary_expression "local_444 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            uVar10 = needle_len - sVar12;\n          }" { (expression_statement "uVar10 = needle_len - sVar12;" (assignment_expression "uVar10 = needle_len - sVar12" identifier = (binary_expression "needle_len - sVar12" identifier - identifier)) ;) })) (expression_statement "local_440 = local_440 + uVar10;" (assignment_expression "local_440 = local_440 + uVar10" identifier = (binary_expression "local_440 + uVar10" identifier + identifier)) ;) (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" identifier = number_literal) ;) }))) }) while (parenthesized_expression "( true )" ( true )) ;)) })) }))) (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = needle_len - local_43c;" (assignment_expression "uVar10 = needle_len - local_43c" identifier = (binary_expression "needle_len - local_43c" identifier - identifier)) ;) (if_statement "if (needle_len - local_43c < local_43c) {\n    uVar10 = local_43c;\n  }" if (parenthesized_expression "(needle_len - local_43c < local_43c)" ( (binary_expression "needle_len - local_43c < local_43c" (binary_expression "needle_len - local_43c" identifier - identifier) < identifier) )) (compound_statement "{\n    uVar10 = local_43c;\n  }" { (expression_statement "uVar10 = local_43c;" (assignment_expression "uVar10 = local_43c" identifier = identifier) ;) })) (expression_statement "period = uVar10 + 1;" (assignment_expression "period = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_00059d28:\n  do {\n    sVar12 = local_444 + needle_len;\n    pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar12 - haystack_len);\n    if ((sVar12 == 0) || (pvVar7 != (void *)0x0)) goto LAB_00059e30;\n    ppuVar4 = __ctype_b_loc();\n    puVar1 = *ppuVar4;\n    uVar11 = (uint)haystack[sVar12 - 1];\n    if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n      pp_Var5 = __ctype_tolower_loc();\n      uVar11 = (*pp_Var5)[uVar11];\n    }\n    haystack_len = sVar12;\n    if (shift_table[uVar11] == 0) {\n      puVar3 = haystack + local_444;\n      for (uVar11 = local_43c; uVar13 = local_43c, uVar11 < local_458; uVar11 = uVar11 + 1) {\n        uVar13 = (uint)needle[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar13 = (*pp_Var5)[uVar13];\n        }\n        uVar14 = (uint)puVar3[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n        if (uVar13 != uVar14) {\n          local_444 = local_444 + (1 - local_43c) + uVar11;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar13 = uVar13 - 1;\n        if (uVar13 == 0xffffffff) goto LAB_00059e32;\n        uVar11 = (uint)needle[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var5)[uVar11];\n        }\n        uVar14 = (uint)puVar3[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n      } while (uVar11 == uVar14);\n      local_444 = local_444 + uVar10 + 1;\n    }\n    else {\n      local_444 = local_444 + shift_table[uVar11];\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    sVar12 = local_444 + needle_len;\n    pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar12 - haystack_len);\n    if ((sVar12 == 0) || (pvVar7 != (void *)0x0)) goto LAB_00059e30;\n    ppuVar4 = __ctype_b_loc();\n    puVar1 = *ppuVar4;\n    uVar11 = (uint)haystack[sVar12 - 1];\n    if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n      pp_Var5 = __ctype_tolower_loc();\n      uVar11 = (*pp_Var5)[uVar11];\n    }\n    haystack_len = sVar12;\n    if (shift_table[uVar11] == 0) {\n      puVar3 = haystack + local_444;\n      for (uVar11 = local_43c; uVar13 = local_43c, uVar11 < local_458; uVar11 = uVar11 + 1) {\n        uVar13 = (uint)needle[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar13 = (*pp_Var5)[uVar13];\n        }\n        uVar14 = (uint)puVar3[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n        if (uVar13 != uVar14) {\n          local_444 = local_444 + (1 - local_43c) + uVar11;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar13 = uVar13 - 1;\n        if (uVar13 == 0xffffffff) goto LAB_00059e32;\n        uVar11 = (uint)needle[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var5)[uVar11];\n        }\n        uVar14 = (uint)puVar3[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n      } while (uVar11 == uVar14);\n      local_444 = local_444 + uVar10 + 1;\n    }\n    else {\n      local_444 = local_444 + shift_table[uVar11];\n    }\n  } while( true );" do (compound_statement "{\n    sVar12 = local_444 + needle_len;\n    pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar12 - haystack_len);\n    if ((sVar12 == 0) || (pvVar7 != (void *)0x0)) goto LAB_00059e30;\n    ppuVar4 = __ctype_b_loc();\n    puVar1 = *ppuVar4;\n    uVar11 = (uint)haystack[sVar12 - 1];\n    if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n      pp_Var5 = __ctype_tolower_loc();\n      uVar11 = (*pp_Var5)[uVar11];\n    }\n    haystack_len = sVar12;\n    if (shift_table[uVar11] == 0) {\n      puVar3 = haystack + local_444;\n      for (uVar11 = local_43c; uVar13 = local_43c, uVar11 < local_458; uVar11 = uVar11 + 1) {\n        uVar13 = (uint)needle[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar13 = (*pp_Var5)[uVar13];\n        }\n        uVar14 = (uint)puVar3[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n        if (uVar13 != uVar14) {\n          local_444 = local_444 + (1 - local_43c) + uVar11;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar13 = uVar13 - 1;\n        if (uVar13 == 0xffffffff) goto LAB_00059e32;\n        uVar11 = (uint)needle[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var5)[uVar11];\n        }\n        uVar14 = (uint)puVar3[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n      } while (uVar11 == uVar14);\n      local_444 = local_444 + uVar10 + 1;\n    }\n    else {\n      local_444 = local_444 + shift_table[uVar11];\n    }\n  }" { (expression_statement "sVar12 = local_444 + needle_len;" (assignment_expression "sVar12 = local_444 + needle_len" identifier = (binary_expression "local_444 + needle_len" identifier + identifier)) ;) (expression_statement "pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar12 - haystack_len);" (assignment_expression "pvVar7 = rpl_memchr(haystack + haystack_len,0,sVar12 - haystack_len)" identifier = (call_expression "rpl_memchr(haystack + haystack_len,0,sVar12 - haystack_len)" identifier (argument_list "(haystack + haystack_len,0,sVar12 - haystack_len)" ( (binary_expression "haystack + haystack_len" identifier + identifier) , number_literal , (binary_expression "sVar12 - haystack_len" identifier - identifier) )))) ;) (if_statement "if ((sVar12 == 0) || (pvVar7 != (void *)0x0)) goto LAB_00059e30;" if (parenthesized_expression "((sVar12 == 0) || (pvVar7 != (void *)0x0))" ( (binary_expression "(sVar12 == 0) || (pvVar7 != (void *)0x0)" (parenthesized_expression "(sVar12 == 0)" ( (binary_expression "sVar12 == 0" identifier == number_literal) )) || (parenthesized_expression "(pvVar7 != (void *)0x0)" ( (binary_expression "pvVar7 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_00059e30;" goto statement_identifier ;)) (expression_statement "ppuVar4 = __ctype_b_loc();" (assignment_expression "ppuVar4 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar1 = *ppuVar4;" (assignment_expression "puVar1 = *ppuVar4" identifier = (pointer_expression "*ppuVar4" * identifier)) ;) (expression_statement "uVar11 = (uint)haystack[sVar12 - 1];" (assignment_expression "uVar11 = (uint)haystack[sVar12 - 1]" identifier = (cast_expression "(uint)haystack[sVar12 - 1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "haystack[sVar12 - 1]" identifier [ (binary_expression "sVar12 - 1" identifier - number_literal) ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n      pp_Var5 = __ctype_tolower_loc();\n      uVar11 = (*pp_Var5)[uVar11];\n    }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar11 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar11 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar11 * 2 + 1" (binary_expression "(int)puVar1 + uVar11 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar11 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      pp_Var5 = __ctype_tolower_loc();\n      uVar11 = (*pp_Var5)[uVar11];\n    }" { (expression_statement "pp_Var5 = __ctype_tolower_loc();" (assignment_expression "pp_Var5 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar11 = (*pp_Var5)[uVar11];" (assignment_expression "uVar11 = (*pp_Var5)[uVar11]" identifier = (subscript_expression "(*pp_Var5)[uVar11]" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * identifier) )) [ identifier ])) ;) })) (expression_statement "haystack_len = sVar12;" (assignment_expression "haystack_len = sVar12" identifier = identifier) ;) (if_statement "if (shift_table[uVar11] == 0) {\n      puVar3 = haystack + local_444;\n      for (uVar11 = local_43c; uVar13 = local_43c, uVar11 < local_458; uVar11 = uVar11 + 1) {\n        uVar13 = (uint)needle[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar13 = (*pp_Var5)[uVar13];\n        }\n        uVar14 = (uint)puVar3[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n        if (uVar13 != uVar14) {\n          local_444 = local_444 + (1 - local_43c) + uVar11;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar13 = uVar13 - 1;\n        if (uVar13 == 0xffffffff) goto LAB_00059e32;\n        uVar11 = (uint)needle[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var5)[uVar11];\n        }\n        uVar14 = (uint)puVar3[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n      } while (uVar11 == uVar14);\n      local_444 = local_444 + uVar10 + 1;\n    }\n    else {\n      local_444 = local_444 + shift_table[uVar11];\n    }" if (parenthesized_expression "(shift_table[uVar11] == 0)" ( (binary_expression "shift_table[uVar11] == 0" (subscript_expression "shift_table[uVar11]" identifier [ identifier ]) == number_literal) )) (compound_statement "{\n      puVar3 = haystack + local_444;\n      for (uVar11 = local_43c; uVar13 = local_43c, uVar11 < local_458; uVar11 = uVar11 + 1) {\n        uVar13 = (uint)needle[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar13 = (*pp_Var5)[uVar13];\n        }\n        uVar14 = (uint)puVar3[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n        if (uVar13 != uVar14) {\n          local_444 = local_444 + (1 - local_43c) + uVar11;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar13 = uVar13 - 1;\n        if (uVar13 == 0xffffffff) goto LAB_00059e32;\n        uVar11 = (uint)needle[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var5)[uVar11];\n        }\n        uVar14 = (uint)puVar3[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n      } while (uVar11 == uVar14);\n      local_444 = local_444 + uVar10 + 1;\n    }" { (expression_statement "puVar3 = haystack + local_444;" (assignment_expression "puVar3 = haystack + local_444" identifier = (binary_expression "haystack + local_444" identifier + identifier)) ;) (for_statement "for (uVar11 = local_43c; uVar13 = local_43c, uVar11 < local_458; uVar11 = uVar11 + 1) {\n        uVar13 = (uint)needle[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar13 = (*pp_Var5)[uVar13];\n        }\n        uVar14 = (uint)puVar3[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n        if (uVar13 != uVar14) {\n          local_444 = local_444 + (1 - local_43c) + uVar11;\n          goto LAB_00059d28;\n        }\n      }" for ( (assignment_expression "uVar11 = local_43c" identifier = identifier) ; (comma_expression "uVar13 = local_43c, uVar11 < local_458" (assignment_expression "uVar13 = local_43c" identifier = identifier) , (binary_expression "uVar11 < local_458" identifier < identifier)) ; (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ) (compound_statement "{\n        uVar13 = (uint)needle[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar13 = (*pp_Var5)[uVar13];\n        }\n        uVar14 = (uint)puVar3[uVar11];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n        if (uVar13 != uVar14) {\n          local_444 = local_444 + (1 - local_43c) + uVar11;\n          goto LAB_00059d28;\n        }\n      }" { (expression_statement "uVar13 = (uint)needle[uVar11];" (assignment_expression "uVar13 = (uint)needle[uVar11]" identifier = (cast_expression "(uint)needle[uVar11]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "needle[uVar11]" identifier [ identifier ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar13 = (*pp_Var5)[uVar13];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar13 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar13 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar13 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar13 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar13 * 2 + 1" (binary_expression "(int)puVar1 + uVar13 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar13 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var5 = __ctype_tolower_loc();\n          uVar13 = (*pp_Var5)[uVar13];\n        }" { (expression_statement "pp_Var5 = __ctype_tolower_loc();" (assignment_expression "pp_Var5 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar13 = (*pp_Var5)[uVar13];" (assignment_expression "uVar13 = (*pp_Var5)[uVar13]" identifier = (subscript_expression "(*pp_Var5)[uVar13]" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar14 = (uint)puVar3[uVar11];" (assignment_expression "uVar14 = (uint)puVar3[uVar11]" identifier = (cast_expression "(uint)puVar3[uVar11]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar3[uVar11]" identifier [ identifier ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar14 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar14 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar14 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar14 * 2 + 1" (binary_expression "(int)puVar1 + uVar14 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar14 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }" { (expression_statement "pp_Var5 = __ctype_tolower_loc();" (assignment_expression "pp_Var5 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar14 = (*pp_Var5)[uVar14];" (assignment_expression "uVar14 = (*pp_Var5)[uVar14]" identifier = (subscript_expression "(*pp_Var5)[uVar14]" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * identifier) )) [ identifier ])) ;) })) (if_statement "if (uVar13 != uVar14) {\n          local_444 = local_444 + (1 - local_43c) + uVar11;\n          goto LAB_00059d28;\n        }" if (parenthesized_expression "(uVar13 != uVar14)" ( (binary_expression "uVar13 != uVar14" identifier != identifier) )) (compound_statement "{\n          local_444 = local_444 + (1 - local_43c) + uVar11;\n          goto LAB_00059d28;\n        }" { (expression_statement "local_444 = local_444 + (1 - local_43c) + uVar11;" (assignment_expression "local_444 = local_444 + (1 - local_43c) + uVar11" identifier = (binary_expression "local_444 + (1 - local_43c) + uVar11" (binary_expression "local_444 + (1 - local_43c)" identifier + (parenthesized_expression "(1 - local_43c)" ( (binary_expression "1 - local_43c" number_literal - identifier) ))) + identifier)) ;) (goto_statement "goto LAB_00059d28;" goto statement_identifier ;) })) })) (do_statement "do {\n        uVar13 = uVar13 - 1;\n        if (uVar13 == 0xffffffff) goto LAB_00059e32;\n        uVar11 = (uint)needle[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var5)[uVar11];\n        }\n        uVar14 = (uint)puVar3[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n      } while (uVar11 == uVar14);" do (compound_statement "{\n        uVar13 = uVar13 - 1;\n        if (uVar13 == 0xffffffff) goto LAB_00059e32;\n        uVar11 = (uint)needle[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var5)[uVar11];\n        }\n        uVar14 = (uint)puVar3[uVar13];\n        if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }\n      }" { (expression_statement "uVar13 = uVar13 - 1;" (assignment_expression "uVar13 = uVar13 - 1" identifier = (binary_expression "uVar13 - 1" identifier - number_literal)) ;) (if_statement "if (uVar13 == 0xffffffff) goto LAB_00059e32;" if (parenthesized_expression "(uVar13 == 0xffffffff)" ( (binary_expression "uVar13 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_00059e32;" goto statement_identifier ;)) (expression_statement "uVar11 = (uint)needle[uVar13];" (assignment_expression "uVar11 = (uint)needle[uVar13]" identifier = (cast_expression "(uint)needle[uVar13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "needle[uVar13]" identifier [ identifier ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var5)[uVar11];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar11 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar11 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar11 * 2 + 1" (binary_expression "(int)puVar1 + uVar11 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar11 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var5 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var5)[uVar11];\n        }" { (expression_statement "pp_Var5 = __ctype_tolower_loc();" (assignment_expression "pp_Var5 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar11 = (*pp_Var5)[uVar11];" (assignment_expression "uVar11 = (*pp_Var5)[uVar11]" identifier = (subscript_expression "(*pp_Var5)[uVar11]" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar14 = (uint)puVar3[uVar13];" (assignment_expression "uVar14 = (uint)puVar3[uVar13]" identifier = (cast_expression "(uint)puVar3[uVar13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar3[uVar13]" identifier [ identifier ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0) {\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar14 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar14 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar14 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar14 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar14 * 2 + 1" (binary_expression "(int)puVar1 + uVar14 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar14 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var5 = __ctype_tolower_loc();\n          uVar14 = (*pp_Var5)[uVar14];\n        }" { (expression_statement "pp_Var5 = __ctype_tolower_loc();" (assignment_expression "pp_Var5 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar14 = (*pp_Var5)[uVar14];" (assignment_expression "uVar14 = (*pp_Var5)[uVar14]" identifier = (subscript_expression "(*pp_Var5)[uVar14]" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * identifier) )) [ identifier ])) ;) })) }) while (parenthesized_expression "(uVar11 == uVar14)" ( (binary_expression "uVar11 == uVar14" identifier == identifier) )) ;) (expression_statement "local_444 = local_444 + uVar10 + 1;" (assignment_expression "local_444 = local_444 + uVar10 + 1" identifier = (binary_expression "local_444 + uVar10 + 1" (binary_expression "local_444 + uVar10" identifier + identifier) + number_literal)) ;) }) (else_clause "else {\n      local_444 = local_444 + shift_table[uVar11];\n    }" else (compound_statement "{\n      local_444 = local_444 + shift_table[uVar11];\n    }" { (expression_statement "local_444 = local_444 + shift_table[uVar11];" (assignment_expression "local_444 = local_444 + shift_table[uVar11]" identifier = (binary_expression "local_444 + shift_table[uVar11]" identifier + (subscript_expression "shift_table[uVar11]" identifier [ identifier ]))) ;) }))) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "int __regparm3 FUN_00059be0(int param_1,int param_2,byte *param_3,uint param_4)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int in_GS_OFFSET;\n  uint local_458;\n  uint local_450;\n  uint local_444;\n  int local_440;\n  uint local_43c;\n  uint local_434;\n  uint local_424;\n  uint local_420 [256];\n  uint local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x59beb;\n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  if (param_4 < 3) {\n    local_43c = param_4 - 1;\n    local_434 = 1;\n  }\n  else {\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }\n  puVar2 = local_420;\n  do {\n    *puVar2 = param_4;\n    puVar2 = puVar2 + 1;\n  } while (local_20 != puVar2);\n  if (param_4 == 0) {\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }\n      return local_440;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }\n  local_444 = 0;\n  uVar7 = param_4 - local_43c;\n  if (param_4 - local_43c < local_43c) {\n    uVar7 = local_43c;\n  }\nLAB_00059d28:\n  do {\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  } while( true );\n}\n\n" (function_definition "int __regparm3 FUN_00059be0(int param_1,int param_2,byte *param_3,uint param_4)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int in_GS_OFFSET;\n  uint local_458;\n  uint local_450;\n  uint local_444;\n  int local_440;\n  uint local_43c;\n  uint local_434;\n  uint local_424;\n  uint local_420 [256];\n  uint local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x59beb;\n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  if (param_4 < 3) {\n    local_43c = param_4 - 1;\n    local_434 = 1;\n  }\n  else {\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }\n  puVar2 = local_420;\n  do {\n    *puVar2 = param_4;\n    puVar2 = puVar2 + 1;\n  } while (local_20 != puVar2);\n  if (param_4 == 0) {\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }\n      return local_440;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }\n  local_444 = 0;\n  uVar7 = param_4 - local_43c;\n  if (param_4 - local_43c < local_43c) {\n    uVar7 = local_43c;\n  }\nLAB_00059d28:\n  do {\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  } while( true );\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00059be0(int param_1,int param_2,byte *param_3,uint param_4)" identifier (parameter_list "(int param_1,int param_2,byte *param_3,uint param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  ushort *puVar1;\n  uint *puVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int in_GS_OFFSET;\n  uint local_458;\n  uint local_450;\n  uint local_444;\n  int local_440;\n  uint local_43c;\n  uint local_434;\n  uint local_424;\n  uint local_420 [256];\n  uint local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x59beb;\n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  if (param_4 < 3) {\n    local_43c = param_4 - 1;\n    local_434 = 1;\n  }\n  else {\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }\n  puVar2 = local_420;\n  do {\n    *puVar2 = param_4;\n    puVar2 = puVar2 + 1;\n  } while (local_20 != puVar2);\n  if (param_4 == 0) {\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }\n      return local_440;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }\n  local_444 = 0;\n  uVar7 = param_4 - local_43c;\n  if (param_4 - local_43c < local_43c) {\n    uVar7 = local_43c;\n  }\nLAB_00059d28:\n  do {\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  } while( true );\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * 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 "int iVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_458;" type_identifier identifier ;) (declaration "uint local_450;" type_identifier identifier ;) (declaration "uint local_444;" type_identifier identifier ;) (declaration "int local_440;" primitive_type identifier ;) (declaration "uint local_43c;" type_identifier identifier ;) (declaration "uint local_434;" type_identifier identifier ;) (declaration "uint local_424;" type_identifier identifier ;) (declaration "uint local_420 [256];" type_identifier (array_declarator "local_420 [256]" identifier [ number_literal ]) ;) (declaration "uint local_20 [3];" type_identifier (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x59beb;" (assignment_expression "uStack_14 = 0x59beb" identifier = number_literal) ;) (expression_statement "local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20[0] = *(uint *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(in_GS_OFFSET + 0x14)" * (cast_expression "(uint *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (param_4 < 3) {\n    local_43c = param_4 - 1;\n    local_434 = 1;\n  }\n  else {\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }" if (parenthesized_expression "(param_4 < 3)" ( (binary_expression "param_4 < 3" identifier < number_literal) )) (compound_statement "{\n    local_43c = param_4 - 1;\n    local_434 = 1;\n  }" { (expression_statement "local_43c = param_4 - 1;" (assignment_expression "local_43c = param_4 - 1" identifier = (binary_expression "param_4 - 1" identifier - number_literal)) ;) (expression_statement "local_434 = 1;" (assignment_expression "local_434 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }" else (compound_statement "{\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }" { (expression_statement "local_43c = FUN_00059940();" (assignment_expression "local_43c = FUN_00059940()" identifier = (call_expression "FUN_00059940()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_434 = local_424;" (assignment_expression "local_434 = local_424" identifier = identifier) ;) }))) (expression_statement "puVar2 = local_420;" (assignment_expression "puVar2 = local_420" identifier = identifier) ;) (do_statement "do {\n    *puVar2 = param_4;\n    puVar2 = puVar2 + 1;\n  } while (local_20 != puVar2);" do (compound_statement "{\n    *puVar2 = param_4;\n    puVar2 = puVar2 + 1;\n  }" { (expression_statement "*puVar2 = param_4;" (assignment_expression "*puVar2 = param_4" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_20 != puVar2)" ( (binary_expression "local_20 != puVar2" identifier != identifier) )) ;) (if_statement "if (param_4 == 0) {\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }\n      return local_440;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }\n      return local_440;\n    }\n    local_458 = 0xffffffff;\n  }" { (expression_statement "iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);" (assignment_expression "iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c)" identifier = (call_expression "strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c)" identifier (argument_list "((char *)param_3,(char *)(param_3 + local_434),local_43c)" ( (cast_expression "(char *)param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)(param_3 + local_434)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + local_434)" ( (binary_expression "param_3 + local_434" identifier + identifier) ))) , identifier )))) ;) (if_statement "if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }\n      return local_440;\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }\n      return local_440;\n    }" { (labeled_statement "LAB_00059e30:\n      local_440 = 0;" statement_identifier : (expression_statement "local_440 = 0;" (assignment_expression "local_440 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }" statement_identifier : (if_statement "if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }" if (parenthesized_expression "(local_20[0] != *(uint *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) != (pointer_expression "*(uint *)(in_GS_OFFSET + 0x14)" * (cast_expression "(uint *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n        FUN_0005a8b0();\n      }" { (expression_statement "FUN_0005a8b0();" (call_expression "FUN_0005a8b0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_440;" return identifier ;) })) (expression_statement "local_458 = 0xffffffff;" (assignment_expression "local_458 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }" else (compound_statement "{\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }" { (expression_statement "ppuVar3 = __ctype_b_loc();" (assignment_expression "ppuVar3 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_458 = param_4 - 1;" (assignment_expression "local_458 = param_4 - 1" identifier = (binary_expression "param_4 - 1" identifier - number_literal)) ;) (expression_statement "puVar1 = *ppuVar3;" (assignment_expression "puVar1 = *ppuVar3" identifier = (pointer_expression "*ppuVar3" * identifier)) ;) (expression_statement "pbVar6 = param_3;" (assignment_expression "pbVar6 = param_3" identifier = identifier) ;) (expression_statement "uVar7 = local_458;" (assignment_expression "uVar7 = local_458" identifier = identifier) ;) (do_statement "do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);" do (compound_statement "{\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    }" { (while_statement "while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }" while (parenthesized_expression "(uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0)" ( (comma_expression "uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0" (assignment_expression "uVar8 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) , (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar8 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) == number_literal)) )) (compound_statement "{\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }" { (expression_statement "local_420[uVar8] = uVar7;" (assignment_expression "local_420[uVar8] = uVar7" (subscript_expression "local_420[uVar8]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar7 = uVar7 - 1;" (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if (uVar7 == 0xffffffff) goto LAB_00059cb7;" if (parenthesized_expression "(uVar7 == 0xffffffff)" ( (binary_expression "uVar7 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_00059cb7;" goto statement_identifier ;)) })) (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 "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "local_420[(*pp_Var4)[uVar8]] = uVar7;" (assignment_expression "local_420[(*pp_Var4)[uVar8]] = uVar7" (subscript_expression "local_420[(*pp_Var4)[uVar8]]" identifier [ (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ]) ]) = identifier) ;) (expression_statement "uVar7 = uVar7 - 1;" (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar7 != 0xffffffff)" ( (binary_expression "uVar7 != 0xffffffff" identifier != number_literal) )) ;) (labeled_statement "LAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);" statement_identifier : (expression_statement "iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);" (assignment_expression "iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c)" identifier = (call_expression "strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c)" identifier (argument_list "((char *)param_3,(char *)(param_3 + local_434),local_43c)" ( (cast_expression "(char *)param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)(param_3 + local_434)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + local_434)" ( (binary_expression "param_3 + local_434" identifier + identifier) ))) , identifier )))) ;)) (if_statement "if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }" { (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" identifier = number_literal) ;) (expression_statement "local_440 = 0;" (assignment_expression "local_440 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );" statement_identifier : (do_statement "do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );" do (compound_statement "{\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      }" { (expression_statement "iVar9 = local_440 + param_4;" (assignment_expression "iVar9 = local_440 + param_4" identifier = (binary_expression "local_440 + param_4" identifier + identifier)) ;) (expression_statement "iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);" (assignment_expression "iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2)" identifier = (call_expression "FUN_0005a700(param_2 + param_1,0,iVar9 - param_2)" identifier (argument_list "(param_2 + param_1,0,iVar9 - param_2)" ( (binary_expression "param_2 + param_1" identifier + identifier) , number_literal , (binary_expression "iVar9 - param_2" identifier - identifier) )))) ;) (if_statement "if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;" if (parenthesized_expression "((iVar5 != 0) || (iVar9 == 0))" ( (binary_expression "(iVar5 != 0) || (iVar9 == 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00059e30;" goto statement_identifier ;)) (expression_statement "uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);" (assignment_expression "uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9)" identifier = (binary_expression "(uint)*(byte *)(param_1 + -1 + iVar9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + -1 + iVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + -1 + iVar9)" ( (binary_expression "param_1 + -1 + iVar9" (binary_expression "param_1 + -1" identifier + number_literal) + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar7 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar7 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar7 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar7 * 2 + 1" (binary_expression "(int)puVar1 + uVar7 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar7 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\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 "uVar7 = (*pp_Var4)[uVar7];" (assignment_expression "uVar7 = (*pp_Var4)[uVar7]" identifier = (subscript_expression "(*pp_Var4)[uVar7]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar7 = local_420[uVar7];" (assignment_expression "uVar7 = local_420[uVar7]" identifier = (subscript_expression "local_420[uVar7]" identifier [ identifier ])) ;) (expression_statement "param_2 = iVar9;" (assignment_expression "param_2 = iVar9" identifier = identifier) ;) (if_statement "if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }" { (expression_statement "uVar7 = local_444;" (assignment_expression "uVar7 = local_444" identifier = identifier) ;) (if_statement "if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }" if (parenthesized_expression "(local_444 <= local_43c)" ( (binary_expression "local_444 <= local_43c" identifier <= identifier) )) (compound_statement "{\n            uVar7 = local_43c;\n          }" { (expression_statement "uVar7 = local_43c;" (assignment_expression "uVar7 = local_43c" identifier = identifier) ;) })) (if_statement "if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }" if (parenthesized_expression "(uVar7 < local_458)" ( (binary_expression "uVar7 < local_458" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }" { (do_statement "do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);" do (compound_statement "{\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            }" { (expression_statement "uVar8 = (uint)param_3[uVar7];" (assignment_expression "uVar8 = (uint)param_3[uVar7]" identifier = (cast_expression "(uint)param_3[uVar7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[uVar7]" identifier [ identifier ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar8 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\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 "uVar8 = (*pp_Var4)[uVar8];" (assignment_expression "uVar8 = (*pp_Var4)[uVar8]" identifier = (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);" (assignment_expression "uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7)" identifier = (binary_expression "(uint)*(byte *)(param_1 + local_440 + uVar7)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + local_440 + uVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + local_440 + uVar7)" ( (binary_expression "param_1 + local_440 + uVar7" (binary_expression "param_1 + local_440" identifier + identifier) + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar10 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar10 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar10 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar10 * 2 + 1" (binary_expression "(int)puVar1 + uVar10 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar10 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\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 "uVar10 = (*pp_Var4)[uVar10];" (assignment_expression "uVar10 = (*pp_Var4)[uVar10]" identifier = (subscript_expression "(*pp_Var4)[uVar10]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (if_statement "if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }" if (parenthesized_expression "(uVar8 != uVar10)" ( (binary_expression "uVar8 != uVar10" identifier != identifier) )) (compound_statement "{\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }" { (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" identifier = number_literal) ;) (expression_statement "local_440 = local_440 + (1 - local_43c) + uVar7;" (assignment_expression "local_440 = local_440 + (1 - local_43c) + uVar7" identifier = (binary_expression "local_440 + (1 - local_43c) + uVar7" (binary_expression "local_440 + (1 - local_43c)" identifier + (parenthesized_expression "(1 - local_43c)" ( (binary_expression "1 - local_43c" number_literal - identifier) ))) + identifier)) ;) (goto_statement "goto LAB_00059f1f;" goto statement_identifier ;) })) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar7 != local_458)" ( (binary_expression "uVar7 != local_458" identifier != identifier) )) ;) })) (expression_statement "uVar7 = local_43c;" (assignment_expression "uVar7 = local_43c" identifier = identifier) ;) (expression_statement "local_450 = local_43c;" (assignment_expression "local_450 = local_43c" identifier = identifier) ;) (if_statement "if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }" if (parenthesized_expression "(local_444 < local_43c)" ( (binary_expression "local_444 < local_43c" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }" { (do_statement "do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));" do (compound_statement "{\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            }" { (expression_statement "uVar10 = uVar7 - 1;" (assignment_expression "uVar10 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (expression_statement "uVar8 = (uint)param_3[uVar10];" (assignment_expression "uVar8 = (uint)param_3[uVar10]" identifier = (cast_expression "(uint)param_3[uVar10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[uVar10]" identifier [ identifier ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar8 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\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 "uVar8 = (*pp_Var4)[uVar8];" (assignment_expression "uVar8 = (*pp_Var4)[uVar8]" identifier = (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);" (assignment_expression "uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10)" identifier = (binary_expression "(uint)*(byte *)(param_1 + local_440 + uVar10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + local_440 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + local_440 + uVar10)" ( (binary_expression "param_1 + local_440 + uVar10" (binary_expression "param_1 + local_440" identifier + identifier) + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar11 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar11 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar11 * 2 + 1" (binary_expression "(int)puVar1 + uVar11 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar11 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\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 "uVar11 = (*pp_Var4)[uVar11];" (assignment_expression "uVar11 = (*pp_Var4)[uVar11]" identifier = (subscript_expression "(*pp_Var4)[uVar11]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (expression_statement "local_450 = uVar7;" (assignment_expression "local_450 = uVar7" identifier = identifier) ;) }) while (parenthesized_expression "((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10))" ( (binary_expression "(uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10)" (parenthesized_expression "(uVar8 == uVar11)" ( (binary_expression "uVar8 == uVar11" identifier == identifier) )) && (parenthesized_expression "(uVar7 = uVar10, local_450 = local_444, local_444 != uVar10)" ( (comma_expression "uVar7 = uVar10, local_450 = local_444, local_444 != uVar10" (assignment_expression "uVar7 = uVar10" identifier = identifier) , (comma_expression "local_450 = local_444, local_444 != uVar10" (assignment_expression "local_450 = local_444" identifier = identifier) , (binary_expression "local_444 != uVar10" identifier != identifier))) ))) )) ;) })) (if_statement "if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }" if (parenthesized_expression "(local_450 < local_444 + 1)" ( (binary_expression "local_450 < local_444 + 1" identifier < (binary_expression "local_444 + 1" identifier + number_literal)) )) (compound_statement "{\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }" { (expression_statement "local_440 = param_1 + local_440;" (assignment_expression "local_440 = param_1 + local_440" identifier = (binary_expression "param_1 + local_440" identifier + identifier)) ;) (goto_statement "goto LAB_00059e32;" goto statement_identifier ;) })) (expression_statement "local_440 = local_440 + local_434;" (assignment_expression "local_440 = local_440 + local_434" identifier = (binary_expression "local_440 + local_434" identifier + identifier)) ;) (expression_statement "local_444 = param_4 - local_434;" (assignment_expression "local_444 = param_4 - local_434" identifier = (binary_expression "param_4 - local_434" identifier - identifier)) ;) }) (else_clause "else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }" else (compound_statement "{\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }" { (if_statement "if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }" if (parenthesized_expression "((uVar7 < local_434) && (local_444 != 0))" ( (binary_expression "(uVar7 < local_434) && (local_444 != 0)" (parenthesized_expression "(uVar7 < local_434)" ( (binary_expression "uVar7 < local_434" identifier < identifier) )) && (parenthesized_expression "(local_444 != 0)" ( (binary_expression "local_444 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            uVar7 = param_4 - local_434;\n          }" { (expression_statement "uVar7 = param_4 - local_434;" (assignment_expression "uVar7 = param_4 - local_434" identifier = (binary_expression "param_4 - local_434" identifier - identifier)) ;) })) (expression_statement "local_440 = local_440 + uVar7;" (assignment_expression "local_440 = local_440 + uVar7" identifier = (binary_expression "local_440 + uVar7" identifier + identifier)) ;) (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" identifier = number_literal) ;) }))) }) while (parenthesized_expression "( true )" ( true )) ;)) })) }))) (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = param_4 - local_43c;" (assignment_expression "uVar7 = param_4 - local_43c" identifier = (binary_expression "param_4 - local_43c" identifier - identifier)) ;) (if_statement "if (param_4 - local_43c < local_43c) {\n    uVar7 = local_43c;\n  }" if (parenthesized_expression "(param_4 - local_43c < local_43c)" ( (binary_expression "param_4 - local_43c < local_43c" (binary_expression "param_4 - local_43c" identifier - identifier) < identifier) )) (compound_statement "{\n    uVar7 = local_43c;\n  }" { (expression_statement "uVar7 = local_43c;" (assignment_expression "uVar7 = local_43c" identifier = identifier) ;) })) (labeled_statement "LAB_00059d28:\n  do {\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  } while( true );" do (compound_statement "{\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  }" { (expression_statement "iVar9 = local_444 + param_4;" (assignment_expression "iVar9 = local_444 + param_4" identifier = (binary_expression "local_444 + param_4" identifier + identifier)) ;) (expression_statement "iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);" (assignment_expression "iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2)" identifier = (call_expression "FUN_0005a700(param_2 + param_1,0,iVar9 - param_2)" identifier (argument_list "(param_2 + param_1,0,iVar9 - param_2)" ( (binary_expression "param_2 + param_1" identifier + identifier) , number_literal , (binary_expression "iVar9 - param_2" identifier - identifier) )))) ;) (if_statement "if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;" if (parenthesized_expression "((iVar9 == 0) || (iVar5 != 0))" ( (binary_expression "(iVar9 == 0) || (iVar5 != 0)" (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_00059e30;" goto statement_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 "uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);" (assignment_expression "uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9)" identifier = (binary_expression "(uint)*(byte *)(param_1 + -1 + iVar9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + -1 + iVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + -1 + iVar9)" ( (binary_expression "param_1 + -1 + iVar9" (binary_expression "param_1 + -1" identifier + number_literal) + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar8 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\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 "uVar8 = (*pp_Var4)[uVar8];" (assignment_expression "uVar8 = (*pp_Var4)[uVar8]" identifier = (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (expression_statement "param_2 = iVar9;" (assignment_expression "param_2 = iVar9" identifier = identifier) ;) (if_statement "if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }" if (parenthesized_expression "(local_420[uVar8] == 0)" ( (binary_expression "local_420[uVar8] == 0" (subscript_expression "local_420[uVar8]" identifier [ identifier ]) == number_literal) )) (compound_statement "{\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }" { (expression_statement "local_440 = param_1 + local_444;" (assignment_expression "local_440 = param_1 + local_444" identifier = (binary_expression "param_1 + local_444" identifier + identifier)) ;) (for_statement "for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }" for ( (assignment_expression "uVar8 = local_43c" identifier = identifier) ; (comma_expression "uVar10 = local_43c, uVar8 < local_458" (assignment_expression "uVar10 = local_43c" identifier = identifier) , (binary_expression "uVar8 < local_458" identifier < identifier)) ; (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ) (compound_statement "{\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }" { (expression_statement "uVar10 = (uint)param_3[uVar8];" (assignment_expression "uVar10 = (uint)param_3[uVar8]" identifier = (cast_expression "(uint)param_3[uVar8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[uVar8]" identifier [ identifier ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar10 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar10 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar10 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar10 * 2 + 1" (binary_expression "(int)puVar1 + uVar10 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar10 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\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 "uVar10 = (*pp_Var4)[uVar10];" (assignment_expression "uVar10 = (*pp_Var4)[uVar10]" identifier = (subscript_expression "(*pp_Var4)[uVar10]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar11 = (uint)*(byte *)(local_440 + uVar8);" (assignment_expression "uVar11 = (uint)*(byte *)(local_440 + uVar8)" identifier = (binary_expression "(uint)*(byte *)(local_440 + uVar8)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_440 + uVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_440 + uVar8)" ( (binary_expression "local_440 + uVar8" identifier + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar11 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar11 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar11 * 2 + 1" (binary_expression "(int)puVar1 + uVar11 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar11 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\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 "uVar11 = (*pp_Var4)[uVar11];" (assignment_expression "uVar11 = (*pp_Var4)[uVar11]" identifier = (subscript_expression "(*pp_Var4)[uVar11]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (if_statement "if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }" if (parenthesized_expression "(uVar10 != uVar11)" ( (binary_expression "uVar10 != uVar11" identifier != identifier) )) (compound_statement "{\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }" { (expression_statement "local_444 = local_444 + (1 - local_43c) + uVar8;" (assignment_expression "local_444 = local_444 + (1 - local_43c) + uVar8" identifier = (binary_expression "local_444 + (1 - local_43c) + uVar8" (binary_expression "local_444 + (1 - local_43c)" identifier + (parenthesized_expression "(1 - local_43c)" ( (binary_expression "1 - local_43c" number_literal - identifier) ))) + identifier)) ;) (goto_statement "goto LAB_00059d28;" goto statement_identifier ;) })) })) (do_statement "do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);" do (compound_statement "{\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      }" { (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (if_statement "if (uVar10 == 0xffffffff) goto LAB_00059e32;" if (parenthesized_expression "(uVar10 == 0xffffffff)" ( (binary_expression "uVar10 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_00059e32;" goto statement_identifier ;)) (expression_statement "uVar8 = (uint)param_3[uVar10];" (assignment_expression "uVar8 = (uint)param_3[uVar10]" identifier = (cast_expression "(uint)param_3[uVar10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[uVar10]" identifier [ identifier ]))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar8 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\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 "uVar8 = (*pp_Var4)[uVar8];" (assignment_expression "uVar8 = (*pp_Var4)[uVar8]" identifier = (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) (expression_statement "uVar11 = (uint)*(byte *)(local_440 + uVar10);" (assignment_expression "uVar11 = (uint)*(byte *)(local_440 + uVar10)" identifier = (binary_expression "(uint)*(byte *)(local_440 + uVar10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_440 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_440 + uVar10)" ( (binary_expression "local_440 + uVar10" identifier + identifier) ))))) ;) (if_statement "if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }" if (parenthesized_expression "((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1)" ( (binary_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1)" * (cast_expression "(byte *)((int)puVar1 + uVar11 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar1 + uVar11 * 2 + 1)" ( (binary_expression "(int)puVar1 + uVar11 * 2 + 1" (binary_expression "(int)puVar1 + uVar11 * 2" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar11 * 2" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\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 "uVar11 = (*pp_Var4)[uVar11];" (assignment_expression "uVar11 = (*pp_Var4)[uVar11]" identifier = (subscript_expression "(*pp_Var4)[uVar11]" (parenthesized_expression "(*pp_Var4)" ( (pointer_expression "*pp_Var4" * identifier) )) [ identifier ])) ;) })) }) while (parenthesized_expression "(uVar8 == uVar11)" ( (binary_expression "uVar8 == uVar11" identifier == identifier) )) ;) (expression_statement "local_444 = local_444 + uVar7 + 1;" (assignment_expression "local_444 = local_444 + uVar7 + 1" identifier = (binary_expression "local_444 + uVar7 + 1" (binary_expression "local_444 + uVar7" identifier + identifier) + number_literal)) ;) }) (else_clause "else {\n      local_444 = local_444 + local_420[uVar8];\n    }" else (compound_statement "{\n      local_444 = local_444 + local_420[uVar8];\n    }" { (expression_statement "local_444 = local_444 + local_420[uVar8];" (assignment_expression "local_444 = local_444 + local_420[uVar8]" identifier = (binary_expression "local_444 + local_420[uVar8]" identifier + (subscript_expression "local_420[uVar8]" identifier [ identifier ]))) ;) }))) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(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)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) , (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 IDENT * LIT)) + LIT) )))) & LIT) )) == LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ]) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) , IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , LIT , (binary_expression IDENT - IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + 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 IDENT * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ])) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_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 IDENT * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (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 IDENT * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression LIT - IDENT) ))) + IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_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 IDENT * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (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 IDENT * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ])) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT))) ))) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) while (parenthesized_expression ( BOOL )) ;)) })) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , LIT , (binary_expression IDENT - IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + 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 IDENT * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ])) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (for_statement for ( (assignment_expression IDENT = IDENT) ; (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT < IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_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 IDENT * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (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 IDENT * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression LIT - IDENT) ))) + IDENT)) ;) (goto_statement goto statement_identifier ;) })) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_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 IDENT * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (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 IDENT * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ])) ;) })) }) while (parenthesized_expression ( (binary_expression IDENT == IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ IDENT ]))) ;) }))) }) while (parenthesized_expression ( BOOL )) ;)) })))
(function_definition "int __regparm3 FUN_00059be0(int param_1,int param_2,byte *param_3,uint param_4)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int in_GS_OFFSET;\n  uint local_458;\n  uint local_450;\n  uint local_444;\n  int local_440;\n  uint local_43c;\n  uint local_434;\n  uint local_424;\n  uint local_420 [256];\n  uint local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x59beb;\n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  if (param_4 < 3) {\n    local_43c = param_4 - 1;\n    local_434 = 1;\n  }\n  else {\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }\n  puVar2 = local_420;\n  do {\n    *puVar2 = param_4;\n    puVar2 = puVar2 + 1;\n  } while (local_20 != puVar2);\n  if (param_4 == 0) {\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }\n      return local_440;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }\n  local_444 = 0;\n  uVar7 = param_4 - local_43c;\n  if (param_4 - local_43c < local_43c) {\n    uVar7 = local_43c;\n  }\nLAB_00059d28:\n  do {\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  } while( true );\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00059be0(int param_1,int param_2,byte *param_3,uint param_4)" (identifier "FUN_00059be0") (parameter_list "(int param_1,int param_2,byte *param_3,uint param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "byte *param_3" (type_identifier "byte") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) () ")"))) (compound_statement "{\n  ushort *puVar1;\n  uint *puVar2;\n  ushort **ppuVar3;\n  __int32_t **pp_Var4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int in_GS_OFFSET;\n  uint local_458;\n  uint local_450;\n  uint local_444;\n  int local_440;\n  uint local_43c;\n  uint local_434;\n  uint local_424;\n  uint local_420 [256];\n  uint local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x59beb;\n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  if (param_4 < 3) {\n    local_43c = param_4 - 1;\n    local_434 = 1;\n  }\n  else {\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }\n  puVar2 = local_420;\n  do {\n    *puVar2 = param_4;\n    puVar2 = puVar2 + 1;\n  } while (local_20 != puVar2);\n  if (param_4 == 0) {\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }\n      return local_440;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }\n  local_444 = 0;\n  uVar7 = param_4 - local_43c;\n  if (param_4 - local_43c < local_43c) {\n    uVar7 = local_43c;\n  }\nLAB_00059d28:\n  do {\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  } while( true );\n}" ({ "{") (declaration "ushort *puVar1;" (type_identifier "ushort") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint *puVar2;" (type_identifier "uint") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (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 "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "uint local_458;" (type_identifier "uint") (identifier "local_458") (; ";")) (declaration "uint local_450;" (type_identifier "uint") (identifier "local_450") (; ";")) (declaration "uint local_444;" (type_identifier "uint") (identifier "local_444") (; ";")) (declaration "int local_440;" (primitive_type "int") (identifier "local_440") (; ";")) (declaration "uint local_43c;" (type_identifier "uint") (identifier "local_43c") (; ";")) (declaration "uint local_434;" (type_identifier "uint") (identifier "local_434") (; ";")) (declaration "uint local_424;" (type_identifier "uint") (identifier "local_424") (; ";")) (declaration "uint local_420 [256];" (type_identifier "uint") (array_declarator "local_420 [256]" (identifier "local_420") ([ "[") (number_literal "256") (] "]")) (; ";")) (declaration "uint local_20 [3];" (type_identifier "uint") (array_declarator "local_20 [3]" (identifier "local_20") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x59beb;" (assignment_expression "uStack_14 = 0x59beb" (identifier "uStack_14") (= "=") (number_literal "0x59beb")) (; ";")) (expression_statement "local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20[0] = *(uint *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "*(uint *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(uint *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (param_4 < 3) {\n    local_43c = param_4 - 1;\n    local_434 = 1;\n  }\n  else {\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }" (if "if") (parenthesized_expression "(param_4 < 3)" (( "(") (binary_expression "param_4 < 3" (identifier "param_4") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n    local_43c = param_4 - 1;\n    local_434 = 1;\n  }" ({ "{") (expression_statement "local_43c = param_4 - 1;" (assignment_expression "local_43c = param_4 - 1" (identifier "local_43c") (= "=") (binary_expression "param_4 - 1" (identifier "param_4") (- "-") (number_literal "1"))) (; ";")) (expression_statement "local_434 = 1;" (assignment_expression "local_434 = 1" (identifier "local_434") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }" (else "else") (compound_statement "{\n    local_43c = FUN_00059940();\n    local_434 = local_424;\n  }" ({ "{") (expression_statement "local_43c = FUN_00059940();" (assignment_expression "local_43c = FUN_00059940()" (identifier "local_43c") (= "=") (call_expression "FUN_00059940()" (identifier "FUN_00059940") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_434 = local_424;" (assignment_expression "local_434 = local_424" (identifier "local_434") (= "=") (identifier "local_424")) (; ";")) (} "}")))) (expression_statement "puVar2 = local_420;" (assignment_expression "puVar2 = local_420" (identifier "puVar2") (= "=") (identifier "local_420")) (; ";")) (do_statement "do {\n    *puVar2 = param_4;\n    puVar2 = puVar2 + 1;\n  } while (local_20 != puVar2);" (do "do") (compound_statement "{\n    *puVar2 = param_4;\n    puVar2 = puVar2 + 1;\n  }" ({ "{") (expression_statement "*puVar2 = param_4;" (assignment_expression "*puVar2 = param_4" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" (identifier "puVar2") (= "=") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_20 != puVar2)" (( "(") (binary_expression "local_20 != puVar2" (identifier "local_20") (!= "!=") (identifier "puVar2")) () ")")) (; ";")) (if_statement "if (param_4 == 0) {\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }\n      return local_440;\n    }\n    local_458 = 0xffffffff;\n  }\n  else {\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }\n      return local_440;\n    }\n    local_458 = 0xffffffff;\n  }" ({ "{") (expression_statement "iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);" (assignment_expression "iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c)" (identifier "iVar5") (= "=") (call_expression "strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c)" (identifier "strncasecmp") (argument_list "((char *)param_3,(char *)(param_3 + local_434),local_43c)" (( "(") (cast_expression "(char *)param_3" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_3")) (, ",") (cast_expression "(char *)(param_3 + local_434)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + local_434)" (( "(") (binary_expression "param_3 + local_434" (identifier "param_3") (+ "+") (identifier "local_434")) () ")"))) (, ",") (identifier "local_43c") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }\n      return local_440;\n    }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00059e30:\n      local_440 = 0;\nLAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }\n      return local_440;\n    }" ({ "{") (labeled_statement "LAB_00059e30:\n      local_440 = 0;" (statement_identifier "LAB_00059e30") (: ":") (expression_statement "local_440 = 0;" (assignment_expression "local_440 = 0" (identifier "local_440") (= "=") (number_literal "0")) (; ";"))) (labeled_statement "LAB_00059e32:\n      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }" (statement_identifier "LAB_00059e32") (: ":") (if_statement "if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n        FUN_0005a8b0();\n      }" (if "if") (parenthesized_expression "(local_20[0] != *(uint *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (!= "!=") (pointer_expression "*(uint *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(uint *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n        FUN_0005a8b0();\n      }" ({ "{") (expression_statement "FUN_0005a8b0();" (call_expression "FUN_0005a8b0()" (identifier "FUN_0005a8b0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return local_440;" (return "return") (identifier "local_440") (; ";")) (} "}"))) (expression_statement "local_458 = 0xffffffff;" (assignment_expression "local_458 = 0xffffffff" (identifier "local_458") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (else_clause "else {\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }" (else "else") (compound_statement "{\n    ppuVar3 = __ctype_b_loc();\n    local_458 = param_4 - 1;\n    puVar1 = *ppuVar3;\n    pbVar6 = param_3;\n    uVar7 = local_458;\n    do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);\nLAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);\n    if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }\n  }" ({ "{") (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 "local_458 = param_4 - 1;" (assignment_expression "local_458 = param_4 - 1" (identifier "local_458") (= "=") (binary_expression "param_4 - 1" (identifier "param_4") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar1 = *ppuVar3;" (assignment_expression "puVar1 = *ppuVar3" (identifier "puVar1") (= "=") (pointer_expression "*ppuVar3" (* "*") (identifier "ppuVar3"))) (; ";")) (expression_statement "pbVar6 = param_3;" (assignment_expression "pbVar6 = param_3" (identifier "pbVar6") (= "=") (identifier "param_3")) (; ";")) (expression_statement "uVar7 = local_458;" (assignment_expression "uVar7 = local_458" (identifier "uVar7") (= "=") (identifier "local_458")) (; ";")) (do_statement "do {\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    } while (uVar7 != 0xffffffff);" (do "do") (compound_statement "{\n      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }\n      pp_Var4 = __ctype_tolower_loc();\n      pbVar6 = pbVar6 + 1;\n      local_420[(*pp_Var4)[uVar8]] = uVar7;\n      uVar7 = uVar7 - 1;\n    }" ({ "{") (while_statement "while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }" (while "while") (parenthesized_expression "(uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0)" (( "(") (comma_expression "uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0" (assignment_expression "uVar8 = (uint)*pbVar6" (identifier "uVar8") (= "=") (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar6"))) (, ",") (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "uVar8 * 2" (identifier "uVar8") (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n        local_420[uVar8] = uVar7;\n        uVar7 = uVar7 - 1;\n        pbVar6 = pbVar6 + 1;\n        if (uVar7 == 0xffffffff) goto LAB_00059cb7;\n      }" ({ "{") (expression_statement "local_420[uVar8] = uVar7;" (assignment_expression "local_420[uVar8] = uVar7" (subscript_expression "local_420[uVar8]" (identifier "local_420") ([ "[") (identifier "uVar8") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar7 = uVar7 - 1;" (assignment_expression "uVar7 = uVar7 - 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1"))) (; ";")) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar7 == 0xffffffff) goto LAB_00059cb7;" (if "if") (parenthesized_expression "(uVar7 == 0xffffffff)" (( "(") (binary_expression "uVar7 == 0xffffffff" (identifier "uVar7") (== "==") (number_literal "0xffffffff")) () ")")) (goto_statement "goto LAB_00059cb7;" (goto "goto") (statement_identifier "LAB_00059cb7") (; ";"))) (} "}"))) (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 "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_420[(*pp_Var4)[uVar8]] = uVar7;" (assignment_expression "local_420[(*pp_Var4)[uVar8]] = uVar7" (subscript_expression "local_420[(*pp_Var4)[uVar8]]" (identifier "local_420") ([ "[") (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" (( "(") (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) () ")")) ([ "[") (identifier "uVar8") (] "]")) (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar7 = uVar7 - 1;" (assignment_expression "uVar7 = uVar7 - 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar7 != 0xffffffff)" (( "(") (binary_expression "uVar7 != 0xffffffff" (identifier "uVar7") (!= "!=") (number_literal "0xffffffff")) () ")")) (; ";")) (labeled_statement "LAB_00059cb7:\n    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);" (statement_identifier "LAB_00059cb7") (: ":") (expression_statement "iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);" (assignment_expression "iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c)" (identifier "iVar5") (= "=") (call_expression "strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c)" (identifier "strncasecmp") (argument_list "((char *)param_3,(char *)(param_3 + local_434),local_43c)" (( "(") (cast_expression "(char *)param_3" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_3")) (, ",") (cast_expression "(char *)(param_3 + local_434)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + local_434)" (( "(") (binary_expression "param_3 + local_434" (identifier "param_3") (+ "+") (identifier "local_434")) () ")"))) (, ",") (identifier "local_43c") () ")")))) (; ";"))) (if_statement "if (iVar5 == 0) {\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_444 = 0;\n      local_440 = 0;\nLAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );\n    }" ({ "{") (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" (identifier "local_444") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_440 = 0;" (assignment_expression "local_440 = 0" (identifier "local_440") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00059f1f:\n      do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );" (statement_identifier "LAB_00059f1f") (: ":") (do_statement "do {\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      } while( true );" (do "do") (compound_statement "{\n        iVar9 = local_440 + param_4;\n        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;\n        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);\n        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }\n        uVar7 = local_420[uVar7];\n        param_2 = iVar9;\n        if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }\n      }" ({ "{") (expression_statement "iVar9 = local_440 + param_4;" (assignment_expression "iVar9 = local_440 + param_4" (identifier "iVar9") (= "=") (binary_expression "local_440 + param_4" (identifier "local_440") (+ "+") (identifier "param_4"))) (; ";")) (expression_statement "iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);" (assignment_expression "iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2)" (identifier "iVar5") (= "=") (call_expression "FUN_0005a700(param_2 + param_1,0,iVar9 - param_2)" (identifier "FUN_0005a700") (argument_list "(param_2 + param_1,0,iVar9 - param_2)" (( "(") (binary_expression "param_2 + param_1" (identifier "param_2") (+ "+") (identifier "param_1")) (, ",") (number_literal "0") (, ",") (binary_expression "iVar9 - param_2" (identifier "iVar9") (- "-") (identifier "param_2")) () ")")))) (; ";")) (if_statement "if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;" (if "if") (parenthesized_expression "((iVar5 != 0) || (iVar9 == 0))" (( "(") (binary_expression "(iVar5 != 0) || (iVar9 == 0)" (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00059e30;" (goto "goto") (statement_identifier "LAB_00059e30") (; ";"))) (expression_statement "uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);" (assignment_expression "uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9)" (identifier "uVar7") (= "=") (binary_expression "(uint)*(byte *)(param_1 + -1 + iVar9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + -1 + iVar9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + -1 + iVar9)" (( "(") (binary_expression "param_1 + -1 + iVar9" (binary_expression "param_1 + -1" (identifier "param_1") (+ "+") (number_literal "-1")) (+ "+") (identifier "iVar9")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\n        }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar7 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + uVar7 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + uVar7 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + uVar7 * 2 + 1" (binary_expression "(int)puVar1 + uVar7 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "uVar7 * 2" (identifier "uVar7") (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar7 = (*pp_Var4)[uVar7];\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 "uVar7 = (*pp_Var4)[uVar7];" (assignment_expression "uVar7 = (*pp_Var4)[uVar7]" (identifier "uVar7") (= "=") (subscript_expression "(*pp_Var4)[uVar7]" (parenthesized_expression "(*pp_Var4)" (( "(") (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) () ")")) ([ "[") (identifier "uVar7") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar7 = local_420[uVar7];" (assignment_expression "uVar7 = local_420[uVar7]" (identifier "uVar7") (= "=") (subscript_expression "local_420[uVar7]" (identifier "local_420") ([ "[") (identifier "uVar7") (] "]"))) (; ";")) (expression_statement "param_2 = iVar9;" (assignment_expression "param_2 = iVar9" (identifier "param_2") (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (uVar7 == 0) {\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }\n        else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar7 = local_444;\n          if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }\n          if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }\n          uVar7 = local_43c;\n          local_450 = local_43c;\n          if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }\n          if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }\n          local_440 = local_440 + local_434;\n          local_444 = param_4 - local_434;\n        }" ({ "{") (expression_statement "uVar7 = local_444;" (assignment_expression "uVar7 = local_444" (identifier "uVar7") (= "=") (identifier "local_444")) (; ";")) (if_statement "if (local_444 <= local_43c) {\n            uVar7 = local_43c;\n          }" (if "if") (parenthesized_expression "(local_444 <= local_43c)" (( "(") (binary_expression "local_444 <= local_43c" (identifier "local_444") (<= "<=") (identifier "local_43c")) () ")")) (compound_statement "{\n            uVar7 = local_43c;\n          }" ({ "{") (expression_statement "uVar7 = local_43c;" (assignment_expression "uVar7 = local_43c" (identifier "uVar7") (= "=") (identifier "local_43c")) (; ";")) (} "}"))) (if_statement "if (uVar7 < local_458) {\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }" (if "if") (parenthesized_expression "(uVar7 < local_458)" (( "(") (binary_expression "uVar7 < local_458" (identifier "uVar7") (< "<") (identifier "local_458")) () ")")) (compound_statement "{\n            do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);\n          }" ({ "{") (do_statement "do {\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            } while (uVar7 != local_458);" (do "do") (compound_statement "{\n              uVar8 = (uint)param_3[uVar7];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);\n              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }\n              if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }\n              uVar7 = uVar7 + 1;\n            }" ({ "{") (expression_statement "uVar8 = (uint)param_3[uVar7];" (assignment_expression "uVar8 = (uint)param_3[uVar7]" (identifier "uVar8") (= "=") (cast_expression "(uint)param_3[uVar7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[uVar7]" (identifier "param_3") ([ "[") (identifier "uVar7") (] "]")))) (; ";")) (if_statement "if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "uVar8 * 2" (identifier "uVar8") (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\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 "uVar8 = (*pp_Var4)[uVar8];" (assignment_expression "uVar8 = (*pp_Var4)[uVar8]" (identifier "uVar8") (= "=") (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" (( "(") (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) () ")")) ([ "[") (identifier "uVar8") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);" (assignment_expression "uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7)" (identifier "uVar10") (= "=") (binary_expression "(uint)*(byte *)(param_1 + local_440 + uVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + local_440 + uVar7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + local_440 + uVar7)" (( "(") (binary_expression "param_1 + local_440 + uVar7" (binary_expression "param_1 + local_440" (identifier "param_1") (+ "+") (identifier "local_440")) (+ "+") (identifier "uVar7")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\n              }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar10 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + uVar10 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + uVar10 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + uVar10 * 2 + 1" (binary_expression "(int)puVar1 + uVar10 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "uVar10 * 2" (identifier "uVar10") (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                pp_Var4 = __ctype_tolower_loc();\n                uVar10 = (*pp_Var4)[uVar10];\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 "uVar10 = (*pp_Var4)[uVar10];" (assignment_expression "uVar10 = (*pp_Var4)[uVar10]" (identifier "uVar10") (= "=") (subscript_expression "(*pp_Var4)[uVar10]" (parenthesized_expression "(*pp_Var4)" (( "(") (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) () ")")) ([ "[") (identifier "uVar10") (] "]"))) (; ";")) (} "}"))) (if_statement "if (uVar8 != uVar10) {\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }" (if "if") (parenthesized_expression "(uVar8 != uVar10)" (( "(") (binary_expression "uVar8 != uVar10" (identifier "uVar8") (!= "!=") (identifier "uVar10")) () ")")) (compound_statement "{\n                local_444 = 0;\n                local_440 = local_440 + (1 - local_43c) + uVar7;\n                goto LAB_00059f1f;\n              }" ({ "{") (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" (identifier "local_444") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_440 = local_440 + (1 - local_43c) + uVar7;" (assignment_expression "local_440 = local_440 + (1 - local_43c) + uVar7" (identifier "local_440") (= "=") (binary_expression "local_440 + (1 - local_43c) + uVar7" (binary_expression "local_440 + (1 - local_43c)" (identifier "local_440") (+ "+") (parenthesized_expression "(1 - local_43c)" (( "(") (binary_expression "1 - local_43c" (number_literal "1") (- "-") (identifier "local_43c")) () ")"))) (+ "+") (identifier "uVar7"))) (; ";")) (goto_statement "goto LAB_00059f1f;" (goto "goto") (statement_identifier "LAB_00059f1f") (; ";")) (} "}"))) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar7 != local_458)" (( "(") (binary_expression "uVar7 != local_458" (identifier "uVar7") (!= "!=") (identifier "local_458")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar7 = local_43c;" (assignment_expression "uVar7 = local_43c" (identifier "uVar7") (= "=") (identifier "local_43c")) (; ";")) (expression_statement "local_450 = local_43c;" (assignment_expression "local_450 = local_43c" (identifier "local_450") (= "=") (identifier "local_43c")) (; ";")) (if_statement "if (local_444 < local_43c) {\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }" (if "if") (parenthesized_expression "(local_444 < local_43c)" (( "(") (binary_expression "local_444 < local_43c" (identifier "local_444") (< "<") (identifier "local_43c")) () ")")) (compound_statement "{\n            do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));\n          }" ({ "{") (do_statement "do {\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            } while ((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));" (do "do") (compound_statement "{\n              uVar10 = uVar7 - 1;\n              uVar8 = (uint)param_3[uVar10];\n              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }\n              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);\n              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }\n              local_450 = uVar7;\n            }" ({ "{") (expression_statement "uVar10 = uVar7 - 1;" (assignment_expression "uVar10 = uVar7 - 1" (identifier "uVar10") (= "=") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1"))) (; ";")) (expression_statement "uVar8 = (uint)param_3[uVar10];" (assignment_expression "uVar8 = (uint)param_3[uVar10]" (identifier "uVar8") (= "=") (cast_expression "(uint)param_3[uVar10]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[uVar10]" (identifier "param_3") ([ "[") (identifier "uVar10") (] "]")))) (; ";")) (if_statement "if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\n              }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "uVar8 * 2" (identifier "uVar8") (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                pp_Var4 = __ctype_tolower_loc();\n                uVar8 = (*pp_Var4)[uVar8];\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 "uVar8 = (*pp_Var4)[uVar8];" (assignment_expression "uVar8 = (*pp_Var4)[uVar8]" (identifier "uVar8") (= "=") (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" (( "(") (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) () ")")) ([ "[") (identifier "uVar8") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);" (assignment_expression "uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10)" (identifier "uVar11") (= "=") (binary_expression "(uint)*(byte *)(param_1 + local_440 + uVar10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + local_440 + uVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + local_440 + uVar10)" (( "(") (binary_expression "param_1 + local_440 + uVar10" (binary_expression "param_1 + local_440" (identifier "param_1") (+ "+") (identifier "local_440")) (+ "+") (identifier "uVar10")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\n              }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + uVar11 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + uVar11 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + uVar11 * 2 + 1" (binary_expression "(int)puVar1 + uVar11 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "uVar11 * 2" (identifier "uVar11") (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                pp_Var4 = __ctype_tolower_loc();\n                uVar11 = (*pp_Var4)[uVar11];\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 "uVar11 = (*pp_Var4)[uVar11];" (assignment_expression "uVar11 = (*pp_Var4)[uVar11]" (identifier "uVar11") (= "=") (subscript_expression "(*pp_Var4)[uVar11]" (parenthesized_expression "(*pp_Var4)" (( "(") (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) () ")")) ([ "[") (identifier "uVar11") (] "]"))) (; ";")) (} "}"))) (expression_statement "local_450 = uVar7;" (assignment_expression "local_450 = uVar7" (identifier "local_450") (= "=") (identifier "uVar7")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10))" (( "(") (binary_expression "(uVar8 == uVar11) &&\n                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10)" (parenthesized_expression "(uVar8 == uVar11)" (( "(") (binary_expression "uVar8 == uVar11" (identifier "uVar8") (== "==") (identifier "uVar11")) () ")")) (&& "&&") (parenthesized_expression "(uVar7 = uVar10, local_450 = local_444, local_444 != uVar10)" (( "(") (comma_expression "uVar7 = uVar10, local_450 = local_444, local_444 != uVar10" (assignment_expression "uVar7 = uVar10" (identifier "uVar7") (= "=") (identifier "uVar10")) (, ",") (comma_expression "local_450 = local_444, local_444 != uVar10" (assignment_expression "local_450 = local_444" (identifier "local_450") (= "=") (identifier "local_444")) (, ",") (binary_expression "local_444 != uVar10" (identifier "local_444") (!= "!=") (identifier "uVar10")))) () ")"))) () ")")) (; ";")) (} "}"))) (if_statement "if (local_450 < local_444 + 1) {\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }" (if "if") (parenthesized_expression "(local_450 < local_444 + 1)" (( "(") (binary_expression "local_450 < local_444 + 1" (identifier "local_450") (< "<") (binary_expression "local_444 + 1" (identifier "local_444") (+ "+") (number_literal "1"))) () ")")) (compound_statement "{\n            local_440 = param_1 + local_440;\n            goto LAB_00059e32;\n          }" ({ "{") (expression_statement "local_440 = param_1 + local_440;" (assignment_expression "local_440 = param_1 + local_440" (identifier "local_440") (= "=") (binary_expression "param_1 + local_440" (identifier "param_1") (+ "+") (identifier "local_440"))) (; ";")) (goto_statement "goto LAB_00059e32;" (goto "goto") (statement_identifier "LAB_00059e32") (; ";")) (} "}"))) (expression_statement "local_440 = local_440 + local_434;" (assignment_expression "local_440 = local_440 + local_434" (identifier "local_440") (= "=") (binary_expression "local_440 + local_434" (identifier "local_440") (+ "+") (identifier "local_434"))) (; ";")) (expression_statement "local_444 = param_4 - local_434;" (assignment_expression "local_444 = param_4 - local_434" (identifier "local_444") (= "=") (binary_expression "param_4 - local_434" (identifier "param_4") (- "-") (identifier "local_434"))) (; ";")) (} "}")) (else_clause "else {\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }" (else "else") (compound_statement "{\n          if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }\n          local_440 = local_440 + uVar7;\n          local_444 = 0;\n        }" ({ "{") (if_statement "if ((uVar7 < local_434) && (local_444 != 0)) {\n            uVar7 = param_4 - local_434;\n          }" (if "if") (parenthesized_expression "((uVar7 < local_434) && (local_444 != 0))" (( "(") (binary_expression "(uVar7 < local_434) && (local_444 != 0)" (parenthesized_expression "(uVar7 < local_434)" (( "(") (binary_expression "uVar7 < local_434" (identifier "uVar7") (< "<") (identifier "local_434")) () ")")) (&& "&&") (parenthesized_expression "(local_444 != 0)" (( "(") (binary_expression "local_444 != 0" (identifier "local_444") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            uVar7 = param_4 - local_434;\n          }" ({ "{") (expression_statement "uVar7 = param_4 - local_434;" (assignment_expression "uVar7 = param_4 - local_434" (identifier "uVar7") (= "=") (binary_expression "param_4 - local_434" (identifier "param_4") (- "-") (identifier "local_434"))) (; ";")) (} "}"))) (expression_statement "local_440 = local_440 + uVar7;" (assignment_expression "local_440 = local_440 + uVar7" (identifier "local_440") (= "=") (binary_expression "local_440 + uVar7" (identifier "local_440") (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" (identifier "local_444") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}"))) (} "}")))) (expression_statement "local_444 = 0;" (assignment_expression "local_444 = 0" (identifier "local_444") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = param_4 - local_43c;" (assignment_expression "uVar7 = param_4 - local_43c" (identifier "uVar7") (= "=") (binary_expression "param_4 - local_43c" (identifier "param_4") (- "-") (identifier "local_43c"))) (; ";")) (if_statement "if (param_4 - local_43c < local_43c) {\n    uVar7 = local_43c;\n  }" (if "if") (parenthesized_expression "(param_4 - local_43c < local_43c)" (( "(") (binary_expression "param_4 - local_43c < local_43c" (binary_expression "param_4 - local_43c" (identifier "param_4") (- "-") (identifier "local_43c")) (< "<") (identifier "local_43c")) () ")")) (compound_statement "{\n    uVar7 = local_43c;\n  }" ({ "{") (expression_statement "uVar7 = local_43c;" (assignment_expression "uVar7 = local_43c" (identifier "uVar7") (= "=") (identifier "local_43c")) (; ";")) (} "}"))) (labeled_statement "LAB_00059d28:\n  do {\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  } while( true );" (statement_identifier "LAB_00059d28") (: ":") (do_statement "do {\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  } while( true );" (do "do") (compound_statement "{\n    iVar9 = local_444 + param_4;\n    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);\n    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;\n    ppuVar3 = __ctype_b_loc();\n    puVar1 = *ppuVar3;\n    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);\n    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }\n    param_2 = iVar9;\n    if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }\n  }" ({ "{") (expression_statement "iVar9 = local_444 + param_4;" (assignment_expression "iVar9 = local_444 + param_4" (identifier "iVar9") (= "=") (binary_expression "local_444 + param_4" (identifier "local_444") (+ "+") (identifier "param_4"))) (; ";")) (expression_statement "iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);" (assignment_expression "iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2)" (identifier "iVar5") (= "=") (call_expression "FUN_0005a700(param_2 + param_1,0,iVar9 - param_2)" (identifier "FUN_0005a700") (argument_list "(param_2 + param_1,0,iVar9 - param_2)" (( "(") (binary_expression "param_2 + param_1" (identifier "param_2") (+ "+") (identifier "param_1")) (, ",") (number_literal "0") (, ",") (binary_expression "iVar9 - param_2" (identifier "iVar9") (- "-") (identifier "param_2")) () ")")))) (; ";")) (if_statement "if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;" (if "if") (parenthesized_expression "((iVar9 == 0) || (iVar5 != 0))" (( "(") (binary_expression "(iVar9 == 0) || (iVar5 != 0)" (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00059e30;" (goto "goto") (statement_identifier "LAB_00059e30") (; ";"))) (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 "uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);" (assignment_expression "uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9)" (identifier "uVar8") (= "=") (binary_expression "(uint)*(byte *)(param_1 + -1 + iVar9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + -1 + iVar9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + -1 + iVar9)" (( "(") (binary_expression "param_1 + -1 + iVar9" (binary_expression "param_1 + -1" (identifier "param_1") (+ "+") (number_literal "-1")) (+ "+") (identifier "iVar9")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\n    }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "uVar8 * 2" (identifier "uVar8") (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pp_Var4 = __ctype_tolower_loc();\n      uVar8 = (*pp_Var4)[uVar8];\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 "uVar8 = (*pp_Var4)[uVar8];" (assignment_expression "uVar8 = (*pp_Var4)[uVar8]" (identifier "uVar8") (= "=") (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" (( "(") (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) () ")")) ([ "[") (identifier "uVar8") (] "]"))) (; ";")) (} "}"))) (expression_statement "param_2 = iVar9;" (assignment_expression "param_2 = iVar9" (identifier "param_2") (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (local_420[uVar8] == 0) {\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }\n    else {\n      local_444 = local_444 + local_420[uVar8];\n    }" (if "if") (parenthesized_expression "(local_420[uVar8] == 0)" (( "(") (binary_expression "local_420[uVar8] == 0" (subscript_expression "local_420[uVar8]" (identifier "local_420") ([ "[") (identifier "uVar8") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_440 = param_1 + local_444;\n      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }\n      do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);\n      local_444 = local_444 + uVar7 + 1;\n    }" ({ "{") (expression_statement "local_440 = param_1 + local_444;" (assignment_expression "local_440 = param_1 + local_444" (identifier "local_440") (= "=") (binary_expression "param_1 + local_444" (identifier "param_1") (+ "+") (identifier "local_444"))) (; ";")) (for_statement "for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }" (for "for") (( "(") (assignment_expression "uVar8 = local_43c" (identifier "uVar8") (= "=") (identifier "local_43c")) (; ";") (comma_expression "uVar10 = local_43c, uVar8 < local_458" (assignment_expression "uVar10 = local_43c" (identifier "uVar10") (= "=") (identifier "local_43c")) (, ",") (binary_expression "uVar8 < local_458" (identifier "uVar8") (< "<") (identifier "local_458"))) (; ";") (assignment_expression "uVar8 = uVar8 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n        uVar10 = (uint)param_3[uVar8];\n        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar8);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n        if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }\n      }" ({ "{") (expression_statement "uVar10 = (uint)param_3[uVar8];" (assignment_expression "uVar10 = (uint)param_3[uVar8]" (identifier "uVar10") (= "=") (cast_expression "(uint)param_3[uVar8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[uVar8]" (identifier "param_3") ([ "[") (identifier "uVar8") (] "]")))) (; ";")) (if_statement "if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\n        }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar10 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + uVar10 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + uVar10 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + uVar10 * 2 + 1" (binary_expression "(int)puVar1 + uVar10 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "uVar10 * 2" (identifier "uVar10") (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar10 = (*pp_Var4)[uVar10];\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 "uVar10 = (*pp_Var4)[uVar10];" (assignment_expression "uVar10 = (*pp_Var4)[uVar10]" (identifier "uVar10") (= "=") (subscript_expression "(*pp_Var4)[uVar10]" (parenthesized_expression "(*pp_Var4)" (( "(") (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) () ")")) ([ "[") (identifier "uVar10") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar11 = (uint)*(byte *)(local_440 + uVar8);" (assignment_expression "uVar11 = (uint)*(byte *)(local_440 + uVar8)" (identifier "uVar11") (= "=") (binary_expression "(uint)*(byte *)(local_440 + uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(local_440 + uVar8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_440 + uVar8)" (( "(") (binary_expression "local_440 + uVar8" (identifier "local_440") (+ "+") (identifier "uVar8")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + uVar11 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + uVar11 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + uVar11 * 2 + 1" (binary_expression "(int)puVar1 + uVar11 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "uVar11 * 2" (identifier "uVar11") (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\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 "uVar11 = (*pp_Var4)[uVar11];" (assignment_expression "uVar11 = (*pp_Var4)[uVar11]" (identifier "uVar11") (= "=") (subscript_expression "(*pp_Var4)[uVar11]" (parenthesized_expression "(*pp_Var4)" (( "(") (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) () ")")) ([ "[") (identifier "uVar11") (] "]"))) (; ";")) (} "}"))) (if_statement "if (uVar10 != uVar11) {\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }" (if "if") (parenthesized_expression "(uVar10 != uVar11)" (( "(") (binary_expression "uVar10 != uVar11" (identifier "uVar10") (!= "!=") (identifier "uVar11")) () ")")) (compound_statement "{\n          local_444 = local_444 + (1 - local_43c) + uVar8;\n          goto LAB_00059d28;\n        }" ({ "{") (expression_statement "local_444 = local_444 + (1 - local_43c) + uVar8;" (assignment_expression "local_444 = local_444 + (1 - local_43c) + uVar8" (identifier "local_444") (= "=") (binary_expression "local_444 + (1 - local_43c) + uVar8" (binary_expression "local_444 + (1 - local_43c)" (identifier "local_444") (+ "+") (parenthesized_expression "(1 - local_43c)" (( "(") (binary_expression "1 - local_43c" (number_literal "1") (- "-") (identifier "local_43c")) () ")"))) (+ "+") (identifier "uVar8"))) (; ";")) (goto_statement "goto LAB_00059d28;" (goto "goto") (statement_identifier "LAB_00059d28") (; ";")) (} "}"))) (} "}"))) (do_statement "do {\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      } while (uVar8 == uVar11);" (do "do") (compound_statement "{\n        uVar10 = uVar10 - 1;\n        if (uVar10 == 0xffffffff) goto LAB_00059e32;\n        uVar8 = (uint)param_3[uVar10];\n        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }\n        uVar11 = (uint)*(byte *)(local_440 + uVar10);\n        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }\n      }" ({ "{") (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 - 1" (identifier "uVar10") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar10 == 0xffffffff) goto LAB_00059e32;" (if "if") (parenthesized_expression "(uVar10 == 0xffffffff)" (( "(") (binary_expression "uVar10 == 0xffffffff" (identifier "uVar10") (== "==") (number_literal "0xffffffff")) () ")")) (goto_statement "goto LAB_00059e32;" (goto "goto") (statement_identifier "LAB_00059e32") (; ";"))) (expression_statement "uVar8 = (uint)param_3[uVar10];" (assignment_expression "uVar8 = (uint)param_3[uVar10]" (identifier "uVar8") (= "=") (cast_expression "(uint)param_3[uVar10]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[uVar10]" (identifier "param_3") ([ "[") (identifier "uVar10") (] "]")))) (; ";")) (if_statement "if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\n        }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar8 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + uVar8 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + uVar8 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + uVar8 * 2 + 1" (binary_expression "(int)puVar1 + uVar8 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "uVar8 * 2" (identifier "uVar8") (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar8 = (*pp_Var4)[uVar8];\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 "uVar8 = (*pp_Var4)[uVar8];" (assignment_expression "uVar8 = (*pp_Var4)[uVar8]" (identifier "uVar8") (= "=") (subscript_expression "(*pp_Var4)[uVar8]" (parenthesized_expression "(*pp_Var4)" (( "(") (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) () ")")) ([ "[") (identifier "uVar8") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar11 = (uint)*(byte *)(local_440 + uVar10);" (assignment_expression "uVar11 = (uint)*(byte *)(local_440 + uVar10)" (identifier "uVar11") (= "=") (binary_expression "(uint)*(byte *)(local_440 + uVar10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(local_440 + uVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_440 + uVar10)" (( "(") (binary_expression "local_440 + uVar10" (identifier "local_440") (+ "+") (identifier "uVar10")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\n        }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1" (pointer_expression "*(byte *)((int)puVar1 + uVar11 * 2 + 1)" (* "*") (cast_expression "(byte *)((int)puVar1 + uVar11 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar1 + uVar11 * 2 + 1)" (( "(") (binary_expression "(int)puVar1 + uVar11 * 2 + 1" (binary_expression "(int)puVar1 + uVar11 * 2" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (binary_expression "uVar11 * 2" (identifier "uVar11") (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          pp_Var4 = __ctype_tolower_loc();\n          uVar11 = (*pp_Var4)[uVar11];\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 "uVar11 = (*pp_Var4)[uVar11];" (assignment_expression "uVar11 = (*pp_Var4)[uVar11]" (identifier "uVar11") (= "=") (subscript_expression "(*pp_Var4)[uVar11]" (parenthesized_expression "(*pp_Var4)" (( "(") (pointer_expression "*pp_Var4" (* "*") (identifier "pp_Var4")) () ")")) ([ "[") (identifier "uVar11") (] "]"))) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(uVar8 == uVar11)" (( "(") (binary_expression "uVar8 == uVar11" (identifier "uVar8") (== "==") (identifier "uVar11")) () ")")) (; ";")) (expression_statement "local_444 = local_444 + uVar7 + 1;" (assignment_expression "local_444 = local_444 + uVar7 + 1" (identifier "local_444") (= "=") (binary_expression "local_444 + uVar7 + 1" (binary_expression "local_444 + uVar7" (identifier "local_444") (+ "+") (identifier "uVar7")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n      local_444 = local_444 + local_420[uVar8];\n    }" (else "else") (compound_statement "{\n      local_444 = local_444 + local_420[uVar8];\n    }" ({ "{") (expression_statement "local_444 = local_444 + local_420[uVar8];" (assignment_expression "local_444 = local_444 + local_420[uVar8]" (identifier "local_444") (= "=") (binary_expression "local_444 + local_420[uVar8]" (identifier "local_444") (+ "+") (subscript_expression "local_420[uVar8]" (identifier "local_420") ([ "[") (identifier "uVar8") (] "]")))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}")))

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

char * __regparm3
function_1(type_1 *var_18,size_t var_19,type_1 *var_6,size_t var_2)

{
  type_2 *puVar1;
  size_t *var_4;
  type_1 *puVar3;
  type_2 **ppuVar4;
  type_3 **pp_Var5;
  int var_9;
  void *var_21;
  type_4 *var_12;
  size_t var_20;
  type_5 var_14;
  type_5 var_13;
  size_t var_28;
  type_5 var_25;
  type_5 var_26;
  int var_1;
  type_5 var_24;
  type_5 var_27;
  type_5 var_22;
  int var_16;
  type_5 var_23;
  size_t var_7;
  size_t shift_table [256];
  size_t var_5 [3];
  type_6 uStack_14;
  
  uStack_14 = 0x59beb;
  var_5[0] = *(size_t *)(var_1 + 0x14);
  if (var_2 < 3) {
    var_23 = var_2 - 1;
    var_7 = 1;
  }
  else {
    var_23 = var_3(var_6,var_2,&var_7);
  }
  var_28 = var_7;
  var_4 = shift_table;
  do {
    *var_4 = var_2;
    var_4 = var_4 + 1;
  } while (var_5 != var_4);
  puVar3 = var_6 + var_7;
  if (var_2 == 0) {
    var_9 = var_8((char *)var_6,(char *)puVar3,var_23);
    if (var_9 == 0) {
LAB_00059e30:
      puVar3 = (type_1 *)0x0;
LAB_00059e32:
      if (var_5[0] != *(size_t *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
        var_10();
      }
      return (char *)puVar3;
    }
    var_24 = 0xffffffff;
  }
  else {
    ppuVar4 = var_11();
    var_24 = var_2 - 1;
    puVar1 = *ppuVar4;
    var_12 = var_6;
    var_14 = var_24;
    do {
      while (var_13 = (type_5)*var_12, (*(type_4 *)((int)puVar1 + var_13 * 2 + 1) & 1) == 0) {
        shift_table[var_13] = var_14;
        var_14 = var_14 - 1;
        var_12 = var_12 + 1;
        if (var_14 == 0xffffffff) goto LAB_00059cb7;
      }
      pp_Var5 = var_15();
      var_12 = var_12 + 1;
      shift_table[(*pp_Var5)[var_13]] = var_14;
      var_14 = var_14 - 1;
    } while (var_14 != 0xffffffff);
LAB_00059cb7:
    var_9 = var_8((char *)var_6,(char *)puVar3,var_23);
    if (var_9 == 0) {
      var_22 = 0;
      var_16 = 0;
LAB_00059f1f:
      do {
        var_20 = var_16 + var_2;
        var_21 = var_17(var_18 + var_19,0,var_20 - var_19);
        if ((var_21 != (void *)0x0) || (var_20 == 0)) goto LAB_00059e30;
        var_14 = (type_5)var_18[var_20 - 1];
        if ((*(type_4 *)((int)puVar1 + var_14 * 2 + 1) & 1) != 0) {
          pp_Var5 = var_15();
          var_14 = (*pp_Var5)[var_14];
        }
        var_14 = shift_table[var_14];
        var_19 = var_20;
        if (var_14 == 0) {
          var_14 = var_22;
          if (var_22 <= var_23) {
            var_14 = var_23;
          }
          if (var_14 < var_24) {
            do {
              var_13 = (type_5)var_6[var_14];
              if ((*(type_4 *)((int)puVar1 + var_13 * 2 + 1) & 1) != 0) {
                pp_Var5 = var_15();
                var_13 = (*pp_Var5)[var_13];
              }
              var_25 = (type_5)var_18[var_14 + var_16];
              if ((*(type_4 *)((int)puVar1 + var_25 * 2 + 1) & 1) != 0) {
                pp_Var5 = var_15();
                var_25 = (*pp_Var5)[var_25];
              }
              if (var_13 != var_25) {
                var_22 = 0;
                var_16 = var_16 + (1 - var_23) + var_14;
                goto LAB_00059f1f;
              }
              var_14 = var_14 + 1;
            } while (var_14 != var_24);
          }
          var_14 = var_23;
          var_27 = var_23;
          if (var_22 < var_23) {
            do {
              var_25 = var_14 - 1;
              var_13 = (type_5)var_6[var_25];
              if ((*(type_4 *)((int)puVar1 + var_13 * 2 + 1) & 1) != 0) {
                pp_Var5 = var_15();
                var_13 = (*pp_Var5)[var_13];
              }
              var_26 = (type_5)var_18[var_25 + var_16];
              if ((*(type_4 *)((int)puVar1 + var_26 * 2 + 1) & 1) != 0) {
                pp_Var5 = var_15();
                var_26 = (*pp_Var5)[var_26];
              }
              var_27 = var_14;
            } while ((var_13 == var_26) &&
                    (var_14 = var_25, var_27 = var_22, var_22 != var_25));
          }
          if (var_27 < var_22 + 1) {
            puVar3 = var_18 + var_16;
            goto LAB_00059e32;
          }
          var_16 = var_16 + var_28;
          var_22 = var_2 - var_28;
        }
        else {
          if ((var_14 < var_28) && (var_22 != 0)) {
            var_14 = var_2 - var_28;
          }
          var_16 = var_16 + var_14;
          var_22 = 0;
        }
      } while( true );
    }
  }
  var_22 = 0;
  var_14 = var_2 - var_23;
  if (var_2 - var_23 < var_23) {
    var_14 = var_23;
  }
  var_7 = var_14 + 1;
LAB_00059d28:
  do {
    var_28 = var_22 + var_2;
    var_21 = var_17(var_18 + var_19,0,var_28 - var_19);
    if ((var_28 == 0) || (var_21 != (void *)0x0)) goto LAB_00059e30;
    ppuVar4 = var_11();
    puVar1 = *ppuVar4;
    var_13 = (type_5)var_18[var_28 - 1];
    if ((*(type_4 *)((int)puVar1 + var_13 * 2 + 1) & 1) != 0) {
      pp_Var5 = var_15();
      var_13 = (*pp_Var5)[var_13];
    }
    var_19 = var_28;
    if (shift_table[var_13] == 0) {
      puVar3 = var_18 + var_22;
      for (var_13 = var_23; var_25 = var_23, var_13 < var_24; var_13 = var_13 + 1) {
        var_25 = (type_5)var_6[var_13];
        if ((*(type_4 *)((int)puVar1 + var_25 * 2 + 1) & 1) != 0) {
          pp_Var5 = var_15();
          var_25 = (*pp_Var5)[var_25];
        }
        var_26 = (type_5)puVar3[var_13];
        if ((*(type_4 *)((int)puVar1 + var_26 * 2 + 1) & 1) != 0) {
          pp_Var5 = var_15();
          var_26 = (*pp_Var5)[var_26];
        }
        if (var_25 != var_26) {
          var_22 = var_22 + (1 - var_23) + var_13;
          goto LAB_00059d28;
        }
      }
      do {
        var_25 = var_25 - 1;
        if (var_25 == 0xffffffff) goto LAB_00059e32;
        var_13 = (type_5)var_6[var_25];
        if ((*(type_4 *)((int)puVar1 + var_13 * 2 + 1) & 1) != 0) {
          pp_Var5 = var_15();
          var_13 = (*pp_Var5)[var_13];
        }
        var_26 = (type_5)puVar3[var_25];
        if ((*(type_4 *)((int)puVar1 + var_26 * 2 + 1) & 1) != 0) {
          pp_Var5 = var_15();
          var_26 = (*pp_Var5)[var_26];
        }
      } while (var_13 == var_26);
      var_22 = var_22 + var_14 + 1;
    }
    else {
      var_22 = var_22 + shift_table[var_13];
    }
  } while( true );
}


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

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

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

{
  ushort *puVar1;
  uint *puVar2;
  ushort **ppuVar3;
  __int32_t **pp_Var4;
  int iVar5;
  byte *pbVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  int in_GS_OFFSET;
  uint local_458;
  uint local_450;
  uint local_444;
  int local_440;
  uint local_43c;
  uint local_434;
  uint local_424;
  uint local_420 [256];
  uint local_20 [3];
  undefined4 uStack_14;
  
  uStack_14 = 0x59beb;
  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);
  if (param_4 < 3) {
    local_43c = param_4 - 1;
    local_434 = 1;
  }
  else {
    local_43c = FUN_00059940();
    local_434 = local_424;
  }
  puVar2 = local_420;
  do {
    *puVar2 = param_4;
    puVar2 = puVar2 + 1;
  } while (local_20 != puVar2);
  if (param_4 == 0) {
    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);
    if (iVar5 == 0) {
LAB_00059e30:
      local_440 = 0;
LAB_00059e32:
      if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
        FUN_0005a8b0();
      }
      return local_440;
    }
    local_458 = 0xffffffff;
  }
  else {
    ppuVar3 = __ctype_b_loc();
    local_458 = param_4 - 1;
    puVar1 = *ppuVar3;
    pbVar6 = param_3;
    uVar7 = local_458;
    do {
      while (uVar8 = (uint)*pbVar6, (*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) == 0) {
        local_420[uVar8] = uVar7;
        uVar7 = uVar7 - 1;
        pbVar6 = pbVar6 + 1;
        if (uVar7 == 0xffffffff) goto LAB_00059cb7;
      }
      pp_Var4 = __ctype_tolower_loc();
      pbVar6 = pbVar6 + 1;
      local_420[(*pp_Var4)[uVar8]] = uVar7;
      uVar7 = uVar7 - 1;
    } while (uVar7 != 0xffffffff);
LAB_00059cb7:
    iVar5 = strncasecmp((char *)param_3,(char *)(param_3 + local_434),local_43c);
    if (iVar5 == 0) {
      local_444 = 0;
      local_440 = 0;
LAB_00059f1f:
      do {
        iVar9 = local_440 + param_4;
        iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);
        if ((iVar5 != 0) || (iVar9 == 0)) goto LAB_00059e30;
        uVar7 = (uint)*(byte *)(param_1 + -1 + iVar9);
        if ((*(byte *)((int)puVar1 + uVar7 * 2 + 1) & 1) != 0) {
          pp_Var4 = __ctype_tolower_loc();
          uVar7 = (*pp_Var4)[uVar7];
        }
        uVar7 = local_420[uVar7];
        param_2 = iVar9;
        if (uVar7 == 0) {
          uVar7 = local_444;
          if (local_444 <= local_43c) {
            uVar7 = local_43c;
          }
          if (uVar7 < local_458) {
            do {
              uVar8 = (uint)param_3[uVar7];
              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {
                pp_Var4 = __ctype_tolower_loc();
                uVar8 = (*pp_Var4)[uVar8];
              }
              uVar10 = (uint)*(byte *)(param_1 + local_440 + uVar7);
              if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {
                pp_Var4 = __ctype_tolower_loc();
                uVar10 = (*pp_Var4)[uVar10];
              }
              if (uVar8 != uVar10) {
                local_444 = 0;
                local_440 = local_440 + (1 - local_43c) + uVar7;
                goto LAB_00059f1f;
              }
              uVar7 = uVar7 + 1;
            } while (uVar7 != local_458);
          }
          uVar7 = local_43c;
          local_450 = local_43c;
          if (local_444 < local_43c) {
            do {
              uVar10 = uVar7 - 1;
              uVar8 = (uint)param_3[uVar10];
              if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {
                pp_Var4 = __ctype_tolower_loc();
                uVar8 = (*pp_Var4)[uVar8];
              }
              uVar11 = (uint)*(byte *)(param_1 + local_440 + uVar10);
              if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {
                pp_Var4 = __ctype_tolower_loc();
                uVar11 = (*pp_Var4)[uVar11];
              }
              local_450 = uVar7;
            } while ((uVar8 == uVar11) &&
                    (uVar7 = uVar10, local_450 = local_444, local_444 != uVar10));
          }
          if (local_450 < local_444 + 1) {
            local_440 = param_1 + local_440;
            goto LAB_00059e32;
          }
          local_440 = local_440 + local_434;
          local_444 = param_4 - local_434;
        }
        else {
          if ((uVar7 < local_434) && (local_444 != 0)) {
            uVar7 = param_4 - local_434;
          }
          local_440 = local_440 + uVar7;
          local_444 = 0;
        }
      } while( true );
    }
  }
  local_444 = 0;
  uVar7 = param_4 - local_43c;
  if (param_4 - local_43c < local_43c) {
    uVar7 = local_43c;
  }
LAB_00059d28:
  do {
    iVar9 = local_444 + param_4;
    iVar5 = FUN_0005a700(param_2 + param_1,0,iVar9 - param_2);
    if ((iVar9 == 0) || (iVar5 != 0)) goto LAB_00059e30;
    ppuVar3 = __ctype_b_loc();
    puVar1 = *ppuVar3;
    uVar8 = (uint)*(byte *)(param_1 + -1 + iVar9);
    if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {
      pp_Var4 = __ctype_tolower_loc();
      uVar8 = (*pp_Var4)[uVar8];
    }
    param_2 = iVar9;
    if (local_420[uVar8] == 0) {
      local_440 = param_1 + local_444;
      for (uVar8 = local_43c; uVar10 = local_43c, uVar8 < local_458; uVar8 = uVar8 + 1) {
        uVar10 = (uint)param_3[uVar8];
        if ((*(byte *)((int)puVar1 + uVar10 * 2 + 1) & 1) != 0) {
          pp_Var4 = __ctype_tolower_loc();
          uVar10 = (*pp_Var4)[uVar10];
        }
        uVar11 = (uint)*(byte *)(local_440 + uVar8);
        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {
          pp_Var4 = __ctype_tolower_loc();
          uVar11 = (*pp_Var4)[uVar11];
        }
        if (uVar10 != uVar11) {
          local_444 = local_444 + (1 - local_43c) + uVar8;
          goto LAB_00059d28;
        }
      }
      do {
        uVar10 = uVar10 - 1;
        if (uVar10 == 0xffffffff) goto LAB_00059e32;
        uVar8 = (uint)param_3[uVar10];
        if ((*(byte *)((int)puVar1 + uVar8 * 2 + 1) & 1) != 0) {
          pp_Var4 = __ctype_tolower_loc();
          uVar8 = (*pp_Var4)[uVar8];
        }
        uVar11 = (uint)*(byte *)(local_440 + uVar10);
        if ((*(byte *)((int)puVar1 + uVar11 * 2 + 1) & 1) != 0) {
          pp_Var4 = __ctype_tolower_loc();
          uVar11 = (*pp_Var4)[uVar11];
        }
      } while (uVar8 == uVar11);
      local_444 = local_444 + uVar7 + 1;
    }
    else {
      local_444 = local_444 + local_420[uVar8];
    }
  } while( true );
}

