
int internal_fnwmatch(wchar_t *pattern,wchar_t *string,wchar_t *string_end,_Bool no_leading_period,
                     int flags)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  int iVar6;
  byte bVar7;
  wchar_t *unaff_s0;
  wchar_t *pattern_00;
  undefined *unaff_s1;
  wchar_t *unaff_s2;
  int *piVar8;
  byte unaff_s5;
  wchar_t *pwVar9;
  wchar_t *pattern_01;
  code *pcVar10;
  int *unaff_s8;
  code *local_570;
  uint local_568;
  uint local_564;
  wchar_t str [257];
  char s [257];
  
  puVar2 = PTR___stack_chk_guard_000564b4;
  puVar1 = PTR_wcrtomb_00056118;
  iVar3 = *(int *)PTR___stack_chk_guard_000564b4;
  pwVar9 = (wchar_t *)*pattern;
  pattern_00 = pwVar9;
  if (pwVar9 != (wchar_t *)0x0) {
    pattern_00 = (wchar_t *)(flags & 0x10);
    unaff_s1 = (undefined *)(flags & 2);
    local_564 = flags & 1;
    local_568 = flags & 0x20;
    piVar8 = pattern + 1;
    do {
      unaff_s8 = piVar8;
      unaff_s0 = pwVar9;
      if (pattern_00 != (wchar_t *)0x0) {
        unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);
      }
      if ((int)unaff_s0 - 0x21U < 0x3c) {
                    /* WARNING: Could not emulate address calculation at 0x00036510 */
                    /* WARNING: Treating indirect jump as call */
        iVar3 = (*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();
        return iVar3;
      }
      local_570 = (code *)string_end;
      if (string_end == string) goto LAB_000366d0;
      pwVar9 = (wchar_t *)*string;
      if (pattern_00 != (wchar_t *)0x0) {
        pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);
      }
      uVar4 = 1;
      pattern_01 = pattern_00;
      if (pwVar9 != unaff_s0) goto LAB_000366d8;
      no_leading_period = false;
      pwVar9 = (wchar_t *)*unaff_s8;
      string = string + 1;
      unaff_s0 = pwVar9;
      piVar8 = unaff_s8 + 1;
      pattern = unaff_s8;
      unaff_s5 = no_leading_period;
    } while (pwVar9 != (wchar_t *)0x0);
  }
  no_leading_period = (_Bool)unaff_s5;
  uVar4 = 0;
  pattern_01 = pattern_00;
  pattern = unaff_s8;
  if (string != string_end) {
    if ((flags & 8U) == 0) goto LAB_000366d0;
    uVar4 = (uint)(*string != 0x2f);
  }
LAB_000366d8:
  if (iVar3 == *(int *)puVar2) {
    return uVar4;
  }
  pcVar10 = (code *)PTR___stack_chk_fail_00056494;
  (*(code *)PTR___stack_chk_fail_00056494)();
LAB_000371b4:
  pwVar9 = (wchar_t *)(*pcVar10)(pattern_01);
  pattern_00 = pattern_01;
  if (pattern_01 == pwVar9) goto LAB_00036bb0;
  piVar8 = (int *)*pwVar9;
  do {
    pattern_01 = pwVar9 + 1;
LAB_00036b9c:
    while (piVar8 == (int *)0x3f) {
      pattern_00 = pattern_01;
      pcVar10 = local_570;
      if ((int *)*pattern_01 == pattern) goto LAB_000371b4;
LAB_00036bb0:
      if (string_end == string) goto LAB_000366d0;
      string = string + 1;
      pattern_01 = pattern_00 + 1;
      piVar8 = (int *)*pattern_00;
    }
    if (piVar8 != unaff_s2) {
      uVar4 = 0;
      if (piVar8 == (int *)0x0) goto LAB_000366d8;
      piVar5 = (int *)(*(code *)PTR_wmemchr_000563bc)(string,0,(int)string_end - (int)string >> 2);
      unaff_s2 = string_end;
      if (piVar5 != (int *)0x0) {
        unaff_s2 = piVar5;
      }
      if (piVar8 == (int *)0x5b) {
LAB_00036ccc:
        if (local_564 == 0) {
          flags = flags & 0xfffffffb;
        }
        pattern_00 = pattern_01 + -1;
        if (unaff_s2 <= string) goto LAB_000366d0;
        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);
        bVar7 = no_leading_period;
        break;
      }
      if (local_568 == 0) {
LAB_00036a18:
        if (piVar8 == (int *)0x2f) {
          if (local_564 != 0) {
            uVar4 = 1;
            if (string_end <= string) goto LAB_000366d8;
            if (*string == 0x2f) goto LAB_0003714c;
            goto LAB_00036f88;
          }
LAB_00036efc:
          flags = flags & 0xfffffffb;
        }
        else {
LAB_00036a24:
          if (local_564 == 0) goto LAB_00036efc;
        }
        if ((piVar8 == (int *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {
          piVar8 = (int *)*pattern_01;
        }
      }
      else {
        if ((undefined1 *)0x1f < (undefined1 *)((int)piVar8 + -0x21)) goto LAB_00036a24;
        if (-1 < (int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f))
        goto LAB_00036a18;
        if (*pattern_01 == 0x28) goto LAB_00036ccc;
        if (local_564 == 0) goto LAB_00036efc;
      }
      if (unaff_s0 == (wchar_t *)0x0) {
        pattern_00 = pattern_01 + -1;
        if (unaff_s2 <= string) goto LAB_000366d0;
        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);
        bVar7 = no_leading_period;
        goto LAB_00036e4c;
      }
      pattern_00 = pattern_01 + -1;
      unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(piVar8);
      if (unaff_s2 <= string) goto LAB_000366d0;
      unaff_s1 = PTR_LAB_00056274 + 0x6404;
      goto LAB_00036a80;
    }
    piVar8 = (int *)*pattern_01;
    if (piVar8 != pattern) {
      pattern_01 = pattern_01 + 1;
      goto LAB_00036b9c;
    }
    pwVar9 = (wchar_t *)(*local_570)(pattern_01);
    if (pattern_01 == pwVar9) {
      piVar8 = (int *)*pattern_01;
      pattern_01 = pattern_01 + 1;
      goto LAB_00036b9c;
    }
    piVar8 = (int *)*pwVar9;
  } while( true );
  while( true ) {
    string = string + 1;
    bVar7 = false;
    if (unaff_s2 <= string) break;
    iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)bVar7,flags);
    unaff_s1 = (undefined *)flags;
    if (iVar6 == 0) goto LAB_00036ab8;
  }
  uVar4 = 1;
  pattern_01 = pattern_00;
  goto LAB_000366d8;
  while (*string != 0x2f) {
LAB_00036f88:
    string = string + 1;
    uVar4 = 1;
    if (string_end <= string) goto LAB_000366d8;
  }
LAB_0003714c:
  iVar6 = internal_fnwmatch(pattern_01,string + 1,string_end,SUB41((uint)(flags << 0x1d) >> 0x1f,0),
                            flags);
  uVar4 = (uint)(iVar6 != 0);
  goto LAB_000366d8;
  while( true ) {
    string = string + 1;
    no_leading_period = false;
    if (unaff_s2 <= string) break;
LAB_00036a80:
    pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(*string);
    if ((unaff_s0 == pwVar9) &&
       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(no_leading_period & 1),flags)
       , iVar6 == 0)) goto LAB_00036ab8;
  }
  goto LAB_000366d0;
LAB_00036ab8:
  uVar4 = 0;
  pattern_01 = pattern_01 + -1;
  goto LAB_000366d8;
  while( true ) {
    string = string + 1;
    bVar7 = 0;
    if (unaff_s2 <= string) break;
LAB_00036e4c:
    unaff_s1 = (undefined *)flags;
    if ((piVar8 == (int *)*string) &&
       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(bVar7 & 1),flags), iVar6 == 0
       )) {
      uVar4 = 0;
      pattern_01 = pattern_00;
      goto LAB_000366d8;
    }
  }
LAB_000366d0:
  uVar4 = 1;
  pattern_01 = pattern_00;
  goto LAB_000366d8;
}



uint FUN_00036404(code *param_1,code *param_2,code *param_3,uint param_4,undefined *param_5)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  uint uVar4;
  code *pcVar5;
  int iVar6;
  int *unaff_s0;
  int *piVar7;
  undefined *unaff_s1;
  code *unaff_s2;
  code *pcVar8;
  uint unaff_s5;
  int *piVar9;
  int *piVar10;
  code *unaff_s8;
  code *local_570;
  uint local_568;
  uint local_564;
  
  puVar2 = PTR___stack_chk_guard_000564b4;
  puVar1 = PTR_wcrtomb_00056118;
  iVar3 = *(int *)PTR___stack_chk_guard_000564b4;
  piVar9 = *(int **)param_1;
  piVar7 = piVar9;
  if (piVar9 != (int *)0x0) {
    piVar7 = (int *)((uint)param_5 & 0x10);
    unaff_s1 = (undefined *)((uint)param_5 & 2);
    local_564 = (uint)param_5 & 1;
    local_568 = (uint)param_5 & 0x20;
    pcVar8 = param_1 + 4;
    do {
      unaff_s8 = pcVar8;
      unaff_s0 = piVar9;
      if (piVar7 != (int *)0x0) {
        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);
      }
      if ((int)unaff_s0 - 0x21U < 0x3c) {
                    /* WARNING: Could not emulate address calculation at 0x00036510 */
                    /* WARNING: Treating indirect jump as call */
        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();
        return uVar4;
      }
      local_570 = param_3;
      if (param_3 == param_2) goto LAB_000366d0;
      piVar9 = *(int **)param_2;
      if (piVar7 != (int *)0x0) {
        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);
      }
      uVar4 = 1;
      piVar10 = piVar7;
      if (piVar9 != unaff_s0) goto LAB_000366d8;
      param_4 = 0;
      piVar9 = *(int **)unaff_s8;
      param_2 = param_2 + 4;
      unaff_s0 = piVar9;
      pcVar8 = unaff_s8 + 4;
      unaff_s5 = param_4;
      param_1 = unaff_s8;
    } while (piVar9 != (int *)0x0);
  }
  param_4 = unaff_s5;
  uVar4 = 0;
  piVar10 = piVar7;
  param_1 = unaff_s8;
  if (param_2 != param_3) {
    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;
    uVar4 = (uint)(*(int *)param_2 != 0x2f);
  }
LAB_000366d8:
  if (iVar3 == *(int *)puVar2) {
    return uVar4;
  }
  pcVar8 = (code *)PTR___stack_chk_fail_00056494;
  (*(code *)PTR___stack_chk_fail_00056494)();
LAB_000371b4:
  piVar9 = (int *)(*pcVar8)(piVar10);
  piVar7 = piVar10;
  if (piVar10 == piVar9) goto LAB_00036bb0;
  pcVar8 = (code *)*piVar9;
  do {
    piVar10 = piVar9 + 1;
LAB_00036b9c:
    while (pcVar8 == (code *)0x3f) {
      piVar7 = piVar10;
      pcVar8 = local_570;
      if ((code *)*piVar10 == param_1) goto LAB_000371b4;
LAB_00036bb0:
      if (param_3 == param_2) goto LAB_000366d0;
      param_2 = param_2 + 4;
      piVar10 = piVar7 + 1;
      pcVar8 = (code *)*piVar7;
    }
    if (pcVar8 != unaff_s2) {
      uVar4 = 0;
      if (pcVar8 == (code *)0x0) goto LAB_000366d8;
      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);
      unaff_s2 = param_3;
      if (pcVar5 != (code *)0x0) {
        unaff_s2 = pcVar5;
      }
      if (pcVar8 == (code *)0x5b) {
LAB_00036ccc:
        if (local_564 == 0) {
          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);
        }
        piVar7 = piVar10 + -1;
        if (unaff_s2 <= param_2) goto LAB_000366d0;
        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);
        uVar4 = param_4;
        break;
      }
      if (local_568 == 0) {
LAB_00036a18:
        if (pcVar8 == (code *)0x2f) {
          if (local_564 != 0) {
            uVar4 = 1;
            if (param_3 <= param_2) goto LAB_000366d8;
            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;
            goto LAB_00036f88;
          }
LAB_00036efc:
          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);
        }
        else {
LAB_00036a24:
          if (local_564 == 0) goto LAB_00036efc;
        }
        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {
          pcVar8 = (code *)*piVar10;
        }
      }
      else {
        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;
        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;
        if (*piVar10 == 0x28) goto LAB_00036ccc;
        if (local_564 == 0) goto LAB_00036efc;
      }
      if (unaff_s0 == (int *)0x0) {
        piVar7 = piVar10 + -1;
        if (unaff_s2 <= param_2) goto LAB_000366d0;
        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);
        uVar4 = param_4;
        goto LAB_00036e4c;
      }
      piVar7 = piVar10 + -1;
      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);
      if (unaff_s2 <= param_2) goto LAB_000366d0;
      unaff_s1 = PTR_LAB_00056274 + 0x6404;
      goto LAB_00036a80;
    }
    pcVar8 = (code *)*piVar10;
    if (pcVar8 != param_1) {
      piVar10 = piVar10 + 1;
      goto LAB_00036b9c;
    }
    piVar9 = (int *)(*local_570)(piVar10);
    if (piVar10 == piVar9) {
      pcVar8 = (code *)*piVar10;
      piVar10 = piVar10 + 1;
      goto LAB_00036b9c;
    }
    pcVar8 = (code *)*piVar9;
  } while( true );
  while( true ) {
    param_2 = param_2 + 4;
    uVar4 = 0;
    if (unaff_s2 <= param_2) break;
    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);
    unaff_s1 = param_5;
    if (iVar6 == 0) goto LAB_00036ab8;
  }
  uVar4 = 1;
  piVar10 = piVar7;
  goto LAB_000366d8;
  while (*(int *)param_2 != 0x2f) {
LAB_00036f88:
    param_2 = param_2 + 4;
    uVar4 = 1;
    if (param_3 <= param_2) goto LAB_000366d8;
  }
LAB_0003714c:
  iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);
  uVar4 = (uint)(iVar6 != 0);
  goto LAB_000366d8;
  while( true ) {
    param_2 = param_2 + 4;
    param_4 = 0;
    if (unaff_s2 <= param_2) break;
LAB_00036a80:
    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);
    if ((unaff_s0 == piVar9) &&
       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))
    goto LAB_00036ab8;
  }
  goto LAB_000366d0;
LAB_00036ab8:
  uVar4 = 0;
  piVar10 = piVar10 + -1;
  goto LAB_000366d8;
  while( true ) {
    param_2 = param_2 + 4;
    uVar4 = 0;
    if (unaff_s2 <= param_2) break;
LAB_00036e4c:
    unaff_s1 = param_5;
    if ((pcVar8 == *(code **)param_2) &&
       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {
      uVar4 = 0;
      piVar10 = piVar7;
      goto LAB_000366d8;
    }
  }
LAB_000366d0:
  uVar4 = 1;
  piVar10 = piVar7;
  goto LAB_000366d8;
}


lui gp,0x2
addiu gp,gp,0x7cdc
addu gp,gp,t9
lw v0,-0x7c2c(gp)
addiu sp,sp,-0x590
sw s6,0x580(sp)
sw v0,0x30(sp)
sw gp,0x18(sp)
sw s7,0x584(sp)
or s7,a1,zero
sw s3,0x574(sp)
or s3,a2,zero
sw ra,0x58c(sp)
sw s8,0x588(sp)
sw s5,0x57c(sp)
sw s4,0x578(sp)
sw s2,0x570(sp)
sw s1,0x56c(sp)
sw s0,0x568(sp)
lw v0,0x0(v0)
lw s6,0x0(a0)
sw v0,0x564(sp)
beq s6,zero,0x000367d4
_addiu v0,sp,0x5c
sw a2,0x20(sp)
addiu s4,a0,0x4
sw v0,0x3c(sp)
or s8,a0,zero
lw v0,0x5a0(sp)
or s5,a3,zero
andi s0,v0,0x10
andi s1,v0,0x2
lw v0,-0x7e80(gp)
sw v0,0x34(sp)
lw v0,-0x7fc8(gp)
addiu v0,v0,0x4fe0
sw v0,0x24(sp)
lw v0,-0x7e6c(gp)
addiu v0,v0,0x5cdc
sw v0,0x44(sp)
lw v0,-0x7fc8(gp)
addiu v0,v0,0x724
sw v0,0x40(sp)
lw v0,0x5a0(sp)
andi v0,v0,0x1
sw v0,0x2c(sp)
lw v0,0x5a0(sp)
andi v0,v0,0x20
sw v0,0x28(sp)
lw v0,0x5a0(sp)
andi v0,v0,0x5
sw v0,0x38(sp)
or v0,s6,zero
or s6,s0,zero
or s0,v0,zero
beq s6,zero,0x00036500
_addiu v0,s0,-0x21
lw t9,-0x7c34(gp)
jalr t9
_or a0,s0,zero
lw gp,0x18(sp)
or s0,v0,zero
addiu v0,s0,-0x21
sltiu v1,v0,0x3c
beq v1,zero,0x0003678c
_lw v1,0x24(sp)
sll v0,v0,0x2
addu v0,v1,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
bne s1,zero,0x0003686c
_lw v0,0x20(sp)
lw s0,0x4(s8)
beq s0,zero,0x000366d0
_addiu s4,s8,0x8
beq s6,zero,0x00036bec
_lw t9,-0x7c34(gp)
jalr t9
_or a0,s0,zero
or s0,v0,zero
lw v0,0x20(sp)
beq v0,s7,0x000366d0
_lw gp,0x18(sp)
lw t9,-0x7c34(gp)
or s8,s4,zero
jalr t9
_lw a0,0x0(s7)
bne v0,s0,0x000366d0
_lw gp,0x18(sp)
b 0x000367c0
_or s5,zero,zero
lw v0,0x34(sp)
lw v0,-0x56a0(v0)
beq v0,zero,0x00036b00
_lw t9,-0x7c94(gp)
lw v1,0x20(sp)
beq v1,s7,0x000366d0
_li v1,0x2e
lw s2,0x0(s7)
beq s2,v1,0x00036adc
_li v1,0x2f
bne s2,v1,0x000365b0
_lw v1,0x2c(sp)
bne v1,zero,0x000366d0
_nop
lw v1,0x4(s8)
li a0,0x21
beq v1,a0,0x000369c8
_nop
bltz v0,0x00036c08
_li v0,0x5e
sw zero,0x48(sp)
or s8,s4,zero
beq s6,zero,0x000365f0
_addiu v1,sp,0x45c
lw t9,-0x7c34(gp)
jalr t9
_or a0,s2,zero
lw gp,0x18(sp)
or s2,v0,zero
addiu v1,sp,0x45c
lw v0,0x0(s8)
li s5,0x100
addiu s8,s8,0x4
b 0x0003661c
_sw v1,0x4c(sp)
beq v0,s2,0x0003693c
_or v0,s3,zero
or s8,v1,zero
li v1,0x5d
beq v0,v1,0x000366c4
_nop
bne s1,zero,0x00036630
_li v1,0x5b
li v1,0x5c
beq v0,v1,0x00036908
_li v1,0x5b
beq v0,v1,0x00036890
_nop
beq v0,zero,0x00036798
_nop
lw s3,0x0(s8)
beq s6,zero,0x00036660
_li a0,0x2d
lw t9,-0x7c34(gp)
jalr t9
_or a0,v0,zero
lw gp,0x18(sp)
li a0,0x2d
bne s3,a0,0x00036604
_addiu v1,s8,0x4
lw a0,0x4(s8)
beq a0,zero,0x00036934
_li a1,0x5d
beq a0,a1,0x0003698c
_nop
bne s1,zero,0x00036698
_addiu v1,s8,0x8
li a1,0x5c
bne a0,a1,0x00036698
_nop
lw a0,0x8(s8)
addiu v1,s8,0xc
beq a0,zero,0x000366d0
_sltu v0,s2,v0
bne v0,zero,0x000366b0
_sltu a0,a0,s2
beq a0,zero,0x00036f0c
_or s8,v1,zero
lw v0,0x0(v1)
addiu s8,v1,0x4
li v1,0x5d
bne v0,v1,0x0003661c
_nop
lw v0,0x48(sp)
bne v0,zero,0x00036570
_nop
li v0,0x1
lw v1,0x30(sp)
lw a0,0x564(sp)
lw v1,0x0(v1)
bne a0,v1,0x000371a8
_lw ra,0x58c(sp)
lw s8,0x588(sp)
lw s7,0x584(sp)
lw s6,0x580(sp)
lw s5,0x57c(sp)
lw s4,0x578(sp)
lw s3,0x574(sp)
lw s2,0x570(sp)
lw s1,0x56c(sp)
lw s0,0x568(sp)
jr ra
_addiu sp,sp,0x590
lw v0,0x28(sp)
bne v0,zero,0x00036d70
_li v0,0x28
lw v0,0x20(sp)
beq v0,s7,0x000366d0
_li v1,0x2f
lw v0,0x0(s7)
beq v0,v1,0x00036aec
_li v1,0x2e
bne v0,v1,0x000367b8
_nop
bne s5,zero,0x000366d4
_li v0,0x1
b 0x000367c0
_or s8,s4,zero
lw v1,0x38(sp)
li v0,0x5
bne v1,v0,0x00036790
_lw v0,0x20(sp)
beq v0,s7,0x000366d0
_li v0,0x2f
lw v1,0x0(s7)
bne v1,v0,0x000366d4
_li v0,0x1
or s8,s4,zero
b 0x000367c0
_li s5,0x1
lw v0,0x28(sp)
bne v0,zero,0x00036d2c
_li v0,0x28
lw v0,0x20(sp)
beq v0,s7,0x000366d0
_nop
beq s6,zero,0x000367b0
_lw v0,0x0(s7)
lw t9,-0x7c34(gp)
jalr t9
_or a0,v0,zero
lw gp,0x18(sp)
bne v0,s0,0x000366d4
_li v0,0x1
or s5,zero,zero
or s8,s4,zero
lw s0,0x0(s8)
addiu s7,s7,0x4
bne s0,zero,0x000364e0
_addiu s4,s8,0x4
lw s3,0x20(sp)
beq s7,s3,0x000366d4
_or v0,zero,zero
lw v0,0x5a0(sp)
andi v0,v0,0x8
beq v0,zero,0x000366d0
_nop
lw v0,0x0(s7)
xori v0,v0,0x2f
b 0x000366d4
_sltu v0,zero,v0
lw v0,0x28(sp)
or s0,s6,zero
bne v0,zero,0x00036b28
_lw s3,0x20(sp)
beq s3,s7,0x00036820
_li v0,0x2e
lw a0,0x0(s7)
beq a0,v0,0x00036b4c
_nop
lw s4,0x4(s8)
addiu s6,s8,0x8
lw v0,0x2c(sp)
bne v0,zero,0x00036ff4
_li v0,0x3f
beq s4,v0,0x00036854
_li v1,0x2a
bne s4,v1,0x000369d8
_nop
lw s4,0x0(s6)
addiu s6,s6,0x4
bne s4,v0,0x0003683c
_nop
beq s3,s7,0x000366d0
_nop
lw s4,0x0(s6)
addiu s7,s7,0x4
b 0x0003684c
_addiu s6,s6,0x4
beq v0,s7,0x000366d4
_li v0,0x1
bne s6,zero,0x0003655c
_lw t9,-0x7c34(gp)
lw v0,0x0(s7)
bne v0,s0,0x000366d0
_or s8,s4,zero
b 0x000367c0
_or s5,zero,zero
lw s3,0x0(s8)
li v1,0x3a
bne s3,v1,0x00036644
_or a0,zero,zero
lw a1,0x3c(sp)
li a3,0x3a
b 0x000368d4
_or v1,s8,zero
addiu v1,v0,-0x61
sltiu v1,v1,0x19
beq v1,zero,0x000368f0
_nop
addiu a0,a0,0x1
sw v0,0x0(a1)
or v1,a2,zero
beq a0,s5,0x000366d0
_addiu a1,a1,0x4
lw v0,0x4(v1)
bne v0,a3,0x000368b0
_addiu a2,v1,0x4
lw a1,0x4(a2)
li v0,0x5d
beq a1,v0,0x00036c48
_sll v0,a0,0x2
li v0,0x5b
beq s2,v0,0x0003693c
_addiu v1,s8,0x4
or s8,v1,zero
b 0x0003661c
_li v0,0x3a
lw v0,0x0(s8)
beq v0,zero,0x000366d0
_nop
beq s6,zero,0x00036928
_lw t9,-0x7c34(gp)
jalr t9
_or a0,v0,zero
lw gp,0x18(sp)
lw s3,0x4(s8)
b 0x0003665c
_addiu s8,s8,0x4
bne v0,s2,0x000366d4
_li v0,0x1
li t1,0x5b
li a1,0x5d
li a3,0x3a
li t4,0x3d
li t2,0x2e
li t3,0x5c
or v0,v1,zero
beq s3,zero,0x000366d0
_or a0,s3,zero
bne s1,zero,0x00036970
_nop
beq s3,t3,0x00036ac0
_nop
beq s3,t1,0x000369a0
_nop
beq a0,a1,0x00037094
_or s8,v0,zero
lw s3,0x0(v0)
b 0x00036954
_addiu v1,s8,0x4
beq v0,s2,0x0003693c
_li v0,0x2d
li s3,0x5d
b 0x00036644
_or s8,v1,zero
lw s3,0x4(s8)
beq s3,a3,0x00036dc0
_nop
beq s3,t4,0x00036c1c
_nop
beq s3,t2,0x00036e80
_addiu v0,s8,0x8
or s8,v1,zero
b 0x00036954
_addiu v1,s8,0x4
li v0,0x1
addiu s8,s8,0x8
b 0x000365d0
_sw v0,0x48(sp)
beq s4,zero,0x000366d4
_or v0,zero,zero
or a1,zero,zero
subu a2,s3,s7
lw t9,-0x7d24(gp)
or a0,s7,zero
sra a2,a2,0x2
jalr t9
_or s2,s3,zero
li v1,0x5b
lw gp,0x18(sp)
beq s4,v1,0x00036ccc
_movn s2,v0,v0
lw v0,0x28(sp)
bne v0,zero,0x00036ec4
_addiu v1,s4,-0x21
li v0,0x2f
beq s4,v0,0x00036f50
_lw v0,0x2c(sp)
beq v0,zero,0x00036efc
_lw v1,0x5a0(sp)
li v0,0x5c
beq s4,v0,0x0003703c
_nop
beq s0,zero,0x00036e20
_sltu v0,s7,s2
lw t9,-0x7c34(gp)
or a0,s4,zero
jalr t9
_addiu s6,s6,-0x4
sltu v1,s7,s2
lw gp,0x18(sp)
beq v1,zero,0x000366d0
_or s0,v0,zero
lw s1,-0x7e6c(gp)
lw s4,0x5a0(sp)
b 0x00036a80
_addiu s1,s1,0x6404
addiu s7,s7,0x4
sltu v0,s7,s2
beq v0,zero,0x000366d0
_or s5,zero,zero
lw t9,-0x7c34(gp)
jalr t9
_lw a0,0x0(s7)
bne s0,v0,0x00036a70
_lw gp,0x18(sp)
sw s4,0x10(sp)
andi a3,s5,0x1
or a2,s3,zero
or a1,s7,zero
or t9,s1,zero
bal 0x00036404
_or a0,s6,zero
bne v0,zero,0x00036a70
_lw gp,0x18(sp)
b 0x000366d4
_or v0,zero,zero
lw v0,0x4(s8)
beq v0,zero,0x000366d4
_li v0,0x1
lw s3,0x8(s8)
addiu s8,s8,0x8
b 0x00036954
_addiu v1,s8,0x4
beq s5,zero,0x000365b0
_nop
b 0x000366d4
_li v0,0x1
lw v0,0x2c(sp)
beq v0,zero,0x000367b8
_li v0,0x1
b 0x000366d8
_lw v1,0x30(sp)
jalr t9
_lw a0,0x40(sp)
li v1,0x1
li a0,-0x1
lw gp,0x18(sp)
movn a0,v1,v0
lw v1,0x34(sp)
or v0,a0,zero
b 0x00036588
_sw a0,-0x56a0(v1)
lw a0,0x4(s8)
li v0,0x28
beq a0,v0,0x00036f18
_lw t9,-0x7e6c(gp)
beq s3,s7,0x00036db4
_li v0,0x2e
lw a0,0x0(s7)
bne a0,v0,0x00036db8
_addiu s6,s8,0x8
bne s5,zero,0x000366d0
_lw v0,0x28(sp)
addiu s6,s8,0x8
beq v0,zero,0x00036828
_lw s4,0x4(s8)
lw v0,0x2c(sp)
bne v0,zero,0x000370ac
_li v1,0x3f
lw v0,-0x7e6c(gp)
li s2,0x2a
li s8,0x28
addiu v0,v0,0x5950
beq s4,v1,0x00036ba4
_sw v0,0x20(sp)
bne s4,s2,0x000369d8
_nop
lw s4,0x0(s6)
beq s4,s8,0x00036bc8
_lw t9,0x20(sp)
addiu s6,s6,0x4
bne s4,v1,0x00036b84
_nop
lw v0,0x0(s6)
beq v0,s8,0x000371b4
_lw t9,0x20(sp)
beq s3,s7,0x000366d0
_nop
lw s4,0x0(s6)
addiu s7,s7,0x4
b 0x00036b9c
_addiu s6,s6,0x4
jalr t9
_or a0,s6,zero
li v1,0x3f
beq s6,v0,0x00036bfc
_lw gp,0x18(sp)
lw s4,0x0(v0)
or s6,v0,zero
b 0x00036b9c
_addiu s6,s6,0x4
bne v0,s7,0x0003687c
_li v0,0x1
b 0x000366d8
_lw v1,0x30(sp)
lw s4,0x0(s6)
b 0x00036b9c
_addiu s6,s6,0x4
beq v1,v0,0x000369cc
_li v0,0x1
or s8,s4,zero
b 0x000365d0
_sw zero,0x48(sp)
lw v0,0x8(s8)
beq v0,zero,0x000366d4
_li v0,0x1
lw v0,0xc(s8)
bne v0,t4,0x000366d4
_li v0,0x1
lw v0,0x10(s8)
bne v0,a1,0x000366d0
_addiu v0,s8,0x18
b 0x00036978
_lw a0,0x14(s8)
lw a3,0x3c(sp)
addiu a1,sp,0x568
lw t1,0x4c(sp)
addiu a0,sp,0x460
addu v0,a1,v0
or t0,a0,zero
sw zero,-0x50c(v0)
b 0x00036c98
_lw v0,0x5c(sp)
beq a1,zero,0x00036c80
_addiu a1,v0,-0x20
sltiu a1,a1,0x4
beq a1,zero,0x000366d0
_nop
beq a3,t1,0x000366d0
_addiu a3,a3,0x4
sb v0,0x0(t0)
lw v0,0x0(a3)
beq v0,zero,0x00036f9c
_addiu t0,t0,0x1
slti a1,v0,0x40
bne a1,zero,0x00036c6c
_slti a1,v0,0x25
slti a1,v0,0x41
bne a1,zero,0x000366d0
_slti a1,v0,0x60
bne a1,zero,0x00036c80
_addiu a1,v0,-0x61
sltiu a1,a1,0x1e
bne a1,zero,0x00036c80
_nop
b 0x000366d4
_li v0,0x1
lw v0,0x2c(sp)
beq v0,zero,0x00036eb4
_lw v1,0x5a0(sp)
sltu v0,s7,s2
beq v0,zero,0x000366d0
_addiu s6,s6,-0x4
lw s0,-0x7e6c(gp)
or a3,s5,zero
lw s1,0x5a0(sp)
addiu s0,s0,0x6404
sw s1,0x10(sp)
or a2,s3,zero
or a1,s7,zero
or t9,s0,zero
bal 0x00036404
_or a0,s6,zero
beq v0,zero,0x00036ab8
_lw gp,0x18(sp)
addiu s7,s7,0x4
sltu v0,s7,s2
bne v0,zero,0x00036cf4
_or a3,zero,zero
b 0x000366d4
_li v0,0x1
lw v1,0x4(s8)
bne v1,v0,0x00036790
_lw v0,0x20(sp)
lw v0,0x5a0(sp)
or a2,s7,zero
lw a3,0x20(sp)
or a1,s4,zero
lw t9,0x44(sp)
or a0,s0,zero
sw v0,0x14(sp)
jalr t9
_sw s5,0x10(sp)
li v1,-0x1
beq v0,v1,0x0003678c
_lw gp,0x18(sp)
b 0x000366d8
_lw v1,0x30(sp)
lw v1,0x4(s8)
bne v1,v0,0x00036724
_lw v0,0x20(sp)
lw v0,0x5a0(sp)
li a0,0x3f
lw a3,0x20(sp)
or a2,s7,zero
lw t9,0x44(sp)
or a1,s4,zero
sw v0,0x14(sp)
jalr t9
_sw s5,0x10(sp)
li v1,-0x1
beq v0,v1,0x00036720
_lw gp,0x18(sp)
b 0x000366d8
_lw v1,0x30(sp)
addiu s6,s8,0x8
b 0x00036b60
_lw s4,0x4(s8)
lw v0,0x8(s8)
beq v0,s3,0x00036e0c
_addiu a0,s8,0x8
addiu v0,v0,-0x61
sltiu v0,v0,0x19
beq v0,zero,0x000369bc
_nop
addiu a0,s8,0xc
lw v0,0xc(s8)
b 0x00036e04
_addiu s8,s8,0x404
sltiu v0,v0,0x19
beq v0,zero,0x000369bc
_nop
addiu a0,a0,0x4
beq a0,s8,0x000366d0
_lw v0,0x0(a0)
bne v0,a3,0x00036dec
_addiu v0,v0,-0x61
lw v0,0x4(a0)
bne v0,a1,0x000369bc
_addiu v0,a0,0xc
b 0x00036978
_lw a0,0x8(a0)
beq v0,zero,0x000366d0
_addiu s6,s6,-0x4
lw s0,-0x7e6c(gp)
or a3,s5,zero
lw s1,0x5a0(sp)
b 0x00036e4c
_addiu s0,s0,0x6404
addiu s7,s7,0x4
sltu v0,s7,s2
beq v0,zero,0x000366d0
_or a3,zero,zero
lw v0,0x0(s7)
bne s4,v0,0x00036e3c
_or a2,s3,zero
sw s1,0x10(sp)
andi a3,a3,0x1
or a1,s7,zero
or t9,s0,zero
bal 0x00036404
_or a0,s6,zero
bne v0,zero,0x00036e3c
_lw gp,0x18(sp)
b 0x000366d4
_or v0,zero,zero
lw v1,0x4(v0)
beq v1,zero,0x000366d0
_addiu a0,v0,0x4
beq v1,t2,0x00036e9c
_nop
b 0x00036e80
_or v0,a0,zero
lw v1,0x4(a0)
bne v1,a1,0x00036e94
_nop
lw a0,0xc(v0)
b 0x00036978
_addiu v0,v0,0x10
li v0,-0x5
and v0,v1,v0
b 0x00036cd8
_sw v0,0x5a0(sp)
sltiu v0,v1,0x20
beq v0,zero,0x00036a24
_lw v0,0x2c(sp)
lui v0,0x8000
addiu v0,v0,0x401
srlv v0,v0,v1
ext v0,v0,0x0,0x1
beq v0,zero,0x00036a18
_li v0,0x28
lw v1,0x0(s6)
beq v1,v0,0x00036ccc
_lw v0,0x2c(sp)
bne v0,zero,0x00036a38
_lw v1,0x5a0(sp)
li v0,-0x5
and v0,v1,v0
b 0x00036a2c
_sw v0,0x5a0(sp)
lw s3,0x0(v1)
b 0x0003693c
_addiu v1,v1,0x4
li a0,0x2a
lw v0,0x5a0(sp)
or a3,s3,zero
sw s5,0x10(sp)
or a2,s7,zero
addiu t9,t9,0x5cdc
sw v0,0x14(sp)
bal 0x00035cdc
_or a1,s4,zero
li a0,-0x1
bne v0,a0,0x000366d4
_lw gp,0x18(sp)
b 0x00036b38
_nop
beq v0,zero,0x00036efc
_lw v1,0x5a0(sp)
sltu v0,s7,s3
beq v0,zero,0x000366d4
_li v0,0x1
lw v0,0x0(s7)
beq v0,s4,0x00037148
_li v1,0x2f
b 0x00036f88
_addiu s7,s7,0x4
lw v0,0x0(s7)
beq v0,v1,0x0003714c
_lw v0,0x5a0(sp)
addiu s7,s7,0x4
sltu v0,s7,s3
bne v0,zero,0x00036f78
_li v0,0x1
b 0x000366d8
_lw v1,0x30(sp)
lw t9,-0x7c24(gp)
sw a2,0x54(sp)
sw v1,0x50(sp)
jalr t9
_sb zero,0x0(t0)
lw gp,0x18(sp)
or a1,v0,zero
lw v1,0x50(sp)
beq v0,zero,0x000366d0
_lw a2,0x54(sp)
lw t9,-0x7c74(gp)
lw a0,0x0(s7)
sw v1,0x54(sp)
jalr t9
_sw a2,0x50(sp)
lw gp,0x18(sp)
lw a2,0x50(sp)
bne v0,zero,0x00037178
_lw v1,0x54(sp)
addiu s8,a2,0xc
b 0x00036610
_lw v0,0x8(a2)
li v1,0x2a
beq s4,v0,0x00037018
_li a1,0x2f
bne s4,v1,0x0003704c
_nop
lw s4,0x0(s6)
addiu s6,s6,0x4
bne s4,v0,0x00037000
_nop
beq s3,s7,0x000366d0
_nop
lw a0,0x0(s7)
beq a0,a1,0x000366d0
_nop
lw s4,0x0(s6)
addiu s7,s7,0x4
b 0x00037010
_addiu s6,s6,0x4
bne s1,zero,0x00036a38
_nop
b 0x00036a38
_lw s4,0x0(s6)
bne s4,zero,0x00037080
_lw v0,0x5a0(sp)
andi v0,v0,0x8
bne v0,zero,0x00036ab8
_subu a2,s3,s7
lw t9,-0x7d24(gp)
li a1,0x2f
sra a2,a2,0x2
jalr t9
_or a0,s7,zero
lw gp,0x18(sp)
b 0x000366d4
_sltu v0,zero,v0
lw v0,0x2c(sp)
beq v0,zero,0x000369e0
_li a1,0x2f
b 0x000369e8
_subu a2,s3,s7
lw v1,0x48(sp)
bne v1,zero,0x000366d0
_nop
or s8,v0,zero
b 0x000367c0
_or s5,zero,zero
lw v0,-0x7e6c(gp)
li s8,0x28
li s2,0x2f
addiu v0,v0,0x5950
beq s4,v1,0x000370e8
_sw v0,0x20(sp)
li v0,0x2a
bne s4,v0,0x0003704c
_nop
lw s4,0x0(s6)
beq s4,s8,0x00037118
_lw t9,0x20(sp)
addiu s6,s6,0x4
bne s4,v1,0x000370c8
_li v0,0x2a
lw v0,0x0(s6)
beq v0,s8,0x00037188
_lw t9,0x20(sp)
beq s7,s3,0x000366d4
_li v0,0x1
lw v0,0x0(s7)
beq v0,s2,0x000366d4
_li v0,0x1
lw s4,0x0(s6)
addiu s7,s7,0x4
b 0x000370e0
_addiu s6,s6,0x4
jalr t9
_or a0,s6,zero
li v1,0x3f
beq s6,v0,0x0003713c
_lw gp,0x18(sp)
lw s4,0x0(v0)
or s6,v0,zero
b 0x000370e0
_addiu s6,s6,0x4
lw s4,0x0(s6)
b 0x000370e0
_addiu s6,s6,0x4
lw v0,0x5a0(sp)
addiu a1,s7,0x4
lw t9,-0x7e6c(gp)
or a2,s3,zero
or a0,s6,zero
ext a3,v0,0x2,0x1
addiu t9,t9,0x6404
bal 0x00036404
_sw v0,0x10(sp)
lw gp,0x18(sp)
b 0x000366d4
_sltu v0,zero,v0
lw s3,0xc(v1)
addiu s8,v1,0xc
b 0x0003693c
_addiu v1,v1,0x10
jalr t9
_or a0,s6,zero
li v1,0x3f
beq s6,v0,0x000370f4
_lw gp,0x18(sp)
lw s4,0x0(v0)
b 0x00037134
_or s6,v0,zero
lw t9,-0x7c4c(gp)
jalr t9
_nop
jalr t9
_or a0,s6,zero
li v1,0x3f
beq s6,v0,0x00036bb0
_lw gp,0x18(sp)
lw s4,0x0(v0)
b 0x00036be4
_or s6,v0,zero
(translation_unit "uint FUN_00036404(code *param_1,code *param_2,code *param_3,uint param_4,undefined *param_5)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  code *pcVar5;\n  int iVar6;\n  int *unaff_s0;\n  int *piVar7;\n  undefined *unaff_s1;\n  code *unaff_s2;\n  code *pcVar8;\n  uint unaff_s5;\n  int *piVar9;\n  int *piVar10;\n  code *unaff_s8;\n  code *local_570;\n  uint local_568;\n  uint local_564;\n  \n  puVar2 = PTR___stack_chk_guard_000564b4;\n  puVar1 = PTR_wcrtomb_00056118;\n  iVar3 = *(int *)PTR___stack_chk_guard_000564b4;\n  piVar9 = *(int **)param_1;\n  piVar7 = piVar9;\n  if (piVar9 != (int *)0x0) {\n    piVar7 = (int *)((uint)param_5 & 0x10);\n    unaff_s1 = (undefined *)((uint)param_5 & 2);\n    local_564 = (uint)param_5 & 1;\n    local_568 = (uint)param_5 & 0x20;\n    pcVar8 = param_1 + 4;\n    do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);\n  }\n  param_4 = unaff_s5;\n  uVar4 = 0;\n  piVar10 = piVar7;\n  param_1 = unaff_s8;\n  if (param_2 != param_3) {\n    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*(int *)param_2 != 0x2f);\n  }\nLAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }\n  pcVar8 = (code *)PTR___stack_chk_fail_00056494;\n  (*(code *)PTR___stack_chk_fail_00056494)();\nLAB_000371b4:\n  piVar9 = (int *)(*pcVar8)(piVar10);\n  piVar7 = piVar10;\n  if (piVar10 == piVar9) goto LAB_00036bb0;\n  pcVar8 = (code *)*piVar9;\n  do {\n    piVar10 = piVar9 + 1;\nLAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }\n    if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    pcVar8 = (code *)*piVar10;\n    if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar9 = (int *)(*local_570)(piVar10);\n    if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    pcVar8 = (code *)*piVar9;\n  } while( true );\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\n    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);\n    unaff_s1 = param_5;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n  while (*(int *)param_2 != 0x2f) {\nLAB_00036f88:\n    param_2 = param_2 + 4;\n    uVar4 = 1;\n    if (param_3 <= param_2) goto LAB_000366d8;\n  }\nLAB_0003714c:\n  iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);\n  uVar4 = (uint)(iVar6 != 0);\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    param_4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);\n    if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;\n  }\n  goto LAB_000366d0;\nLAB_00036ab8:\n  uVar4 = 0;\n  piVar10 = piVar10 + -1;\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036e4c:\n    unaff_s1 = param_5;\n    if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }\n  }\nLAB_000366d0:\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n}\n\n" (function_definition "uint FUN_00036404(code *param_1,code *param_2,code *param_3,uint param_4,undefined *param_5)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  code *pcVar5;\n  int iVar6;\n  int *unaff_s0;\n  int *piVar7;\n  undefined *unaff_s1;\n  code *unaff_s2;\n  code *pcVar8;\n  uint unaff_s5;\n  int *piVar9;\n  int *piVar10;\n  code *unaff_s8;\n  code *local_570;\n  uint local_568;\n  uint local_564;\n  \n  puVar2 = PTR___stack_chk_guard_000564b4;\n  puVar1 = PTR_wcrtomb_00056118;\n  iVar3 = *(int *)PTR___stack_chk_guard_000564b4;\n  piVar9 = *(int **)param_1;\n  piVar7 = piVar9;\n  if (piVar9 != (int *)0x0) {\n    piVar7 = (int *)((uint)param_5 & 0x10);\n    unaff_s1 = (undefined *)((uint)param_5 & 2);\n    local_564 = (uint)param_5 & 1;\n    local_568 = (uint)param_5 & 0x20;\n    pcVar8 = param_1 + 4;\n    do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);\n  }\n  param_4 = unaff_s5;\n  uVar4 = 0;\n  piVar10 = piVar7;\n  param_1 = unaff_s8;\n  if (param_2 != param_3) {\n    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*(int *)param_2 != 0x2f);\n  }\nLAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }\n  pcVar8 = (code *)PTR___stack_chk_fail_00056494;\n  (*(code *)PTR___stack_chk_fail_00056494)();\nLAB_000371b4:\n  piVar9 = (int *)(*pcVar8)(piVar10);\n  piVar7 = piVar10;\n  if (piVar10 == piVar9) goto LAB_00036bb0;\n  pcVar8 = (code *)*piVar9;\n  do {\n    piVar10 = piVar9 + 1;\nLAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }\n    if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    pcVar8 = (code *)*piVar10;\n    if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar9 = (int *)(*local_570)(piVar10);\n    if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    pcVar8 = (code *)*piVar9;\n  } while( true );\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\n    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);\n    unaff_s1 = param_5;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n  while (*(int *)param_2 != 0x2f) {\nLAB_00036f88:\n    param_2 = param_2 + 4;\n    uVar4 = 1;\n    if (param_3 <= param_2) goto LAB_000366d8;\n  }\nLAB_0003714c:\n  iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);\n  uVar4 = (uint)(iVar6 != 0);\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    param_4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);\n    if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;\n  }\n  goto LAB_000366d0;\nLAB_00036ab8:\n  uVar4 = 0;\n  piVar10 = piVar10 + -1;\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036e4c:\n    unaff_s1 = param_5;\n    if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }\n  }\nLAB_000366d0:\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n}" type_identifier (function_declarator "FUN_00036404(code *param_1,code *param_2,code *param_3,uint param_4,undefined *param_5)" identifier (parameter_list "(code *param_1,code *param_2,code *param_3,uint param_4,undefined *param_5)" ( (parameter_declaration "code *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "code *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "code *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "undefined *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  code *pcVar5;\n  int iVar6;\n  int *unaff_s0;\n  int *piVar7;\n  undefined *unaff_s1;\n  code *unaff_s2;\n  code *pcVar8;\n  uint unaff_s5;\n  int *piVar9;\n  int *piVar10;\n  code *unaff_s8;\n  code *local_570;\n  uint local_568;\n  uint local_564;\n  \n  puVar2 = PTR___stack_chk_guard_000564b4;\n  puVar1 = PTR_wcrtomb_00056118;\n  iVar3 = *(int *)PTR___stack_chk_guard_000564b4;\n  piVar9 = *(int **)param_1;\n  piVar7 = piVar9;\n  if (piVar9 != (int *)0x0) {\n    piVar7 = (int *)((uint)param_5 & 0x10);\n    unaff_s1 = (undefined *)((uint)param_5 & 2);\n    local_564 = (uint)param_5 & 1;\n    local_568 = (uint)param_5 & 0x20;\n    pcVar8 = param_1 + 4;\n    do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);\n  }\n  param_4 = unaff_s5;\n  uVar4 = 0;\n  piVar10 = piVar7;\n  param_1 = unaff_s8;\n  if (param_2 != param_3) {\n    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*(int *)param_2 != 0x2f);\n  }\nLAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }\n  pcVar8 = (code *)PTR___stack_chk_fail_00056494;\n  (*(code *)PTR___stack_chk_fail_00056494)();\nLAB_000371b4:\n  piVar9 = (int *)(*pcVar8)(piVar10);\n  piVar7 = piVar10;\n  if (piVar10 == piVar9) goto LAB_00036bb0;\n  pcVar8 = (code *)*piVar9;\n  do {\n    piVar10 = piVar9 + 1;\nLAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }\n    if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    pcVar8 = (code *)*piVar10;\n    if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar9 = (int *)(*local_570)(piVar10);\n    if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    pcVar8 = (code *)*piVar9;\n  } while( true );\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\n    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);\n    unaff_s1 = param_5;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n  while (*(int *)param_2 != 0x2f) {\nLAB_00036f88:\n    param_2 = param_2 + 4;\n    uVar4 = 1;\n    if (param_3 <= param_2) goto LAB_000366d8;\n  }\nLAB_0003714c:\n  iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);\n  uVar4 = (uint)(iVar6 != 0);\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    param_4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);\n    if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;\n  }\n  goto LAB_000366d0;\nLAB_00036ab8:\n  uVar4 = 0;\n  piVar10 = piVar10 + -1;\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036e4c:\n    unaff_s1 = param_5;\n    if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }\n  }\nLAB_000366d0:\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *unaff_s0;" primitive_type (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined *unaff_s1;" type_identifier (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "code *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "code *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (declaration "uint unaff_s5;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "code *unaff_s8;" type_identifier (pointer_declarator "*unaff_s8" * identifier) ;) (declaration "code *local_570;" type_identifier (pointer_declarator "*local_570" * identifier) ;) (declaration "uint local_568;" type_identifier identifier ;) (declaration "uint local_564;" type_identifier identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_000564b4;" (assignment_expression "puVar2 = PTR___stack_chk_guard_000564b4" identifier = identifier) ;) (expression_statement "puVar1 = PTR_wcrtomb_00056118;" (assignment_expression "puVar1 = PTR_wcrtomb_00056118" identifier = identifier) ;) (expression_statement "iVar3 = *(int *)PTR___stack_chk_guard_000564b4;" (assignment_expression "iVar3 = *(int *)PTR___stack_chk_guard_000564b4" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000564b4" * (cast_expression "(int *)PTR___stack_chk_guard_000564b4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar9 = *(int **)param_1;" (assignment_expression "piVar9 = *(int **)param_1" identifier = (pointer_expression "*(int **)param_1" * (cast_expression "(int **)param_1" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "piVar7 = piVar9;" (assignment_expression "piVar7 = piVar9" identifier = identifier) ;) (if_statement "if (piVar9 != (int *)0x0) {\n    piVar7 = (int *)((uint)param_5 & 0x10);\n    unaff_s1 = (undefined *)((uint)param_5 & 2);\n    local_564 = (uint)param_5 & 1;\n    local_568 = (uint)param_5 & 0x20;\n    pcVar8 = param_1 + 4;\n    do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);\n  }" if (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    piVar7 = (int *)((uint)param_5 & 0x10);\n    unaff_s1 = (undefined *)((uint)param_5 & 2);\n    local_564 = (uint)param_5 & 1;\n    local_568 = (uint)param_5 & 0x20;\n    pcVar8 = param_1 + 4;\n    do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);\n  }" { (expression_statement "piVar7 = (int *)((uint)param_5 & 0x10);" (assignment_expression "piVar7 = (int *)((uint)param_5 & 0x10)" identifier = (cast_expression "(int *)((uint)param_5 & 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_5 & 0x10)" ( (binary_expression "(uint)param_5 & 0x10" (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "unaff_s1 = (undefined *)((uint)param_5 & 2);" (assignment_expression "unaff_s1 = (undefined *)((uint)param_5 & 2)" identifier = (cast_expression "(undefined *)((uint)param_5 & 2)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_5 & 2)" ( (binary_expression "(uint)param_5 & 2" (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "local_564 = (uint)param_5 & 1;" (assignment_expression "local_564 = (uint)param_5 & 1" identifier = (binary_expression "(uint)param_5 & 1" (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "local_568 = (uint)param_5 & 0x20;" (assignment_expression "local_568 = (uint)param_5 & 0x20" identifier = (binary_expression "(uint)param_5 & 0x20" (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "pcVar8 = param_1 + 4;" (assignment_expression "pcVar8 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (do_statement "do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);" do (compound_statement "{\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    }" { (expression_statement "unaff_s8 = pcVar8;" (assignment_expression "unaff_s8 = pcVar8" identifier = identifier) ;) (expression_statement "unaff_s0 = piVar9;" (assignment_expression "unaff_s0 = piVar9" identifier = identifier) ;) (if_statement "if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }" if (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }" { (expression_statement "unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);" (assignment_expression "unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9)" identifier = (cast_expression "(int *)(*(code *)PTR_towlower_000564ac)(piVar9)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_towlower_000564ac)(piVar9)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" ( (pointer_expression "*(code *)PTR_towlower_000564ac" * (cast_expression "(code *)PTR_towlower_000564ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar9)" ( identifier ))))) ;) })) (if_statement "if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }" if (parenthesized_expression "((int)unaff_s0 - 0x21U < 0x3c)" ( (binary_expression "(int)unaff_s0 - 0x21U < 0x3c" (binary_expression "(int)unaff_s0 - 0x21U" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }" { comment comment (expression_statement "uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();" (assignment_expression "uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0))" * (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0))" ( (binary_expression "&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" * (cast_expression "(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" ( (binary_expression "puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0" (binary_expression "puVar1 + ((int)unaff_s0 - 0x21U) * 4" identifier + (binary_expression "((int)unaff_s0 - 0x21U) * 4" (parenthesized_expression "((int)unaff_s0 - 0x21U)" ( (binary_expression "(int)unaff_s0 - 0x21U" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar4;" return identifier ;) })) (expression_statement "local_570 = param_3;" (assignment_expression "local_570 = param_3" identifier = identifier) ;) (if_statement "if (param_3 == param_2) goto LAB_000366d0;" if (parenthesized_expression "(param_3 == param_2)" ( (binary_expression "param_3 == param_2" identifier == identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "piVar9 = *(int **)param_2;" (assignment_expression "piVar9 = *(int **)param_2" identifier = (pointer_expression "*(int **)param_2" * (cast_expression "(int **)param_2" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }" if (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }" { (expression_statement "piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);" (assignment_expression "piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9)" identifier = (cast_expression "(int *)(*(code *)PTR_towlower_000564ac)(piVar9)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_towlower_000564ac)(piVar9)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" ( (pointer_expression "*(code *)PTR_towlower_000564ac" * (cast_expression "(code *)PTR_towlower_000564ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar9)" ( identifier ))))) ;) })) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" identifier = identifier) ;) (if_statement "if (piVar9 != unaff_s0) goto LAB_000366d8;" if (parenthesized_expression "(piVar9 != unaff_s0)" ( (binary_expression "piVar9 != unaff_s0" identifier != identifier) )) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;)) (expression_statement "param_4 = 0;" (assignment_expression "param_4 = 0" identifier = number_literal) ;) (expression_statement "piVar9 = *(int **)unaff_s8;" (assignment_expression "piVar9 = *(int **)unaff_s8" identifier = (pointer_expression "*(int **)unaff_s8" * (cast_expression "(int **)unaff_s8" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "unaff_s0 = piVar9;" (assignment_expression "unaff_s0 = piVar9" identifier = identifier) ;) (expression_statement "pcVar8 = unaff_s8 + 4;" (assignment_expression "pcVar8 = unaff_s8 + 4" identifier = (binary_expression "unaff_s8 + 4" identifier + number_literal)) ;) (expression_statement "unaff_s5 = param_4;" (assignment_expression "unaff_s5 = param_4" identifier = identifier) ;) (expression_statement "param_1 = unaff_s8;" (assignment_expression "param_1 = unaff_s8" identifier = identifier) ;) }) while (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "param_4 = unaff_s5;" (assignment_expression "param_4 = unaff_s5" identifier = identifier) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" identifier = identifier) ;) (expression_statement "param_1 = unaff_s8;" (assignment_expression "param_1 = unaff_s8" identifier = identifier) ;) (if_statement "if (param_2 != param_3) {\n    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*(int *)param_2 != 0x2f);\n  }" if (parenthesized_expression "(param_2 != param_3)" ( (binary_expression "param_2 != param_3" identifier != identifier) )) (compound_statement "{\n    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*(int *)param_2 != 0x2f);\n  }" { (if_statement "if (((uint)param_5 & 8) == 0) goto LAB_000366d0;" if (parenthesized_expression "(((uint)param_5 & 8) == 0)" ( (binary_expression "((uint)param_5 & 8) == 0" (parenthesized_expression "((uint)param_5 & 8)" ( (binary_expression "(uint)param_5 & 8" (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "uVar4 = (uint)(*(int *)param_2 != 0x2f);" (assignment_expression "uVar4 = (uint)(*(int *)param_2 != 0x2f)" identifier = (call_expression "(uint)(*(int *)param_2 != 0x2f)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)param_2 != 0x2f)" ( (binary_expression "*(int *)param_2 != 0x2f" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != number_literal) )))) ;) })) (labeled_statement "LAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }" statement_identifier : (if_statement "if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }" if (parenthesized_expression "(iVar3 == *(int *)puVar2)" ( (binary_expression "iVar3 == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar4;\n  }" { (return_statement "return uVar4;" return identifier ;) }))) (expression_statement "pcVar8 = (code *)PTR___stack_chk_fail_00056494;" (assignment_expression "pcVar8 = (code *)PTR___stack_chk_fail_00056494" identifier = (cast_expression "(code *)PTR___stack_chk_fail_00056494" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00056494)();" (call_expression "(*(code *)PTR___stack_chk_fail_00056494)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00056494)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00056494" * (cast_expression "(code *)PTR___stack_chk_fail_00056494" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_000371b4:\n  piVar9 = (int *)(*pcVar8)(piVar10);" statement_identifier : (expression_statement "piVar9 = (int *)(*pcVar8)(piVar10);" (assignment_expression "piVar9 = (int *)(*pcVar8)(piVar10)" identifier = (cast_expression "(int *)(*pcVar8)(piVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar8)(piVar10)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(piVar10)" ( identifier ))))) ;)) (expression_statement "piVar7 = piVar10;" (assignment_expression "piVar7 = piVar10" identifier = identifier) ;) (if_statement "if (piVar10 == piVar9) goto LAB_00036bb0;" if (parenthesized_expression "(piVar10 == piVar9)" ( (binary_expression "piVar10 == piVar9" identifier == identifier) )) (goto_statement "goto LAB_00036bb0;" goto statement_identifier ;)) (expression_statement "pcVar8 = (code *)*piVar9;" (assignment_expression "pcVar8 = (code *)*piVar9" identifier = (cast_expression "(code *)*piVar9" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) (do_statement "do {\n    piVar10 = piVar9 + 1;\nLAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }\n    if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    pcVar8 = (code *)*piVar10;\n    if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar9 = (int *)(*local_570)(piVar10);\n    if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    pcVar8 = (code *)*piVar9;\n  } while( true );" do (compound_statement "{\n    piVar10 = piVar9 + 1;\nLAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }\n    if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    pcVar8 = (code *)*piVar10;\n    if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar9 = (int *)(*local_570)(piVar10);\n    if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    pcVar8 = (code *)*piVar9;\n  }" { (expression_statement "piVar10 = piVar9 + 1;" (assignment_expression "piVar10 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }" statement_identifier : (while_statement "while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }" while (parenthesized_expression "(pcVar8 == (code *)0x3f)" ( (binary_expression "pcVar8 == (code *)0x3f" identifier == (cast_expression "(code *)0x3f" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }" { (expression_statement "piVar7 = piVar10;" (assignment_expression "piVar7 = piVar10" identifier = identifier) ;) (expression_statement "pcVar8 = local_570;" (assignment_expression "pcVar8 = local_570" identifier = identifier) ;) (if_statement "if ((code *)*piVar10 == param_1) goto LAB_000371b4;" if (parenthesized_expression "((code *)*piVar10 == param_1)" ( (binary_expression "(code *)*piVar10 == param_1" (cast_expression "(code *)*piVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier)) == identifier) )) (goto_statement "goto LAB_000371b4;" goto statement_identifier ;)) (labeled_statement "LAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;" statement_identifier : (if_statement "if (param_3 == param_2) goto LAB_000366d0;" if (parenthesized_expression "(param_3 == param_2)" ( (binary_expression "param_3 == param_2" identifier == identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;))) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "piVar10 = piVar7 + 1;" (assignment_expression "piVar10 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) (expression_statement "pcVar8 = (code *)*piVar7;" (assignment_expression "pcVar8 = (code *)*piVar7" identifier = (cast_expression "(code *)*piVar7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) }))) (if_statement "if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }" if (parenthesized_expression "(pcVar8 != unaff_s2)" ( (binary_expression "pcVar8 != unaff_s2" identifier != identifier) )) (compound_statement "{\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (pcVar8 == (code *)0x0) goto LAB_000366d8;" if (parenthesized_expression "(pcVar8 == (code *)0x0)" ( (binary_expression "pcVar8 == (code *)0x0" identifier == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;)) (expression_statement "pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);" (assignment_expression "pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2)" identifier = (cast_expression "(code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2)" (parenthesized_expression "(*(code *)PTR_wmemchr_000563bc)" ( (pointer_expression "*(code *)PTR_wmemchr_000563bc" * (cast_expression "(code *)PTR_wmemchr_000563bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,0,(int)param_3 - (int)param_2 >> 2)" ( identifier , number_literal , (binary_expression "(int)param_3 - (int)param_2 >> 2" (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))))) ;) (expression_statement "unaff_s2 = param_3;" (assignment_expression "unaff_s2 = param_3" identifier = identifier) ;) (if_statement "if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }" if (parenthesized_expression "(pcVar5 != (code *)0x0)" ( (binary_expression "pcVar5 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        unaff_s2 = pcVar5;\n      }" { (expression_statement "unaff_s2 = pcVar5;" (assignment_expression "unaff_s2 = pcVar5" identifier = identifier) ;) })) (if_statement "if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }" if (parenthesized_expression "(pcVar8 == (code *)0x5b)" ( (binary_expression "pcVar8 == (code *)0x5b" identifier == (cast_expression "(code *)0x5b" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }" { (labeled_statement "LAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }" statement_identifier : (if_statement "if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }" if (parenthesized_expression "(local_564 == 0)" ( (binary_expression "local_564 == 0" identifier == number_literal) )) (compound_statement "{\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }" { (expression_statement "param_5 = (undefined *)((uint)param_5 & 0xfffffffb);" (assignment_expression "param_5 = (undefined *)((uint)param_5 & 0xfffffffb)" identifier = (cast_expression "(undefined *)((uint)param_5 & 0xfffffffb)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_5 & 0xfffffffb)" ( (binary_expression "(uint)param_5 & 0xfffffffb" (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) }))) (expression_statement "piVar7 = piVar10 + -1;" (assignment_expression "piVar7 = piVar10 + -1" identifier = (binary_expression "piVar10 + -1" identifier + number_literal)) ;) (if_statement "if (unaff_s2 <= param_2) goto LAB_000366d0;" if (parenthesized_expression "(unaff_s2 <= param_2)" ( (binary_expression "unaff_s2 <= param_2" identifier <= identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);" (assignment_expression "unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404)" identifier = (cast_expression "(int *)(PTR_LAB_00056274 + 0x6404)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00056274 + 0x6404)" ( (binary_expression "PTR_LAB_00056274 + 0x6404" identifier + number_literal) )))) ;) (expression_statement "uVar4 = param_4;" (assignment_expression "uVar4 = param_4" identifier = identifier) ;) (break_statement "break;" break ;) })) (if_statement "if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }" if (parenthesized_expression "(local_568 == 0)" ( (binary_expression "local_568 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }" { (labeled_statement "LAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" statement_identifier : (if_statement "if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" if (parenthesized_expression "(pcVar8 == (code *)0x2f)" ( (binary_expression "pcVar8 == (code *)0x2f" identifier == (cast_expression "(code *)0x2f" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }" { (if_statement "if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }" if (parenthesized_expression "(local_564 != 0)" ( (binary_expression "local_564 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (if_statement "if (param_3 <= param_2) goto LAB_000366d8;" if (parenthesized_expression "(param_3 <= param_2)" ( (binary_expression "param_3 <= param_2" identifier <= identifier) )) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;)) (if_statement "if (*(int *)param_2 == 0x2f) goto LAB_0003714c;" if (parenthesized_expression "(*(int *)param_2 == 0x2f)" ( (binary_expression "*(int *)param_2 == 0x2f" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == number_literal) )) (goto_statement "goto LAB_0003714c;" goto statement_identifier ;)) (goto_statement "goto LAB_00036f88;" goto statement_identifier ;) })) (labeled_statement "LAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);" statement_identifier : (expression_statement "param_5 = (undefined *)((uint)param_5 & 0xfffffffb);" (assignment_expression "param_5 = (undefined *)((uint)param_5 & 0xfffffffb)" identifier = (cast_expression "(undefined *)((uint)param_5 & 0xfffffffb)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_5 & 0xfffffffb)" ( (binary_expression "(uint)param_5 & 0xfffffffb" (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;)) }) (else_clause "else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" else (compound_statement "{\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" { (labeled_statement "LAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;" statement_identifier : (if_statement "if (local_564 == 0) goto LAB_00036efc;" if (parenthesized_expression "(local_564 == 0)" ( (binary_expression "local_564 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00036efc;" goto statement_identifier ;))) })))) (if_statement "if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }" if (parenthesized_expression "((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0))" ( (binary_expression "(pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)" (parenthesized_expression "(pcVar8 == (code *)&DAT_0000005c)" ( (binary_expression "pcVar8 == (code *)&DAT_0000005c" identifier == (cast_expression "(code *)&DAT_0000005c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0000005c" & identifier))) )) && (parenthesized_expression "(unaff_s1 == (undefined *)0x0)" ( (binary_expression "unaff_s1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n          pcVar8 = (code *)*piVar10;\n        }" { (expression_statement "pcVar8 = (code *)*piVar10;" (assignment_expression "pcVar8 = (code *)*piVar10" identifier = (cast_expression "(code *)*piVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) ;) })) }) (else_clause "else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }" else (compound_statement "{\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }" { (if_statement "if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;" if (parenthesized_expression "((code *)0x1f < pcVar8 + -0x21)" ( (binary_expression "(code *)0x1f < pcVar8 + -0x21" (cast_expression "(code *)0x1f" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < (binary_expression "pcVar8 + -0x21" identifier + number_literal)) )) (goto_statement "goto LAB_00036a24;" goto statement_identifier ;)) (if_statement "if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;" if (parenthesized_expression "(-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f))" ( (binary_expression "-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)" number_literal < (cast_expression "(int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)" ( (binary_expression "(0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f" (parenthesized_expression "(0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f))" ( (binary_expression "0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)" number_literal >> (parenthesized_expression "((uint)(pcVar8 + -0x21) & 0x1f)" ( (binary_expression "(uint)(pcVar8 + -0x21) & 0x1f" (call_expression "(uint)(pcVar8 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar8 + -0x21)" ( (binary_expression "pcVar8 + -0x21" identifier + number_literal) ))) & number_literal) ))) )) << number_literal) )))) )) (goto_statement "goto LAB_00036a18;" goto statement_identifier ;)) (if_statement "if (*piVar10 == 0x28) goto LAB_00036ccc;" if (parenthesized_expression "(*piVar10 == 0x28)" ( (binary_expression "*piVar10 == 0x28" (pointer_expression "*piVar10" * identifier) == number_literal) )) (goto_statement "goto LAB_00036ccc;" goto statement_identifier ;)) (if_statement "if (local_564 == 0) goto LAB_00036efc;" if (parenthesized_expression "(local_564 == 0)" ( (binary_expression "local_564 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00036efc;" goto statement_identifier ;)) }))) (if_statement "if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }" if (parenthesized_expression "(unaff_s0 == (int *)0x0)" ( (binary_expression "unaff_s0 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }" { (expression_statement "piVar7 = piVar10 + -1;" (assignment_expression "piVar7 = piVar10 + -1" identifier = (binary_expression "piVar10 + -1" identifier + number_literal)) ;) (if_statement "if (unaff_s2 <= param_2) goto LAB_000366d0;" if (parenthesized_expression "(unaff_s2 <= param_2)" ( (binary_expression "unaff_s2 <= param_2" identifier <= identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);" (assignment_expression "unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404)" identifier = (cast_expression "(int *)(PTR_LAB_00056274 + 0x6404)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00056274 + 0x6404)" ( (binary_expression "PTR_LAB_00056274 + 0x6404" identifier + number_literal) )))) ;) (expression_statement "uVar4 = param_4;" (assignment_expression "uVar4 = param_4" identifier = identifier) ;) (goto_statement "goto LAB_00036e4c;" goto statement_identifier ;) })) (expression_statement "piVar7 = piVar10 + -1;" (assignment_expression "piVar7 = piVar10 + -1" identifier = (binary_expression "piVar10 + -1" identifier + number_literal)) ;) (expression_statement "unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);" (assignment_expression "unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8)" identifier = (cast_expression "(int *)(*(code *)PTR_towlower_000564ac)(pcVar8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_towlower_000564ac)(pcVar8)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" ( (pointer_expression "*(code *)PTR_towlower_000564ac" * (cast_expression "(code *)PTR_towlower_000564ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar8)" ( identifier ))))) ;) (if_statement "if (unaff_s2 <= param_2) goto LAB_000366d0;" if (parenthesized_expression "(unaff_s2 <= param_2)" ( (binary_expression "unaff_s2 <= param_2" identifier <= identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "unaff_s1 = PTR_LAB_00056274 + 0x6404;" (assignment_expression "unaff_s1 = PTR_LAB_00056274 + 0x6404" identifier = (binary_expression "PTR_LAB_00056274 + 0x6404" identifier + number_literal)) ;) (goto_statement "goto LAB_00036a80;" goto statement_identifier ;) })) (expression_statement "pcVar8 = (code *)*piVar10;" (assignment_expression "pcVar8 = (code *)*piVar10" identifier = (cast_expression "(code *)*piVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) ;) (if_statement "if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }" if (parenthesized_expression "(pcVar8 != param_1)" ( (binary_expression "pcVar8 != param_1" identifier != identifier) )) (compound_statement "{\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }" { (expression_statement "piVar10 = piVar10 + 1;" (assignment_expression "piVar10 = piVar10 + 1" identifier = (binary_expression "piVar10 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00036b9c;" goto statement_identifier ;) })) (expression_statement "piVar9 = (int *)(*local_570)(piVar10);" (assignment_expression "piVar9 = (int *)(*local_570)(piVar10)" identifier = (cast_expression "(int *)(*local_570)(piVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*local_570)(piVar10)" (parenthesized_expression "(*local_570)" ( (pointer_expression "*local_570" * identifier) )) (argument_list "(piVar10)" ( identifier ))))) ;) (if_statement "if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }" if (parenthesized_expression "(piVar10 == piVar9)" ( (binary_expression "piVar10 == piVar9" identifier == identifier) )) (compound_statement "{\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }" { (expression_statement "pcVar8 = (code *)*piVar10;" (assignment_expression "pcVar8 = (code *)*piVar10" identifier = (cast_expression "(code *)*piVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) ;) (expression_statement "piVar10 = piVar10 + 1;" (assignment_expression "piVar10 = piVar10 + 1" identifier = (binary_expression "piVar10 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00036b9c;" goto statement_identifier ;) })) (expression_statement "pcVar8 = (code *)*piVar9;" (assignment_expression "pcVar8 = (code *)*piVar9" identifier = (cast_expression "(code *)*piVar9" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (while_statement "while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\n    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);\n    unaff_s1 = param_5;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\n    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);\n    unaff_s1 = param_5;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }" { (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (unaff_s2 <= param_2) break;" if (parenthesized_expression "(unaff_s2 <= param_2)" ( (binary_expression "unaff_s2 <= param_2" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);" (assignment_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5)" identifier = (call_expression "FUN_00036404(piVar7,param_2,param_3,uVar4,param_5)" identifier (argument_list "(piVar7,param_2,param_3,uVar4,param_5)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "unaff_s1 = param_5;" (assignment_expression "unaff_s1 = param_5" identifier = identifier) ;) (if_statement "if (iVar6 == 0) goto LAB_00036ab8;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00036ab8;" goto statement_identifier ;)) })) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" identifier = identifier) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) (while_statement "while (*(int *)param_2 != 0x2f) {\nLAB_00036f88:\n    param_2 = param_2 + 4;\n    uVar4 = 1;\n    if (param_3 <= param_2) goto LAB_000366d8;\n  }" while (parenthesized_expression "(*(int *)param_2 != 0x2f)" ( (binary_expression "*(int *)param_2 != 0x2f" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != number_literal) )) (compound_statement "{\nLAB_00036f88:\n    param_2 = param_2 + 4;\n    uVar4 = 1;\n    if (param_3 <= param_2) goto LAB_000366d8;\n  }" { (labeled_statement "LAB_00036f88:\n    param_2 = param_2 + 4;" statement_identifier : (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;)) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (if_statement "if (param_3 <= param_2) goto LAB_000366d8;" if (parenthesized_expression "(param_3 <= param_2)" ( (binary_expression "param_3 <= param_2" identifier <= identifier) )) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;)) })) (labeled_statement "LAB_0003714c:\n  iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);" statement_identifier : (expression_statement "iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);" (assignment_expression "iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5)" identifier = (call_expression "FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5)" identifier (argument_list "(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5)" ( identifier , (binary_expression "param_2 + 4" identifier + number_literal) , identifier , (binary_expression "(uint)((int)param_5 << 0x1d) >> 0x1f" (call_expression "(uint)((int)param_5 << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_5 << 0x1d)" ( (binary_expression "(int)param_5 << 0x1d" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) , identifier )))) ;)) (expression_statement "uVar4 = (uint)(iVar6 != 0);" (assignment_expression "uVar4 = (uint)(iVar6 != 0)" identifier = (call_expression "(uint)(iVar6 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )))) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) (while_statement "while( true ) {\n    param_2 = param_2 + 4;\n    param_4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);\n    if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    param_2 = param_2 + 4;\n    param_4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);\n    if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;\n  }" { (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "param_4 = 0;" (assignment_expression "param_4 = 0" identifier = number_literal) ;) (if_statement "if (unaff_s2 <= param_2) break;" if (parenthesized_expression "(unaff_s2 <= param_2)" ( (binary_expression "unaff_s2 <= param_2" identifier <= identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);" statement_identifier : (expression_statement "piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);" (assignment_expression "piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2)" identifier = (cast_expression "(int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_towlower_000564ac)(*(int *)param_2)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" ( (pointer_expression "*(code *)PTR_towlower_000564ac" * (cast_expression "(code *)PTR_towlower_000564ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)param_2)" ( (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ))))) ;)) (if_statement "if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;" if (parenthesized_expression "((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))" ( (binary_expression "(unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0)" (parenthesized_expression "(unaff_s0 == piVar9)" ( (binary_expression "unaff_s0 == piVar9" identifier == identifier) )) && (parenthesized_expression "(iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0)" ( (comma_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0" (assignment_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5)" identifier = (call_expression "FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5)" identifier (argument_list "(piVar7,param_2,param_3,param_4 & 1,param_5)" ( identifier , identifier , identifier , (binary_expression "param_4 & 1" identifier & number_literal) , identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_00036ab8;" goto statement_identifier ;)) })) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;) (labeled_statement "LAB_00036ab8:\n  uVar4 = 0;" statement_identifier : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;)) (expression_statement "piVar10 = piVar10 + -1;" (assignment_expression "piVar10 = piVar10 + -1" identifier = (binary_expression "piVar10 + -1" identifier + number_literal)) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) (while_statement "while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036e4c:\n    unaff_s1 = param_5;\n    if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036e4c:\n    unaff_s1 = param_5;\n    if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }\n  }" { (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (unaff_s2 <= param_2) break;" if (parenthesized_expression "(unaff_s2 <= param_2)" ( (binary_expression "unaff_s2 <= param_2" identifier <= identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00036e4c:\n    unaff_s1 = param_5;" statement_identifier : (expression_statement "unaff_s1 = param_5;" (assignment_expression "unaff_s1 = param_5" identifier = identifier) ;)) (if_statement "if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }" if (parenthesized_expression "((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0))" ( (binary_expression "(pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)" (parenthesized_expression "(pcVar8 == *(code **)param_2)" ( (binary_expression "pcVar8 == *(code **)param_2" identifier == (pointer_expression "*(code **)param_2" * (cast_expression "(code **)param_2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) && (parenthesized_expression "(iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)" ( (comma_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0" (assignment_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5)" identifier = (call_expression "FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5)" identifier (argument_list "(piVar7,param_2,param_3,uVar4 & 1,param_5)" ( identifier , identifier , identifier , (binary_expression "uVar4 & 1" identifier & number_literal) , identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" identifier = identifier) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000366d0:\n  uVar4 = 1;" statement_identifier : (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;)) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" identifier = identifier) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) })))
(translation_unit "int internal_fnwmatch(wchar_t *pattern,wchar_t *string,wchar_t *string_end,_Bool no_leading_period,\n                     int flags)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int iVar6;\n  byte bVar7;\n  wchar_t *unaff_s0;\n  wchar_t *pattern_00;\n  undefined *unaff_s1;\n  wchar_t *unaff_s2;\n  int *piVar8;\n  byte unaff_s5;\n  wchar_t *pwVar9;\n  wchar_t *pattern_01;\n  code *pcVar10;\n  int *unaff_s8;\n  code *local_570;\n  uint local_568;\n  uint local_564;\n  wchar_t str [257];\n  char s [257];\n  \n  puVar2 = PTR___stack_chk_guard_000564b4;\n  puVar1 = PTR_wcrtomb_00056118;\n  iVar3 = *(int *)PTR___stack_chk_guard_000564b4;\n  pwVar9 = (wchar_t *)*pattern;\n  pattern_00 = pwVar9;\n  if (pwVar9 != (wchar_t *)0x0) {\n    pattern_00 = (wchar_t *)(flags & 0x10);\n    unaff_s1 = (undefined *)(flags & 2);\n    local_564 = flags & 1;\n    local_568 = flags & 0x20;\n    piVar8 = pattern + 1;\n    do {\n      unaff_s8 = piVar8;\n      unaff_s0 = pwVar9;\n      if (pattern_00 != (wchar_t *)0x0) {\n        unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar3 = (*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return iVar3;\n      }\n      local_570 = (code *)string_end;\n      if (string_end == string) goto LAB_000366d0;\n      pwVar9 = (wchar_t *)*string;\n      if (pattern_00 != (wchar_t *)0x0) {\n        pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }\n      uVar4 = 1;\n      pattern_01 = pattern_00;\n      if (pwVar9 != unaff_s0) goto LAB_000366d8;\n      no_leading_period = false;\n      pwVar9 = (wchar_t *)*unaff_s8;\n      string = string + 1;\n      unaff_s0 = pwVar9;\n      piVar8 = unaff_s8 + 1;\n      pattern = unaff_s8;\n      unaff_s5 = no_leading_period;\n    } while (pwVar9 != (wchar_t *)0x0);\n  }\n  no_leading_period = (_Bool)unaff_s5;\n  uVar4 = 0;\n  pattern_01 = pattern_00;\n  pattern = unaff_s8;\n  if (string != string_end) {\n    if ((flags & 8U) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*string != 0x2f);\n  }\nLAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }\n  pcVar10 = (code *)PTR___stack_chk_fail_00056494;\n  (*(code *)PTR___stack_chk_fail_00056494)();\nLAB_000371b4:\n  pwVar9 = (wchar_t *)(*pcVar10)(pattern_01);\n  pattern_00 = pattern_01;\n  if (pattern_01 == pwVar9) goto LAB_00036bb0;\n  piVar8 = (int *)*pwVar9;\n  do {\n    pattern_01 = pwVar9 + 1;\nLAB_00036b9c:\n    while (piVar8 == (int *)0x3f) {\n      pattern_00 = pattern_01;\n      pcVar10 = local_570;\n      if ((int *)*pattern_01 == pattern) goto LAB_000371b4;\nLAB_00036bb0:\n      if (string_end == string) goto LAB_000366d0;\n      string = string + 1;\n      pattern_01 = pattern_00 + 1;\n      piVar8 = (int *)*pattern_00;\n    }\n    if (piVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (piVar8 == (int *)0x0) goto LAB_000366d8;\n      piVar5 = (int *)(*(code *)PTR_wmemchr_000563bc)(string,0,(int)string_end - (int)string >> 2);\n      unaff_s2 = string_end;\n      if (piVar5 != (int *)0x0) {\n        unaff_s2 = piVar5;\n      }\n      if (piVar8 == (int *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          flags = flags & 0xfffffffb;\n        }\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (piVar8 == (int *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (string_end <= string) goto LAB_000366d8;\n            if (*string == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          flags = flags & 0xfffffffb;\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((piVar8 == (int *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          piVar8 = (int *)*pattern_01;\n        }\n      }\n      else {\n        if ((undefined1 *)0x1f < (undefined1 *)((int)piVar8 + -0x21)) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f))\n        goto LAB_00036a18;\n        if (*pattern_01 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (wchar_t *)0x0) {\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        goto LAB_00036e4c;\n      }\n      pattern_00 = pattern_01 + -1;\n      unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(piVar8);\n      if (unaff_s2 <= string) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    piVar8 = (int *)*pattern_01;\n    if (piVar8 != pattern) {\n      pattern_01 = pattern_01 + 1;\n      goto LAB_00036b9c;\n    }\n    pwVar9 = (wchar_t *)(*local_570)(pattern_01);\n    if (pattern_01 == pwVar9) {\n      piVar8 = (int *)*pattern_01;\n      pattern_01 = pattern_01 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar8 = (int *)*pwVar9;\n  } while( true );\n  while( true ) {\n    string = string + 1;\n    bVar7 = false;\n    if (unaff_s2 <= string) break;\n    iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)bVar7,flags);\n    unaff_s1 = (undefined *)flags;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }\n  uVar4 = 1;\n  pattern_01 = pattern_00;\n  goto LAB_000366d8;\n  while (*string != 0x2f) {\nLAB_00036f88:\n    string = string + 1;\n    uVar4 = 1;\n    if (string_end <= string) goto LAB_000366d8;\n  }\nLAB_0003714c:\n  iVar6 = internal_fnwmatch(pattern_01,string + 1,string_end,SUB41((uint)(flags << 0x1d) >> 0x1f,0),\n                            flags);\n  uVar4 = (uint)(iVar6 != 0);\n  goto LAB_000366d8;\n  while( true ) {\n    string = string + 1;\n    no_leading_period = false;\n    if (unaff_s2 <= string) break;\nLAB_00036a80:\n    pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(*string);\n    if ((unaff_s0 == pwVar9) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(no_leading_period & 1),flags)\n       , iVar6 == 0)) goto LAB_00036ab8;\n  }\n  goto LAB_000366d0;\nLAB_00036ab8:\n  uVar4 = 0;\n  pattern_01 = pattern_01 + -1;\n  goto LAB_000366d8;\n  while( true ) {\n    string = string + 1;\n    bVar7 = 0;\n    if (unaff_s2 <= string) break;\nLAB_00036e4c:\n    unaff_s1 = (undefined *)flags;\n    if ((piVar8 == (int *)*string) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(bVar7 & 1),flags), iVar6 == 0\n       )) {\n      uVar4 = 0;\n      pattern_01 = pattern_00;\n      goto LAB_000366d8;\n    }\n  }\nLAB_000366d0:\n  uVar4 = 1;\n  pattern_01 = pattern_00;\n  goto LAB_000366d8;\n}\n\n" (function_definition "int internal_fnwmatch(wchar_t *pattern,wchar_t *string,wchar_t *string_end,_Bool no_leading_period,\n                     int flags)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int iVar6;\n  byte bVar7;\n  wchar_t *unaff_s0;\n  wchar_t *pattern_00;\n  undefined *unaff_s1;\n  wchar_t *unaff_s2;\n  int *piVar8;\n  byte unaff_s5;\n  wchar_t *pwVar9;\n  wchar_t *pattern_01;\n  code *pcVar10;\n  int *unaff_s8;\n  code *local_570;\n  uint local_568;\n  uint local_564;\n  wchar_t str [257];\n  char s [257];\n  \n  puVar2 = PTR___stack_chk_guard_000564b4;\n  puVar1 = PTR_wcrtomb_00056118;\n  iVar3 = *(int *)PTR___stack_chk_guard_000564b4;\n  pwVar9 = (wchar_t *)*pattern;\n  pattern_00 = pwVar9;\n  if (pwVar9 != (wchar_t *)0x0) {\n    pattern_00 = (wchar_t *)(flags & 0x10);\n    unaff_s1 = (undefined *)(flags & 2);\n    local_564 = flags & 1;\n    local_568 = flags & 0x20;\n    piVar8 = pattern + 1;\n    do {\n      unaff_s8 = piVar8;\n      unaff_s0 = pwVar9;\n      if (pattern_00 != (wchar_t *)0x0) {\n        unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar3 = (*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return iVar3;\n      }\n      local_570 = (code *)string_end;\n      if (string_end == string) goto LAB_000366d0;\n      pwVar9 = (wchar_t *)*string;\n      if (pattern_00 != (wchar_t *)0x0) {\n        pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }\n      uVar4 = 1;\n      pattern_01 = pattern_00;\n      if (pwVar9 != unaff_s0) goto LAB_000366d8;\n      no_leading_period = false;\n      pwVar9 = (wchar_t *)*unaff_s8;\n      string = string + 1;\n      unaff_s0 = pwVar9;\n      piVar8 = unaff_s8 + 1;\n      pattern = unaff_s8;\n      unaff_s5 = no_leading_period;\n    } while (pwVar9 != (wchar_t *)0x0);\n  }\n  no_leading_period = (_Bool)unaff_s5;\n  uVar4 = 0;\n  pattern_01 = pattern_00;\n  pattern = unaff_s8;\n  if (string != string_end) {\n    if ((flags & 8U) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*string != 0x2f);\n  }\nLAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }\n  pcVar10 = (code *)PTR___stack_chk_fail_00056494;\n  (*(code *)PTR___stack_chk_fail_00056494)();\nLAB_000371b4:\n  pwVar9 = (wchar_t *)(*pcVar10)(pattern_01);\n  pattern_00 = pattern_01;\n  if (pattern_01 == pwVar9) goto LAB_00036bb0;\n  piVar8 = (int *)*pwVar9;\n  do {\n    pattern_01 = pwVar9 + 1;\nLAB_00036b9c:\n    while (piVar8 == (int *)0x3f) {\n      pattern_00 = pattern_01;\n      pcVar10 = local_570;\n      if ((int *)*pattern_01 == pattern) goto LAB_000371b4;\nLAB_00036bb0:\n      if (string_end == string) goto LAB_000366d0;\n      string = string + 1;\n      pattern_01 = pattern_00 + 1;\n      piVar8 = (int *)*pattern_00;\n    }\n    if (piVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (piVar8 == (int *)0x0) goto LAB_000366d8;\n      piVar5 = (int *)(*(code *)PTR_wmemchr_000563bc)(string,0,(int)string_end - (int)string >> 2);\n      unaff_s2 = string_end;\n      if (piVar5 != (int *)0x0) {\n        unaff_s2 = piVar5;\n      }\n      if (piVar8 == (int *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          flags = flags & 0xfffffffb;\n        }\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (piVar8 == (int *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (string_end <= string) goto LAB_000366d8;\n            if (*string == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          flags = flags & 0xfffffffb;\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((piVar8 == (int *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          piVar8 = (int *)*pattern_01;\n        }\n      }\n      else {\n        if ((undefined1 *)0x1f < (undefined1 *)((int)piVar8 + -0x21)) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f))\n        goto LAB_00036a18;\n        if (*pattern_01 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (wchar_t *)0x0) {\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        goto LAB_00036e4c;\n      }\n      pattern_00 = pattern_01 + -1;\n      unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(piVar8);\n      if (unaff_s2 <= string) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    piVar8 = (int *)*pattern_01;\n    if (piVar8 != pattern) {\n      pattern_01 = pattern_01 + 1;\n      goto LAB_00036b9c;\n    }\n    pwVar9 = (wchar_t *)(*local_570)(pattern_01);\n    if (pattern_01 == pwVar9) {\n      piVar8 = (int *)*pattern_01;\n      pattern_01 = pattern_01 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar8 = (int *)*pwVar9;\n  } while( true );\n  while( true ) {\n    string = string + 1;\n    bVar7 = false;\n    if (unaff_s2 <= string) break;\n    iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)bVar7,flags);\n    unaff_s1 = (undefined *)flags;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }\n  uVar4 = 1;\n  pattern_01 = pattern_00;\n  goto LAB_000366d8;\n  while (*string != 0x2f) {\nLAB_00036f88:\n    string = string + 1;\n    uVar4 = 1;\n    if (string_end <= string) goto LAB_000366d8;\n  }\nLAB_0003714c:\n  iVar6 = internal_fnwmatch(pattern_01,string + 1,string_end,SUB41((uint)(flags << 0x1d) >> 0x1f,0),\n                            flags);\n  uVar4 = (uint)(iVar6 != 0);\n  goto LAB_000366d8;\n  while( true ) {\n    string = string + 1;\n    no_leading_period = false;\n    if (unaff_s2 <= string) break;\nLAB_00036a80:\n    pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(*string);\n    if ((unaff_s0 == pwVar9) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(no_leading_period & 1),flags)\n       , iVar6 == 0)) goto LAB_00036ab8;\n  }\n  goto LAB_000366d0;\nLAB_00036ab8:\n  uVar4 = 0;\n  pattern_01 = pattern_01 + -1;\n  goto LAB_000366d8;\n  while( true ) {\n    string = string + 1;\n    bVar7 = 0;\n    if (unaff_s2 <= string) break;\nLAB_00036e4c:\n    unaff_s1 = (undefined *)flags;\n    if ((piVar8 == (int *)*string) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(bVar7 & 1),flags), iVar6 == 0\n       )) {\n      uVar4 = 0;\n      pattern_01 = pattern_00;\n      goto LAB_000366d8;\n    }\n  }\nLAB_000366d0:\n  uVar4 = 1;\n  pattern_01 = pattern_00;\n  goto LAB_000366d8;\n}" primitive_type (function_declarator "internal_fnwmatch(wchar_t *pattern,wchar_t *string,wchar_t *string_end,_Bool no_leading_period,\n                     int flags)" identifier (parameter_list "(wchar_t *pattern,wchar_t *string,wchar_t *string_end,_Bool no_leading_period,\n                     int flags)" ( (parameter_declaration "wchar_t *pattern" type_identifier (pointer_declarator "*pattern" * identifier)) , (parameter_declaration "wchar_t *string" type_identifier (pointer_declarator "*string" * identifier)) , (parameter_declaration "wchar_t *string_end" type_identifier (pointer_declarator "*string_end" * identifier)) , (parameter_declaration "_Bool no_leading_period" type_identifier identifier) , (parameter_declaration "int flags" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int iVar6;\n  byte bVar7;\n  wchar_t *unaff_s0;\n  wchar_t *pattern_00;\n  undefined *unaff_s1;\n  wchar_t *unaff_s2;\n  int *piVar8;\n  byte unaff_s5;\n  wchar_t *pwVar9;\n  wchar_t *pattern_01;\n  code *pcVar10;\n  int *unaff_s8;\n  code *local_570;\n  uint local_568;\n  uint local_564;\n  wchar_t str [257];\n  char s [257];\n  \n  puVar2 = PTR___stack_chk_guard_000564b4;\n  puVar1 = PTR_wcrtomb_00056118;\n  iVar3 = *(int *)PTR___stack_chk_guard_000564b4;\n  pwVar9 = (wchar_t *)*pattern;\n  pattern_00 = pwVar9;\n  if (pwVar9 != (wchar_t *)0x0) {\n    pattern_00 = (wchar_t *)(flags & 0x10);\n    unaff_s1 = (undefined *)(flags & 2);\n    local_564 = flags & 1;\n    local_568 = flags & 0x20;\n    piVar8 = pattern + 1;\n    do {\n      unaff_s8 = piVar8;\n      unaff_s0 = pwVar9;\n      if (pattern_00 != (wchar_t *)0x0) {\n        unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar3 = (*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return iVar3;\n      }\n      local_570 = (code *)string_end;\n      if (string_end == string) goto LAB_000366d0;\n      pwVar9 = (wchar_t *)*string;\n      if (pattern_00 != (wchar_t *)0x0) {\n        pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }\n      uVar4 = 1;\n      pattern_01 = pattern_00;\n      if (pwVar9 != unaff_s0) goto LAB_000366d8;\n      no_leading_period = false;\n      pwVar9 = (wchar_t *)*unaff_s8;\n      string = string + 1;\n      unaff_s0 = pwVar9;\n      piVar8 = unaff_s8 + 1;\n      pattern = unaff_s8;\n      unaff_s5 = no_leading_period;\n    } while (pwVar9 != (wchar_t *)0x0);\n  }\n  no_leading_period = (_Bool)unaff_s5;\n  uVar4 = 0;\n  pattern_01 = pattern_00;\n  pattern = unaff_s8;\n  if (string != string_end) {\n    if ((flags & 8U) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*string != 0x2f);\n  }\nLAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }\n  pcVar10 = (code *)PTR___stack_chk_fail_00056494;\n  (*(code *)PTR___stack_chk_fail_00056494)();\nLAB_000371b4:\n  pwVar9 = (wchar_t *)(*pcVar10)(pattern_01);\n  pattern_00 = pattern_01;\n  if (pattern_01 == pwVar9) goto LAB_00036bb0;\n  piVar8 = (int *)*pwVar9;\n  do {\n    pattern_01 = pwVar9 + 1;\nLAB_00036b9c:\n    while (piVar8 == (int *)0x3f) {\n      pattern_00 = pattern_01;\n      pcVar10 = local_570;\n      if ((int *)*pattern_01 == pattern) goto LAB_000371b4;\nLAB_00036bb0:\n      if (string_end == string) goto LAB_000366d0;\n      string = string + 1;\n      pattern_01 = pattern_00 + 1;\n      piVar8 = (int *)*pattern_00;\n    }\n    if (piVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (piVar8 == (int *)0x0) goto LAB_000366d8;\n      piVar5 = (int *)(*(code *)PTR_wmemchr_000563bc)(string,0,(int)string_end - (int)string >> 2);\n      unaff_s2 = string_end;\n      if (piVar5 != (int *)0x0) {\n        unaff_s2 = piVar5;\n      }\n      if (piVar8 == (int *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          flags = flags & 0xfffffffb;\n        }\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (piVar8 == (int *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (string_end <= string) goto LAB_000366d8;\n            if (*string == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          flags = flags & 0xfffffffb;\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((piVar8 == (int *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          piVar8 = (int *)*pattern_01;\n        }\n      }\n      else {\n        if ((undefined1 *)0x1f < (undefined1 *)((int)piVar8 + -0x21)) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f))\n        goto LAB_00036a18;\n        if (*pattern_01 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (wchar_t *)0x0) {\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        goto LAB_00036e4c;\n      }\n      pattern_00 = pattern_01 + -1;\n      unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(piVar8);\n      if (unaff_s2 <= string) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    piVar8 = (int *)*pattern_01;\n    if (piVar8 != pattern) {\n      pattern_01 = pattern_01 + 1;\n      goto LAB_00036b9c;\n    }\n    pwVar9 = (wchar_t *)(*local_570)(pattern_01);\n    if (pattern_01 == pwVar9) {\n      piVar8 = (int *)*pattern_01;\n      pattern_01 = pattern_01 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar8 = (int *)*pwVar9;\n  } while( true );\n  while( true ) {\n    string = string + 1;\n    bVar7 = false;\n    if (unaff_s2 <= string) break;\n    iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)bVar7,flags);\n    unaff_s1 = (undefined *)flags;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }\n  uVar4 = 1;\n  pattern_01 = pattern_00;\n  goto LAB_000366d8;\n  while (*string != 0x2f) {\nLAB_00036f88:\n    string = string + 1;\n    uVar4 = 1;\n    if (string_end <= string) goto LAB_000366d8;\n  }\nLAB_0003714c:\n  iVar6 = internal_fnwmatch(pattern_01,string + 1,string_end,SUB41((uint)(flags << 0x1d) >> 0x1f,0),\n                            flags);\n  uVar4 = (uint)(iVar6 != 0);\n  goto LAB_000366d8;\n  while( true ) {\n    string = string + 1;\n    no_leading_period = false;\n    if (unaff_s2 <= string) break;\nLAB_00036a80:\n    pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(*string);\n    if ((unaff_s0 == pwVar9) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(no_leading_period & 1),flags)\n       , iVar6 == 0)) goto LAB_00036ab8;\n  }\n  goto LAB_000366d0;\nLAB_00036ab8:\n  uVar4 = 0;\n  pattern_01 = pattern_01 + -1;\n  goto LAB_000366d8;\n  while( true ) {\n    string = string + 1;\n    bVar7 = 0;\n    if (unaff_s2 <= string) break;\nLAB_00036e4c:\n    unaff_s1 = (undefined *)flags;\n    if ((piVar8 == (int *)*string) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(bVar7 & 1),flags), iVar6 == 0\n       )) {\n      uVar4 = 0;\n      pattern_01 = pattern_00;\n      goto LAB_000366d8;\n    }\n  }\nLAB_000366d0:\n  uVar4 = 1;\n  pattern_01 = pattern_00;\n  goto LAB_000366d8;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "wchar_t *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "wchar_t *pattern_00;" type_identifier (pointer_declarator "*pattern_00" * identifier) ;) (declaration "undefined *unaff_s1;" type_identifier (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "wchar_t *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "byte unaff_s5;" type_identifier identifier ;) (declaration "wchar_t *pwVar9;" type_identifier (pointer_declarator "*pwVar9" * identifier) ;) (declaration "wchar_t *pattern_01;" type_identifier (pointer_declarator "*pattern_01" * identifier) ;) (declaration "code *pcVar10;" type_identifier (pointer_declarator "*pcVar10" * identifier) ;) (declaration "int *unaff_s8;" primitive_type (pointer_declarator "*unaff_s8" * identifier) ;) (declaration "code *local_570;" type_identifier (pointer_declarator "*local_570" * identifier) ;) (declaration "uint local_568;" type_identifier identifier ;) (declaration "uint local_564;" type_identifier identifier ;) (declaration "wchar_t str [257];" type_identifier (array_declarator "str [257]" identifier [ number_literal ]) ;) (declaration "char s [257];" primitive_type (array_declarator "s [257]" identifier [ number_literal ]) ;) (expression_statement "puVar2 = PTR___stack_chk_guard_000564b4;" (assignment_expression "puVar2 = PTR___stack_chk_guard_000564b4" identifier = identifier) ;) (expression_statement "puVar1 = PTR_wcrtomb_00056118;" (assignment_expression "puVar1 = PTR_wcrtomb_00056118" identifier = identifier) ;) (expression_statement "iVar3 = *(int *)PTR___stack_chk_guard_000564b4;" (assignment_expression "iVar3 = *(int *)PTR___stack_chk_guard_000564b4" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000564b4" * (cast_expression "(int *)PTR___stack_chk_guard_000564b4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pwVar9 = (wchar_t *)*pattern;" (assignment_expression "pwVar9 = (wchar_t *)*pattern" identifier = (cast_expression "(wchar_t *)*pattern" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pattern" * identifier))) ;) (expression_statement "pattern_00 = pwVar9;" (assignment_expression "pattern_00 = pwVar9" identifier = identifier) ;) (if_statement "if (pwVar9 != (wchar_t *)0x0) {\n    pattern_00 = (wchar_t *)(flags & 0x10);\n    unaff_s1 = (undefined *)(flags & 2);\n    local_564 = flags & 1;\n    local_568 = flags & 0x20;\n    piVar8 = pattern + 1;\n    do {\n      unaff_s8 = piVar8;\n      unaff_s0 = pwVar9;\n      if (pattern_00 != (wchar_t *)0x0) {\n        unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar3 = (*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return iVar3;\n      }\n      local_570 = (code *)string_end;\n      if (string_end == string) goto LAB_000366d0;\n      pwVar9 = (wchar_t *)*string;\n      if (pattern_00 != (wchar_t *)0x0) {\n        pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }\n      uVar4 = 1;\n      pattern_01 = pattern_00;\n      if (pwVar9 != unaff_s0) goto LAB_000366d8;\n      no_leading_period = false;\n      pwVar9 = (wchar_t *)*unaff_s8;\n      string = string + 1;\n      unaff_s0 = pwVar9;\n      piVar8 = unaff_s8 + 1;\n      pattern = unaff_s8;\n      unaff_s5 = no_leading_period;\n    } while (pwVar9 != (wchar_t *)0x0);\n  }" if (parenthesized_expression "(pwVar9 != (wchar_t *)0x0)" ( (binary_expression "pwVar9 != (wchar_t *)0x0" identifier != (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pattern_00 = (wchar_t *)(flags & 0x10);\n    unaff_s1 = (undefined *)(flags & 2);\n    local_564 = flags & 1;\n    local_568 = flags & 0x20;\n    piVar8 = pattern + 1;\n    do {\n      unaff_s8 = piVar8;\n      unaff_s0 = pwVar9;\n      if (pattern_00 != (wchar_t *)0x0) {\n        unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar3 = (*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return iVar3;\n      }\n      local_570 = (code *)string_end;\n      if (string_end == string) goto LAB_000366d0;\n      pwVar9 = (wchar_t *)*string;\n      if (pattern_00 != (wchar_t *)0x0) {\n        pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }\n      uVar4 = 1;\n      pattern_01 = pattern_00;\n      if (pwVar9 != unaff_s0) goto LAB_000366d8;\n      no_leading_period = false;\n      pwVar9 = (wchar_t *)*unaff_s8;\n      string = string + 1;\n      unaff_s0 = pwVar9;\n      piVar8 = unaff_s8 + 1;\n      pattern = unaff_s8;\n      unaff_s5 = no_leading_period;\n    } while (pwVar9 != (wchar_t *)0x0);\n  }" { (expression_statement "pattern_00 = (wchar_t *)(flags & 0x10);" (assignment_expression "pattern_00 = (wchar_t *)(flags & 0x10)" identifier = (cast_expression "(wchar_t *)(flags & 0x10)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(flags & 0x10)" ( (binary_expression "flags & 0x10" identifier & number_literal) )))) ;) (expression_statement "unaff_s1 = (undefined *)(flags & 2);" (assignment_expression "unaff_s1 = (undefined *)(flags & 2)" identifier = (cast_expression "(undefined *)(flags & 2)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(flags & 2)" ( (binary_expression "flags & 2" identifier & number_literal) )))) ;) (expression_statement "local_564 = flags & 1;" (assignment_expression "local_564 = flags & 1" identifier = (binary_expression "flags & 1" identifier & number_literal)) ;) (expression_statement "local_568 = flags & 0x20;" (assignment_expression "local_568 = flags & 0x20" identifier = (binary_expression "flags & 0x20" identifier & number_literal)) ;) (expression_statement "piVar8 = pattern + 1;" (assignment_expression "piVar8 = pattern + 1" identifier = (binary_expression "pattern + 1" identifier + number_literal)) ;) (do_statement "do {\n      unaff_s8 = piVar8;\n      unaff_s0 = pwVar9;\n      if (pattern_00 != (wchar_t *)0x0) {\n        unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar3 = (*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return iVar3;\n      }\n      local_570 = (code *)string_end;\n      if (string_end == string) goto LAB_000366d0;\n      pwVar9 = (wchar_t *)*string;\n      if (pattern_00 != (wchar_t *)0x0) {\n        pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }\n      uVar4 = 1;\n      pattern_01 = pattern_00;\n      if (pwVar9 != unaff_s0) goto LAB_000366d8;\n      no_leading_period = false;\n      pwVar9 = (wchar_t *)*unaff_s8;\n      string = string + 1;\n      unaff_s0 = pwVar9;\n      piVar8 = unaff_s8 + 1;\n      pattern = unaff_s8;\n      unaff_s5 = no_leading_period;\n    } while (pwVar9 != (wchar_t *)0x0);" do (compound_statement "{\n      unaff_s8 = piVar8;\n      unaff_s0 = pwVar9;\n      if (pattern_00 != (wchar_t *)0x0) {\n        unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar3 = (*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return iVar3;\n      }\n      local_570 = (code *)string_end;\n      if (string_end == string) goto LAB_000366d0;\n      pwVar9 = (wchar_t *)*string;\n      if (pattern_00 != (wchar_t *)0x0) {\n        pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }\n      uVar4 = 1;\n      pattern_01 = pattern_00;\n      if (pwVar9 != unaff_s0) goto LAB_000366d8;\n      no_leading_period = false;\n      pwVar9 = (wchar_t *)*unaff_s8;\n      string = string + 1;\n      unaff_s0 = pwVar9;\n      piVar8 = unaff_s8 + 1;\n      pattern = unaff_s8;\n      unaff_s5 = no_leading_period;\n    }" { (expression_statement "unaff_s8 = piVar8;" (assignment_expression "unaff_s8 = piVar8" identifier = identifier) ;) (expression_statement "unaff_s0 = pwVar9;" (assignment_expression "unaff_s0 = pwVar9" identifier = identifier) ;) (if_statement "if (pattern_00 != (wchar_t *)0x0) {\n        unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }" if (parenthesized_expression "(pattern_00 != (wchar_t *)0x0)" ( (binary_expression "pattern_00 != (wchar_t *)0x0" identifier != (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }" { (expression_statement "unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);" (assignment_expression "unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9)" identifier = (cast_expression "(wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_towlower_000564ac)(pwVar9)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" ( (pointer_expression "*(code *)PTR_towlower_000564ac" * (cast_expression "(code *)PTR_towlower_000564ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pwVar9)" ( identifier ))))) ;) })) (if_statement "if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar3 = (*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return iVar3;\n      }" if (parenthesized_expression "((int)unaff_s0 - 0x21U < 0x3c)" ( (binary_expression "(int)unaff_s0 - 0x21U < 0x3c" (binary_expression "(int)unaff_s0 - 0x21U" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00036510 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar3 = (*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return iVar3;\n      }" { comment comment (expression_statement "iVar3 = (*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();" (assignment_expression "iVar3 = (*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))()" identifier = (call_expression "(*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))()" (parenthesized_expression "(*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))" ( (pointer_expression "*(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0))" * (cast_expression "(code *)(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0))" ( (binary_expression "&_gp + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" (pointer_expression "&_gp" & identifier) + (pointer_expression "*(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" * (cast_expression "(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" ( (binary_expression "puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0" (binary_expression "puVar1 + ((int)unaff_s0 - 0x21U) * 4" identifier + (binary_expression "((int)unaff_s0 - 0x21U) * 4" (parenthesized_expression "((int)unaff_s0 - 0x21U)" ( (binary_expression "(int)unaff_s0 - 0x21U" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar3;" return identifier ;) })) (expression_statement "local_570 = (code *)string_end;" (assignment_expression "local_570 = (code *)string_end" identifier = (cast_expression "(code *)string_end" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (string_end == string) goto LAB_000366d0;" if (parenthesized_expression "(string_end == string)" ( (binary_expression "string_end == string" identifier == identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "pwVar9 = (wchar_t *)*string;" (assignment_expression "pwVar9 = (wchar_t *)*string" identifier = (cast_expression "(wchar_t *)*string" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*string" * identifier))) ;) (if_statement "if (pattern_00 != (wchar_t *)0x0) {\n        pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }" if (parenthesized_expression "(pattern_00 != (wchar_t *)0x0)" ( (binary_expression "pattern_00 != (wchar_t *)0x0" identifier != (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);\n      }" { (expression_statement "pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9);" (assignment_expression "pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9)" identifier = (cast_expression "(wchar_t *)(*(code *)PTR_towlower_000564ac)(pwVar9)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_towlower_000564ac)(pwVar9)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" ( (pointer_expression "*(code *)PTR_towlower_000564ac" * (cast_expression "(code *)PTR_towlower_000564ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pwVar9)" ( identifier ))))) ;) })) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "pattern_01 = pattern_00;" (assignment_expression "pattern_01 = pattern_00" identifier = identifier) ;) (if_statement "if (pwVar9 != unaff_s0) goto LAB_000366d8;" if (parenthesized_expression "(pwVar9 != unaff_s0)" ( (binary_expression "pwVar9 != unaff_s0" identifier != identifier) )) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;)) (expression_statement "no_leading_period = false;" (assignment_expression "no_leading_period = false" identifier = false) ;) (expression_statement "pwVar9 = (wchar_t *)*unaff_s8;" (assignment_expression "pwVar9 = (wchar_t *)*unaff_s8" identifier = (cast_expression "(wchar_t *)*unaff_s8" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*unaff_s8" * identifier))) ;) (expression_statement "string = string + 1;" (assignment_expression "string = string + 1" identifier = (binary_expression "string + 1" identifier + number_literal)) ;) (expression_statement "unaff_s0 = pwVar9;" (assignment_expression "unaff_s0 = pwVar9" identifier = identifier) ;) (expression_statement "piVar8 = unaff_s8 + 1;" (assignment_expression "piVar8 = unaff_s8 + 1" identifier = (binary_expression "unaff_s8 + 1" identifier + number_literal)) ;) (expression_statement "pattern = unaff_s8;" (assignment_expression "pattern = unaff_s8" identifier = identifier) ;) (expression_statement "unaff_s5 = no_leading_period;" (assignment_expression "unaff_s5 = no_leading_period" identifier = identifier) ;) }) while (parenthesized_expression "(pwVar9 != (wchar_t *)0x0)" ( (binary_expression "pwVar9 != (wchar_t *)0x0" identifier != (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "no_leading_period = (_Bool)unaff_s5;" (assignment_expression "no_leading_period = (_Bool)unaff_s5" identifier = (cast_expression "(_Bool)unaff_s5" ( (type_descriptor "_Bool" type_identifier) ) identifier)) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "pattern_01 = pattern_00;" (assignment_expression "pattern_01 = pattern_00" identifier = identifier) ;) (expression_statement "pattern = unaff_s8;" (assignment_expression "pattern = unaff_s8" identifier = identifier) ;) (if_statement "if (string != string_end) {\n    if ((flags & 8U) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*string != 0x2f);\n  }" if (parenthesized_expression "(string != string_end)" ( (binary_expression "string != string_end" identifier != identifier) )) (compound_statement "{\n    if ((flags & 8U) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*string != 0x2f);\n  }" { (if_statement "if ((flags & 8U) == 0) goto LAB_000366d0;" if (parenthesized_expression "((flags & 8U) == 0)" ( (binary_expression "(flags & 8U) == 0" (parenthesized_expression "(flags & 8U)" ( (binary_expression "flags & 8U" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "uVar4 = (uint)(*string != 0x2f);" (assignment_expression "uVar4 = (uint)(*string != 0x2f)" identifier = (call_expression "(uint)(*string != 0x2f)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*string != 0x2f)" ( (binary_expression "*string != 0x2f" (pointer_expression "*string" * identifier) != number_literal) )))) ;) })) (labeled_statement "LAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }" statement_identifier : (if_statement "if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }" if (parenthesized_expression "(iVar3 == *(int *)puVar2)" ( (binary_expression "iVar3 == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar4;\n  }" { (return_statement "return uVar4;" return identifier ;) }))) (expression_statement "pcVar10 = (code *)PTR___stack_chk_fail_00056494;" (assignment_expression "pcVar10 = (code *)PTR___stack_chk_fail_00056494" identifier = (cast_expression "(code *)PTR___stack_chk_fail_00056494" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00056494)();" (call_expression "(*(code *)PTR___stack_chk_fail_00056494)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00056494)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00056494" * (cast_expression "(code *)PTR___stack_chk_fail_00056494" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_000371b4:\n  pwVar9 = (wchar_t *)(*pcVar10)(pattern_01);" statement_identifier : (expression_statement "pwVar9 = (wchar_t *)(*pcVar10)(pattern_01);" (assignment_expression "pwVar9 = (wchar_t *)(*pcVar10)(pattern_01)" identifier = (cast_expression "(wchar_t *)(*pcVar10)(pattern_01)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar10)(pattern_01)" (parenthesized_expression "(*pcVar10)" ( (pointer_expression "*pcVar10" * identifier) )) (argument_list "(pattern_01)" ( identifier ))))) ;)) (expression_statement "pattern_00 = pattern_01;" (assignment_expression "pattern_00 = pattern_01" identifier = identifier) ;) (if_statement "if (pattern_01 == pwVar9) goto LAB_00036bb0;" if (parenthesized_expression "(pattern_01 == pwVar9)" ( (binary_expression "pattern_01 == pwVar9" identifier == identifier) )) (goto_statement "goto LAB_00036bb0;" goto statement_identifier ;)) (expression_statement "piVar8 = (int *)*pwVar9;" (assignment_expression "piVar8 = (int *)*pwVar9" identifier = (cast_expression "(int *)*pwVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pwVar9" * identifier))) ;) (do_statement "do {\n    pattern_01 = pwVar9 + 1;\nLAB_00036b9c:\n    while (piVar8 == (int *)0x3f) {\n      pattern_00 = pattern_01;\n      pcVar10 = local_570;\n      if ((int *)*pattern_01 == pattern) goto LAB_000371b4;\nLAB_00036bb0:\n      if (string_end == string) goto LAB_000366d0;\n      string = string + 1;\n      pattern_01 = pattern_00 + 1;\n      piVar8 = (int *)*pattern_00;\n    }\n    if (piVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (piVar8 == (int *)0x0) goto LAB_000366d8;\n      piVar5 = (int *)(*(code *)PTR_wmemchr_000563bc)(string,0,(int)string_end - (int)string >> 2);\n      unaff_s2 = string_end;\n      if (piVar5 != (int *)0x0) {\n        unaff_s2 = piVar5;\n      }\n      if (piVar8 == (int *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          flags = flags & 0xfffffffb;\n        }\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (piVar8 == (int *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (string_end <= string) goto LAB_000366d8;\n            if (*string == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          flags = flags & 0xfffffffb;\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((piVar8 == (int *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          piVar8 = (int *)*pattern_01;\n        }\n      }\n      else {\n        if ((undefined1 *)0x1f < (undefined1 *)((int)piVar8 + -0x21)) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f))\n        goto LAB_00036a18;\n        if (*pattern_01 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (wchar_t *)0x0) {\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        goto LAB_00036e4c;\n      }\n      pattern_00 = pattern_01 + -1;\n      unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(piVar8);\n      if (unaff_s2 <= string) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    piVar8 = (int *)*pattern_01;\n    if (piVar8 != pattern) {\n      pattern_01 = pattern_01 + 1;\n      goto LAB_00036b9c;\n    }\n    pwVar9 = (wchar_t *)(*local_570)(pattern_01);\n    if (pattern_01 == pwVar9) {\n      piVar8 = (int *)*pattern_01;\n      pattern_01 = pattern_01 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar8 = (int *)*pwVar9;\n  } while( true );" do (compound_statement "{\n    pattern_01 = pwVar9 + 1;\nLAB_00036b9c:\n    while (piVar8 == (int *)0x3f) {\n      pattern_00 = pattern_01;\n      pcVar10 = local_570;\n      if ((int *)*pattern_01 == pattern) goto LAB_000371b4;\nLAB_00036bb0:\n      if (string_end == string) goto LAB_000366d0;\n      string = string + 1;\n      pattern_01 = pattern_00 + 1;\n      piVar8 = (int *)*pattern_00;\n    }\n    if (piVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (piVar8 == (int *)0x0) goto LAB_000366d8;\n      piVar5 = (int *)(*(code *)PTR_wmemchr_000563bc)(string,0,(int)string_end - (int)string >> 2);\n      unaff_s2 = string_end;\n      if (piVar5 != (int *)0x0) {\n        unaff_s2 = piVar5;\n      }\n      if (piVar8 == (int *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          flags = flags & 0xfffffffb;\n        }\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (piVar8 == (int *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (string_end <= string) goto LAB_000366d8;\n            if (*string == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          flags = flags & 0xfffffffb;\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((piVar8 == (int *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          piVar8 = (int *)*pattern_01;\n        }\n      }\n      else {\n        if ((undefined1 *)0x1f < (undefined1 *)((int)piVar8 + -0x21)) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f))\n        goto LAB_00036a18;\n        if (*pattern_01 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (wchar_t *)0x0) {\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        goto LAB_00036e4c;\n      }\n      pattern_00 = pattern_01 + -1;\n      unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(piVar8);\n      if (unaff_s2 <= string) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    piVar8 = (int *)*pattern_01;\n    if (piVar8 != pattern) {\n      pattern_01 = pattern_01 + 1;\n      goto LAB_00036b9c;\n    }\n    pwVar9 = (wchar_t *)(*local_570)(pattern_01);\n    if (pattern_01 == pwVar9) {\n      piVar8 = (int *)*pattern_01;\n      pattern_01 = pattern_01 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar8 = (int *)*pwVar9;\n  }" { (expression_statement "pattern_01 = pwVar9 + 1;" (assignment_expression "pattern_01 = pwVar9 + 1" identifier = (binary_expression "pwVar9 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_00036b9c:\n    while (piVar8 == (int *)0x3f) {\n      pattern_00 = pattern_01;\n      pcVar10 = local_570;\n      if ((int *)*pattern_01 == pattern) goto LAB_000371b4;\nLAB_00036bb0:\n      if (string_end == string) goto LAB_000366d0;\n      string = string + 1;\n      pattern_01 = pattern_00 + 1;\n      piVar8 = (int *)*pattern_00;\n    }" statement_identifier : (while_statement "while (piVar8 == (int *)0x3f) {\n      pattern_00 = pattern_01;\n      pcVar10 = local_570;\n      if ((int *)*pattern_01 == pattern) goto LAB_000371b4;\nLAB_00036bb0:\n      if (string_end == string) goto LAB_000366d0;\n      string = string + 1;\n      pattern_01 = pattern_00 + 1;\n      piVar8 = (int *)*pattern_00;\n    }" while (parenthesized_expression "(piVar8 == (int *)0x3f)" ( (binary_expression "piVar8 == (int *)0x3f" identifier == (cast_expression "(int *)0x3f" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pattern_00 = pattern_01;\n      pcVar10 = local_570;\n      if ((int *)*pattern_01 == pattern) goto LAB_000371b4;\nLAB_00036bb0:\n      if (string_end == string) goto LAB_000366d0;\n      string = string + 1;\n      pattern_01 = pattern_00 + 1;\n      piVar8 = (int *)*pattern_00;\n    }" { (expression_statement "pattern_00 = pattern_01;" (assignment_expression "pattern_00 = pattern_01" identifier = identifier) ;) (expression_statement "pcVar10 = local_570;" (assignment_expression "pcVar10 = local_570" identifier = identifier) ;) (if_statement "if ((int *)*pattern_01 == pattern) goto LAB_000371b4;" if (parenthesized_expression "((int *)*pattern_01 == pattern)" ( (binary_expression "(int *)*pattern_01 == pattern" (cast_expression "(int *)*pattern_01" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pattern_01" * identifier)) == identifier) )) (goto_statement "goto LAB_000371b4;" goto statement_identifier ;)) (labeled_statement "LAB_00036bb0:\n      if (string_end == string) goto LAB_000366d0;" statement_identifier : (if_statement "if (string_end == string) goto LAB_000366d0;" if (parenthesized_expression "(string_end == string)" ( (binary_expression "string_end == string" identifier == identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;))) (expression_statement "string = string + 1;" (assignment_expression "string = string + 1" identifier = (binary_expression "string + 1" identifier + number_literal)) ;) (expression_statement "pattern_01 = pattern_00 + 1;" (assignment_expression "pattern_01 = pattern_00 + 1" identifier = (binary_expression "pattern_00 + 1" identifier + number_literal)) ;) (expression_statement "piVar8 = (int *)*pattern_00;" (assignment_expression "piVar8 = (int *)*pattern_00" identifier = (cast_expression "(int *)*pattern_00" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pattern_00" * identifier))) ;) }))) (if_statement "if (piVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (piVar8 == (int *)0x0) goto LAB_000366d8;\n      piVar5 = (int *)(*(code *)PTR_wmemchr_000563bc)(string,0,(int)string_end - (int)string >> 2);\n      unaff_s2 = string_end;\n      if (piVar5 != (int *)0x0) {\n        unaff_s2 = piVar5;\n      }\n      if (piVar8 == (int *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          flags = flags & 0xfffffffb;\n        }\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (piVar8 == (int *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (string_end <= string) goto LAB_000366d8;\n            if (*string == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          flags = flags & 0xfffffffb;\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((piVar8 == (int *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          piVar8 = (int *)*pattern_01;\n        }\n      }\n      else {\n        if ((undefined1 *)0x1f < (undefined1 *)((int)piVar8 + -0x21)) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f))\n        goto LAB_00036a18;\n        if (*pattern_01 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (wchar_t *)0x0) {\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        goto LAB_00036e4c;\n      }\n      pattern_00 = pattern_01 + -1;\n      unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(piVar8);\n      if (unaff_s2 <= string) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }" if (parenthesized_expression "(piVar8 != unaff_s2)" ( (binary_expression "piVar8 != unaff_s2" identifier != identifier) )) (compound_statement "{\n      uVar4 = 0;\n      if (piVar8 == (int *)0x0) goto LAB_000366d8;\n      piVar5 = (int *)(*(code *)PTR_wmemchr_000563bc)(string,0,(int)string_end - (int)string >> 2);\n      unaff_s2 = string_end;\n      if (piVar5 != (int *)0x0) {\n        unaff_s2 = piVar5;\n      }\n      if (piVar8 == (int *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          flags = flags & 0xfffffffb;\n        }\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (piVar8 == (int *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (string_end <= string) goto LAB_000366d8;\n            if (*string == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          flags = flags & 0xfffffffb;\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((piVar8 == (int *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          piVar8 = (int *)*pattern_01;\n        }\n      }\n      else {\n        if ((undefined1 *)0x1f < (undefined1 *)((int)piVar8 + -0x21)) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f))\n        goto LAB_00036a18;\n        if (*pattern_01 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (wchar_t *)0x0) {\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        goto LAB_00036e4c;\n      }\n      pattern_00 = pattern_01 + -1;\n      unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(piVar8);\n      if (unaff_s2 <= string) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (piVar8 == (int *)0x0) goto LAB_000366d8;" if (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;)) (expression_statement "piVar5 = (int *)(*(code *)PTR_wmemchr_000563bc)(string,0,(int)string_end - (int)string >> 2);" (assignment_expression "piVar5 = (int *)(*(code *)PTR_wmemchr_000563bc)(string,0,(int)string_end - (int)string >> 2)" identifier = (cast_expression "(int *)(*(code *)PTR_wmemchr_000563bc)(string,0,(int)string_end - (int)string >> 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_wmemchr_000563bc)(string,0,(int)string_end - (int)string >> 2)" (parenthesized_expression "(*(code *)PTR_wmemchr_000563bc)" ( (pointer_expression "*(code *)PTR_wmemchr_000563bc" * (cast_expression "(code *)PTR_wmemchr_000563bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(string,0,(int)string_end - (int)string >> 2)" ( identifier , number_literal , (binary_expression "(int)string_end - (int)string >> 2" (binary_expression "(int)string_end - (int)string" (cast_expression "(int)string_end" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)string" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))))) ;) (expression_statement "unaff_s2 = string_end;" (assignment_expression "unaff_s2 = string_end" identifier = identifier) ;) (if_statement "if (piVar5 != (int *)0x0) {\n        unaff_s2 = piVar5;\n      }" if (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        unaff_s2 = piVar5;\n      }" { (expression_statement "unaff_s2 = piVar5;" (assignment_expression "unaff_s2 = piVar5" identifier = identifier) ;) })) (if_statement "if (piVar8 == (int *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          flags = flags & 0xfffffffb;\n        }\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        break;\n      }" if (parenthesized_expression "(piVar8 == (int *)0x5b)" ( (binary_expression "piVar8 == (int *)0x5b" identifier == (cast_expression "(int *)0x5b" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00036ccc:\n        if (local_564 == 0) {\n          flags = flags & 0xfffffffb;\n        }\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        break;\n      }" { (labeled_statement "LAB_00036ccc:\n        if (local_564 == 0) {\n          flags = flags & 0xfffffffb;\n        }" statement_identifier : (if_statement "if (local_564 == 0) {\n          flags = flags & 0xfffffffb;\n        }" if (parenthesized_expression "(local_564 == 0)" ( (binary_expression "local_564 == 0" identifier == number_literal) )) (compound_statement "{\n          flags = flags & 0xfffffffb;\n        }" { (expression_statement "flags = flags & 0xfffffffb;" (assignment_expression "flags = flags & 0xfffffffb" identifier = (binary_expression "flags & 0xfffffffb" identifier & number_literal)) ;) }))) (expression_statement "pattern_00 = pattern_01 + -1;" (assignment_expression "pattern_00 = pattern_01 + -1" identifier = (binary_expression "pattern_01 + -1" identifier + number_literal)) ;) (if_statement "if (unaff_s2 <= string) goto LAB_000366d0;" if (parenthesized_expression "(unaff_s2 <= string)" ( (binary_expression "unaff_s2 <= string" identifier <= identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);" (assignment_expression "unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404)" identifier = (cast_expression "(wchar_t *)(PTR_LAB_00056274 + 0x6404)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00056274 + 0x6404)" ( (binary_expression "PTR_LAB_00056274 + 0x6404" identifier + number_literal) )))) ;) (expression_statement "bVar7 = no_leading_period;" (assignment_expression "bVar7 = no_leading_period" identifier = identifier) ;) (break_statement "break;" break ;) })) (if_statement "if (local_568 == 0) {\nLAB_00036a18:\n        if (piVar8 == (int *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (string_end <= string) goto LAB_000366d8;\n            if (*string == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          flags = flags & 0xfffffffb;\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((piVar8 == (int *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          piVar8 = (int *)*pattern_01;\n        }\n      }\n      else {\n        if ((undefined1 *)0x1f < (undefined1 *)((int)piVar8 + -0x21)) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f))\n        goto LAB_00036a18;\n        if (*pattern_01 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }" if (parenthesized_expression "(local_568 == 0)" ( (binary_expression "local_568 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00036a18:\n        if (piVar8 == (int *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (string_end <= string) goto LAB_000366d8;\n            if (*string == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          flags = flags & 0xfffffffb;\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((piVar8 == (int *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          piVar8 = (int *)*pattern_01;\n        }\n      }" { (labeled_statement "LAB_00036a18:\n        if (piVar8 == (int *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (string_end <= string) goto LAB_000366d8;\n            if (*string == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          flags = flags & 0xfffffffb;\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" statement_identifier : (if_statement "if (piVar8 == (int *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (string_end <= string) goto LAB_000366d8;\n            if (*string == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          flags = flags & 0xfffffffb;\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" if (parenthesized_expression "(piVar8 == (int *)0x2f)" ( (binary_expression "piVar8 == (int *)0x2f" identifier == (cast_expression "(int *)0x2f" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (string_end <= string) goto LAB_000366d8;\n            if (*string == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          flags = flags & 0xfffffffb;\n        }" { (if_statement "if (local_564 != 0) {\n            uVar4 = 1;\n            if (string_end <= string) goto LAB_000366d8;\n            if (*string == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }" if (parenthesized_expression "(local_564 != 0)" ( (binary_expression "local_564 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar4 = 1;\n            if (string_end <= string) goto LAB_000366d8;\n            if (*string == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (if_statement "if (string_end <= string) goto LAB_000366d8;" if (parenthesized_expression "(string_end <= string)" ( (binary_expression "string_end <= string" identifier <= identifier) )) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;)) (if_statement "if (*string == 0x2f) goto LAB_0003714c;" if (parenthesized_expression "(*string == 0x2f)" ( (binary_expression "*string == 0x2f" (pointer_expression "*string" * identifier) == number_literal) )) (goto_statement "goto LAB_0003714c;" goto statement_identifier ;)) (goto_statement "goto LAB_00036f88;" goto statement_identifier ;) })) (labeled_statement "LAB_00036efc:\n          flags = flags & 0xfffffffb;" statement_identifier : (expression_statement "flags = flags & 0xfffffffb;" (assignment_expression "flags = flags & 0xfffffffb" identifier = (binary_expression "flags & 0xfffffffb" identifier & number_literal)) ;)) }) (else_clause "else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" else (compound_statement "{\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" { (labeled_statement "LAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;" statement_identifier : (if_statement "if (local_564 == 0) goto LAB_00036efc;" if (parenthesized_expression "(local_564 == 0)" ( (binary_expression "local_564 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00036efc;" goto statement_identifier ;))) })))) (if_statement "if ((piVar8 == (int *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          piVar8 = (int *)*pattern_01;\n        }" if (parenthesized_expression "((piVar8 == (int *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0))" ( (binary_expression "(piVar8 == (int *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)" (parenthesized_expression "(piVar8 == (int *)&DAT_0000005c)" ( (binary_expression "piVar8 == (int *)&DAT_0000005c" identifier == (cast_expression "(int *)&DAT_0000005c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0000005c" & identifier))) )) && (parenthesized_expression "(unaff_s1 == (undefined *)0x0)" ( (binary_expression "unaff_s1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n          piVar8 = (int *)*pattern_01;\n        }" { (expression_statement "piVar8 = (int *)*pattern_01;" (assignment_expression "piVar8 = (int *)*pattern_01" identifier = (cast_expression "(int *)*pattern_01" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pattern_01" * identifier))) ;) })) }) (else_clause "else {\n        if ((undefined1 *)0x1f < (undefined1 *)((int)piVar8 + -0x21)) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f))\n        goto LAB_00036a18;\n        if (*pattern_01 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }" else (compound_statement "{\n        if ((undefined1 *)0x1f < (undefined1 *)((int)piVar8 + -0x21)) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f))\n        goto LAB_00036a18;\n        if (*pattern_01 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }" { (if_statement "if ((undefined1 *)0x1f < (undefined1 *)((int)piVar8 + -0x21)) goto LAB_00036a24;" if (parenthesized_expression "((undefined1 *)0x1f < (undefined1 *)((int)piVar8 + -0x21))" ( (binary_expression "(undefined1 *)0x1f < (undefined1 *)((int)piVar8 + -0x21)" (cast_expression "(undefined1 *)0x1f" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < (cast_expression "(undefined1 *)((int)piVar8 + -0x21)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + -0x21)" ( (binary_expression "(int)piVar8 + -0x21" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )) (goto_statement "goto LAB_00036a24;" goto statement_identifier ;)) (if_statement "if (-1 < (int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f))\n        goto LAB_00036a18;" if (parenthesized_expression "(-1 < (int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f))" ( (binary_expression "-1 < (int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f)" number_literal < (cast_expression "(int)((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f)" ( (binary_expression "(0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)) << 0x1f" (parenthesized_expression "(0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f))" ( (binary_expression "0x80000401U >> ((uint)((int)piVar8 + -0x21) & 0x1f)" number_literal >> (parenthesized_expression "((uint)((int)piVar8 + -0x21) & 0x1f)" ( (binary_expression "(uint)((int)piVar8 + -0x21) & 0x1f" (call_expression "(uint)((int)piVar8 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)piVar8 + -0x21)" ( (binary_expression "(int)piVar8 + -0x21" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) & number_literal) ))) )) << number_literal) )))) )) (goto_statement "goto LAB_00036a18;" goto statement_identifier ;)) (if_statement "if (*pattern_01 == 0x28) goto LAB_00036ccc;" if (parenthesized_expression "(*pattern_01 == 0x28)" ( (binary_expression "*pattern_01 == 0x28" (pointer_expression "*pattern_01" * identifier) == number_literal) )) (goto_statement "goto LAB_00036ccc;" goto statement_identifier ;)) (if_statement "if (local_564 == 0) goto LAB_00036efc;" if (parenthesized_expression "(local_564 == 0)" ( (binary_expression "local_564 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00036efc;" goto statement_identifier ;)) }))) (if_statement "if (unaff_s0 == (wchar_t *)0x0) {\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        goto LAB_00036e4c;\n      }" if (parenthesized_expression "(unaff_s0 == (wchar_t *)0x0)" ( (binary_expression "unaff_s0 == (wchar_t *)0x0" identifier == (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pattern_00 = pattern_01 + -1;\n        if (unaff_s2 <= string) goto LAB_000366d0;\n        unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);\n        bVar7 = no_leading_period;\n        goto LAB_00036e4c;\n      }" { (expression_statement "pattern_00 = pattern_01 + -1;" (assignment_expression "pattern_00 = pattern_01 + -1" identifier = (binary_expression "pattern_01 + -1" identifier + number_literal)) ;) (if_statement "if (unaff_s2 <= string) goto LAB_000366d0;" if (parenthesized_expression "(unaff_s2 <= string)" ( (binary_expression "unaff_s2 <= string" identifier <= identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404);" (assignment_expression "unaff_s0 = (wchar_t *)(PTR_LAB_00056274 + 0x6404)" identifier = (cast_expression "(wchar_t *)(PTR_LAB_00056274 + 0x6404)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00056274 + 0x6404)" ( (binary_expression "PTR_LAB_00056274 + 0x6404" identifier + number_literal) )))) ;) (expression_statement "bVar7 = no_leading_period;" (assignment_expression "bVar7 = no_leading_period" identifier = identifier) ;) (goto_statement "goto LAB_00036e4c;" goto statement_identifier ;) })) (expression_statement "pattern_00 = pattern_01 + -1;" (assignment_expression "pattern_00 = pattern_01 + -1" identifier = (binary_expression "pattern_01 + -1" identifier + number_literal)) ;) (expression_statement "unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(piVar8);" (assignment_expression "unaff_s0 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(piVar8)" identifier = (cast_expression "(wchar_t *)(*(code *)PTR_towlower_000564ac)(piVar8)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_towlower_000564ac)(piVar8)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" ( (pointer_expression "*(code *)PTR_towlower_000564ac" * (cast_expression "(code *)PTR_towlower_000564ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar8)" ( identifier ))))) ;) (if_statement "if (unaff_s2 <= string) goto LAB_000366d0;" if (parenthesized_expression "(unaff_s2 <= string)" ( (binary_expression "unaff_s2 <= string" identifier <= identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "unaff_s1 = PTR_LAB_00056274 + 0x6404;" (assignment_expression "unaff_s1 = PTR_LAB_00056274 + 0x6404" identifier = (binary_expression "PTR_LAB_00056274 + 0x6404" identifier + number_literal)) ;) (goto_statement "goto LAB_00036a80;" goto statement_identifier ;) })) (expression_statement "piVar8 = (int *)*pattern_01;" (assignment_expression "piVar8 = (int *)*pattern_01" identifier = (cast_expression "(int *)*pattern_01" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pattern_01" * identifier))) ;) (if_statement "if (piVar8 != pattern) {\n      pattern_01 = pattern_01 + 1;\n      goto LAB_00036b9c;\n    }" if (parenthesized_expression "(piVar8 != pattern)" ( (binary_expression "piVar8 != pattern" identifier != identifier) )) (compound_statement "{\n      pattern_01 = pattern_01 + 1;\n      goto LAB_00036b9c;\n    }" { (expression_statement "pattern_01 = pattern_01 + 1;" (assignment_expression "pattern_01 = pattern_01 + 1" identifier = (binary_expression "pattern_01 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00036b9c;" goto statement_identifier ;) })) (expression_statement "pwVar9 = (wchar_t *)(*local_570)(pattern_01);" (assignment_expression "pwVar9 = (wchar_t *)(*local_570)(pattern_01)" identifier = (cast_expression "(wchar_t *)(*local_570)(pattern_01)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*local_570)(pattern_01)" (parenthesized_expression "(*local_570)" ( (pointer_expression "*local_570" * identifier) )) (argument_list "(pattern_01)" ( identifier ))))) ;) (if_statement "if (pattern_01 == pwVar9) {\n      piVar8 = (int *)*pattern_01;\n      pattern_01 = pattern_01 + 1;\n      goto LAB_00036b9c;\n    }" if (parenthesized_expression "(pattern_01 == pwVar9)" ( (binary_expression "pattern_01 == pwVar9" identifier == identifier) )) (compound_statement "{\n      piVar8 = (int *)*pattern_01;\n      pattern_01 = pattern_01 + 1;\n      goto LAB_00036b9c;\n    }" { (expression_statement "piVar8 = (int *)*pattern_01;" (assignment_expression "piVar8 = (int *)*pattern_01" identifier = (cast_expression "(int *)*pattern_01" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pattern_01" * identifier))) ;) (expression_statement "pattern_01 = pattern_01 + 1;" (assignment_expression "pattern_01 = pattern_01 + 1" identifier = (binary_expression "pattern_01 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00036b9c;" goto statement_identifier ;) })) (expression_statement "piVar8 = (int *)*pwVar9;" (assignment_expression "piVar8 = (int *)*pwVar9" identifier = (cast_expression "(int *)*pwVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pwVar9" * identifier))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (while_statement "while( true ) {\n    string = string + 1;\n    bVar7 = false;\n    if (unaff_s2 <= string) break;\n    iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)bVar7,flags);\n    unaff_s1 = (undefined *)flags;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    string = string + 1;\n    bVar7 = false;\n    if (unaff_s2 <= string) break;\n    iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)bVar7,flags);\n    unaff_s1 = (undefined *)flags;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }" { (expression_statement "string = string + 1;" (assignment_expression "string = string + 1" identifier = (binary_expression "string + 1" identifier + number_literal)) ;) (expression_statement "bVar7 = false;" (assignment_expression "bVar7 = false" identifier = false) ;) (if_statement "if (unaff_s2 <= string) break;" if (parenthesized_expression "(unaff_s2 <= string)" ( (binary_expression "unaff_s2 <= string" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)bVar7,flags);" (assignment_expression "iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)bVar7,flags)" identifier = (call_expression "internal_fnwmatch(pattern_00,string,string_end,(_Bool)bVar7,flags)" identifier (argument_list "(pattern_00,string,string_end,(_Bool)bVar7,flags)" ( identifier , identifier , identifier , (cast_expression "(_Bool)bVar7" ( (type_descriptor "_Bool" type_identifier) ) identifier) , identifier )))) ;) (expression_statement "unaff_s1 = (undefined *)flags;" (assignment_expression "unaff_s1 = (undefined *)flags" identifier = (cast_expression "(undefined *)flags" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (iVar6 == 0) goto LAB_00036ab8;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00036ab8;" goto statement_identifier ;)) })) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "pattern_01 = pattern_00;" (assignment_expression "pattern_01 = pattern_00" identifier = identifier) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) (while_statement "while (*string != 0x2f) {\nLAB_00036f88:\n    string = string + 1;\n    uVar4 = 1;\n    if (string_end <= string) goto LAB_000366d8;\n  }" while (parenthesized_expression "(*string != 0x2f)" ( (binary_expression "*string != 0x2f" (pointer_expression "*string" * identifier) != number_literal) )) (compound_statement "{\nLAB_00036f88:\n    string = string + 1;\n    uVar4 = 1;\n    if (string_end <= string) goto LAB_000366d8;\n  }" { (labeled_statement "LAB_00036f88:\n    string = string + 1;" statement_identifier : (expression_statement "string = string + 1;" (assignment_expression "string = string + 1" identifier = (binary_expression "string + 1" identifier + number_literal)) ;)) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (if_statement "if (string_end <= string) goto LAB_000366d8;" if (parenthesized_expression "(string_end <= string)" ( (binary_expression "string_end <= string" identifier <= identifier) )) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;)) })) (labeled_statement "LAB_0003714c:\n  iVar6 = internal_fnwmatch(pattern_01,string + 1,string_end,SUB41((uint)(flags << 0x1d) >> 0x1f,0),\n                            flags);" statement_identifier : (expression_statement "iVar6 = internal_fnwmatch(pattern_01,string + 1,string_end,SUB41((uint)(flags << 0x1d) >> 0x1f,0),\n                            flags);" (assignment_expression "iVar6 = internal_fnwmatch(pattern_01,string + 1,string_end,SUB41((uint)(flags << 0x1d) >> 0x1f,0),\n                            flags)" identifier = (call_expression "internal_fnwmatch(pattern_01,string + 1,string_end,SUB41((uint)(flags << 0x1d) >> 0x1f,0),\n                            flags)" identifier (argument_list "(pattern_01,string + 1,string_end,SUB41((uint)(flags << 0x1d) >> 0x1f,0),\n                            flags)" ( identifier , (binary_expression "string + 1" identifier + number_literal) , identifier , (call_expression "SUB41((uint)(flags << 0x1d) >> 0x1f,0)" identifier (argument_list "((uint)(flags << 0x1d) >> 0x1f,0)" ( (binary_expression "(uint)(flags << 0x1d) >> 0x1f" (call_expression "(uint)(flags << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(flags << 0x1d)" ( (binary_expression "flags << 0x1d" identifier << number_literal) ))) >> number_literal) , number_literal ))) , identifier )))) ;)) (expression_statement "uVar4 = (uint)(iVar6 != 0);" (assignment_expression "uVar4 = (uint)(iVar6 != 0)" identifier = (call_expression "(uint)(iVar6 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )))) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) (while_statement "while( true ) {\n    string = string + 1;\n    no_leading_period = false;\n    if (unaff_s2 <= string) break;\nLAB_00036a80:\n    pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(*string);\n    if ((unaff_s0 == pwVar9) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(no_leading_period & 1),flags)\n       , iVar6 == 0)) goto LAB_00036ab8;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    string = string + 1;\n    no_leading_period = false;\n    if (unaff_s2 <= string) break;\nLAB_00036a80:\n    pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(*string);\n    if ((unaff_s0 == pwVar9) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(no_leading_period & 1),flags)\n       , iVar6 == 0)) goto LAB_00036ab8;\n  }" { (expression_statement "string = string + 1;" (assignment_expression "string = string + 1" identifier = (binary_expression "string + 1" identifier + number_literal)) ;) (expression_statement "no_leading_period = false;" (assignment_expression "no_leading_period = false" identifier = false) ;) (if_statement "if (unaff_s2 <= string) break;" if (parenthesized_expression "(unaff_s2 <= string)" ( (binary_expression "unaff_s2 <= string" identifier <= identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00036a80:\n    pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(*string);" statement_identifier : (expression_statement "pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(*string);" (assignment_expression "pwVar9 = (wchar_t *)(*(code *)PTR_towlower_000564ac)(*string)" identifier = (cast_expression "(wchar_t *)(*(code *)PTR_towlower_000564ac)(*string)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_towlower_000564ac)(*string)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" ( (pointer_expression "*(code *)PTR_towlower_000564ac" * (cast_expression "(code *)PTR_towlower_000564ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*string)" ( (pointer_expression "*string" * identifier) ))))) ;)) (if_statement "if ((unaff_s0 == pwVar9) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(no_leading_period & 1),flags)\n       , iVar6 == 0)) goto LAB_00036ab8;" if (parenthesized_expression "((unaff_s0 == pwVar9) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(no_leading_period & 1),flags)\n       , iVar6 == 0))" ( (binary_expression "(unaff_s0 == pwVar9) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(no_leading_period & 1),flags)\n       , iVar6 == 0)" (parenthesized_expression "(unaff_s0 == pwVar9)" ( (binary_expression "unaff_s0 == pwVar9" identifier == identifier) )) && (parenthesized_expression "(iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(no_leading_period & 1),flags)\n       , iVar6 == 0)" ( (comma_expression "iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(no_leading_period & 1),flags)\n       , iVar6 == 0" (assignment_expression "iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(no_leading_period & 1),flags)" identifier = (call_expression "internal_fnwmatch(pattern_00,string,string_end,(_Bool)(no_leading_period & 1),flags)" identifier (argument_list "(pattern_00,string,string_end,(_Bool)(no_leading_period & 1),flags)" ( identifier , identifier , identifier , (call_expression "(_Bool)(no_leading_period & 1)" (parenthesized_expression "(_Bool)" ( identifier )) (argument_list "(no_leading_period & 1)" ( (binary_expression "no_leading_period & 1" identifier & number_literal) ))) , identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_00036ab8;" goto statement_identifier ;)) })) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;) (labeled_statement "LAB_00036ab8:\n  uVar4 = 0;" statement_identifier : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;)) (expression_statement "pattern_01 = pattern_01 + -1;" (assignment_expression "pattern_01 = pattern_01 + -1" identifier = (binary_expression "pattern_01 + -1" identifier + number_literal)) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) (while_statement "while( true ) {\n    string = string + 1;\n    bVar7 = 0;\n    if (unaff_s2 <= string) break;\nLAB_00036e4c:\n    unaff_s1 = (undefined *)flags;\n    if ((piVar8 == (int *)*string) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(bVar7 & 1),flags), iVar6 == 0\n       )) {\n      uVar4 = 0;\n      pattern_01 = pattern_00;\n      goto LAB_000366d8;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    string = string + 1;\n    bVar7 = 0;\n    if (unaff_s2 <= string) break;\nLAB_00036e4c:\n    unaff_s1 = (undefined *)flags;\n    if ((piVar8 == (int *)*string) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(bVar7 & 1),flags), iVar6 == 0\n       )) {\n      uVar4 = 0;\n      pattern_01 = pattern_00;\n      goto LAB_000366d8;\n    }\n  }" { (expression_statement "string = string + 1;" (assignment_expression "string = string + 1" identifier = (binary_expression "string + 1" identifier + number_literal)) ;) (expression_statement "bVar7 = 0;" (assignment_expression "bVar7 = 0" identifier = number_literal) ;) (if_statement "if (unaff_s2 <= string) break;" if (parenthesized_expression "(unaff_s2 <= string)" ( (binary_expression "unaff_s2 <= string" identifier <= identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00036e4c:\n    unaff_s1 = (undefined *)flags;" statement_identifier : (expression_statement "unaff_s1 = (undefined *)flags;" (assignment_expression "unaff_s1 = (undefined *)flags" identifier = (cast_expression "(undefined *)flags" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (if_statement "if ((piVar8 == (int *)*string) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(bVar7 & 1),flags), iVar6 == 0\n       )) {\n      uVar4 = 0;\n      pattern_01 = pattern_00;\n      goto LAB_000366d8;\n    }" if (parenthesized_expression "((piVar8 == (int *)*string) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(bVar7 & 1),flags), iVar6 == 0\n       ))" ( (binary_expression "(piVar8 == (int *)*string) &&\n       (iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(bVar7 & 1),flags), iVar6 == 0\n       )" (parenthesized_expression "(piVar8 == (int *)*string)" ( (binary_expression "piVar8 == (int *)*string" identifier == (cast_expression "(int *)*string" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*string" * identifier))) )) && (parenthesized_expression "(iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(bVar7 & 1),flags), iVar6 == 0\n       )" ( (comma_expression "iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(bVar7 & 1),flags), iVar6 == 0" (assignment_expression "iVar6 = internal_fnwmatch(pattern_00,string,string_end,(_Bool)(bVar7 & 1),flags)" identifier = (call_expression "internal_fnwmatch(pattern_00,string,string_end,(_Bool)(bVar7 & 1),flags)" identifier (argument_list "(pattern_00,string,string_end,(_Bool)(bVar7 & 1),flags)" ( identifier , identifier , identifier , (call_expression "(_Bool)(bVar7 & 1)" (parenthesized_expression "(_Bool)" ( identifier )) (argument_list "(bVar7 & 1)" ( (binary_expression "bVar7 & 1" identifier & number_literal) ))) , identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      uVar4 = 0;\n      pattern_01 = pattern_00;\n      goto LAB_000366d8;\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "pattern_01 = pattern_00;" (assignment_expression "pattern_01 = pattern_00" identifier = identifier) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000366d0:\n  uVar4 = 1;" statement_identifier : (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;)) (expression_statement "pattern_01 = pattern_00;" (assignment_expression "pattern_01 = pattern_00" identifier = identifier) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) })))
(translation_unit "uint FUN_00036404(code *param_1,code *param_2,code *param_3,uint param_4,undefined *param_5)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  code *pcVar5;\n  int iVar6;\n  int *unaff_s0;\n  int *piVar7;\n  undefined *unaff_s1;\n  code *unaff_s2;\n  code *pcVar8;\n  uint unaff_s5;\n  int *piVar9;\n  int *piVar10;\n  code *unaff_s8;\n  code *local_570;\n  uint local_568;\n  uint local_564;\n  \n  puVar2 = PTR___stack_chk_guard_000564b4;\n  puVar1 = PTR_wcrtomb_00056118;\n  iVar3 = *(int *)PTR___stack_chk_guard_000564b4;\n  piVar9 = *(int **)param_1;\n  piVar7 = piVar9;\n  if (piVar9 != (int *)0x0) {\n    piVar7 = (int *)((uint)param_5 & 0x10);\n    unaff_s1 = (undefined *)((uint)param_5 & 2);\n    local_564 = (uint)param_5 & 1;\n    local_568 = (uint)param_5 & 0x20;\n    pcVar8 = param_1 + 4;\n    do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);\n  }\n  param_4 = unaff_s5;\n  uVar4 = 0;\n  piVar10 = piVar7;\n  param_1 = unaff_s8;\n  if (param_2 != param_3) {\n    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*(int *)param_2 != 0x2f);\n  }\nLAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }\n  pcVar8 = (code *)PTR___stack_chk_fail_00056494;\n  (*(code *)PTR___stack_chk_fail_00056494)();\nLAB_000371b4:\n  piVar9 = (int *)(*pcVar8)(piVar10);\n  piVar7 = piVar10;\n  if (piVar10 == piVar9) goto LAB_00036bb0;\n  pcVar8 = (code *)*piVar9;\n  do {\n    piVar10 = piVar9 + 1;\nLAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }\n    if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    pcVar8 = (code *)*piVar10;\n    if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar9 = (int *)(*local_570)(piVar10);\n    if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    pcVar8 = (code *)*piVar9;\n  } while( true );\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\n    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);\n    unaff_s1 = param_5;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n  while (*(int *)param_2 != 0x2f) {\nLAB_00036f88:\n    param_2 = param_2 + 4;\n    uVar4 = 1;\n    if (param_3 <= param_2) goto LAB_000366d8;\n  }\nLAB_0003714c:\n  iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);\n  uVar4 = (uint)(iVar6 != 0);\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    param_4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);\n    if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;\n  }\n  goto LAB_000366d0;\nLAB_00036ab8:\n  uVar4 = 0;\n  piVar10 = piVar10 + -1;\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036e4c:\n    unaff_s1 = param_5;\n    if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }\n  }\nLAB_000366d0:\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n}\n\n" (function_definition "uint FUN_00036404(code *param_1,code *param_2,code *param_3,uint param_4,undefined *param_5)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  code *pcVar5;\n  int iVar6;\n  int *unaff_s0;\n  int *piVar7;\n  undefined *unaff_s1;\n  code *unaff_s2;\n  code *pcVar8;\n  uint unaff_s5;\n  int *piVar9;\n  int *piVar10;\n  code *unaff_s8;\n  code *local_570;\n  uint local_568;\n  uint local_564;\n  \n  puVar2 = PTR___stack_chk_guard_000564b4;\n  puVar1 = PTR_wcrtomb_00056118;\n  iVar3 = *(int *)PTR___stack_chk_guard_000564b4;\n  piVar9 = *(int **)param_1;\n  piVar7 = piVar9;\n  if (piVar9 != (int *)0x0) {\n    piVar7 = (int *)((uint)param_5 & 0x10);\n    unaff_s1 = (undefined *)((uint)param_5 & 2);\n    local_564 = (uint)param_5 & 1;\n    local_568 = (uint)param_5 & 0x20;\n    pcVar8 = param_1 + 4;\n    do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);\n  }\n  param_4 = unaff_s5;\n  uVar4 = 0;\n  piVar10 = piVar7;\n  param_1 = unaff_s8;\n  if (param_2 != param_3) {\n    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*(int *)param_2 != 0x2f);\n  }\nLAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }\n  pcVar8 = (code *)PTR___stack_chk_fail_00056494;\n  (*(code *)PTR___stack_chk_fail_00056494)();\nLAB_000371b4:\n  piVar9 = (int *)(*pcVar8)(piVar10);\n  piVar7 = piVar10;\n  if (piVar10 == piVar9) goto LAB_00036bb0;\n  pcVar8 = (code *)*piVar9;\n  do {\n    piVar10 = piVar9 + 1;\nLAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }\n    if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    pcVar8 = (code *)*piVar10;\n    if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar9 = (int *)(*local_570)(piVar10);\n    if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    pcVar8 = (code *)*piVar9;\n  } while( true );\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\n    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);\n    unaff_s1 = param_5;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n  while (*(int *)param_2 != 0x2f) {\nLAB_00036f88:\n    param_2 = param_2 + 4;\n    uVar4 = 1;\n    if (param_3 <= param_2) goto LAB_000366d8;\n  }\nLAB_0003714c:\n  iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);\n  uVar4 = (uint)(iVar6 != 0);\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    param_4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);\n    if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;\n  }\n  goto LAB_000366d0;\nLAB_00036ab8:\n  uVar4 = 0;\n  piVar10 = piVar10 + -1;\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036e4c:\n    unaff_s1 = param_5;\n    if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }\n  }\nLAB_000366d0:\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n}" type_identifier (function_declarator "FUN_00036404(code *param_1,code *param_2,code *param_3,uint param_4,undefined *param_5)" identifier (parameter_list "(code *param_1,code *param_2,code *param_3,uint param_4,undefined *param_5)" ( (parameter_declaration "code *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "code *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "code *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "undefined *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  code *pcVar5;\n  int iVar6;\n  int *unaff_s0;\n  int *piVar7;\n  undefined *unaff_s1;\n  code *unaff_s2;\n  code *pcVar8;\n  uint unaff_s5;\n  int *piVar9;\n  int *piVar10;\n  code *unaff_s8;\n  code *local_570;\n  uint local_568;\n  uint local_564;\n  \n  puVar2 = PTR___stack_chk_guard_000564b4;\n  puVar1 = PTR_wcrtomb_00056118;\n  iVar3 = *(int *)PTR___stack_chk_guard_000564b4;\n  piVar9 = *(int **)param_1;\n  piVar7 = piVar9;\n  if (piVar9 != (int *)0x0) {\n    piVar7 = (int *)((uint)param_5 & 0x10);\n    unaff_s1 = (undefined *)((uint)param_5 & 2);\n    local_564 = (uint)param_5 & 1;\n    local_568 = (uint)param_5 & 0x20;\n    pcVar8 = param_1 + 4;\n    do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);\n  }\n  param_4 = unaff_s5;\n  uVar4 = 0;\n  piVar10 = piVar7;\n  param_1 = unaff_s8;\n  if (param_2 != param_3) {\n    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*(int *)param_2 != 0x2f);\n  }\nLAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }\n  pcVar8 = (code *)PTR___stack_chk_fail_00056494;\n  (*(code *)PTR___stack_chk_fail_00056494)();\nLAB_000371b4:\n  piVar9 = (int *)(*pcVar8)(piVar10);\n  piVar7 = piVar10;\n  if (piVar10 == piVar9) goto LAB_00036bb0;\n  pcVar8 = (code *)*piVar9;\n  do {\n    piVar10 = piVar9 + 1;\nLAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }\n    if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    pcVar8 = (code *)*piVar10;\n    if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar9 = (int *)(*local_570)(piVar10);\n    if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    pcVar8 = (code *)*piVar9;\n  } while( true );\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\n    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);\n    unaff_s1 = param_5;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n  while (*(int *)param_2 != 0x2f) {\nLAB_00036f88:\n    param_2 = param_2 + 4;\n    uVar4 = 1;\n    if (param_3 <= param_2) goto LAB_000366d8;\n  }\nLAB_0003714c:\n  iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);\n  uVar4 = (uint)(iVar6 != 0);\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    param_4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);\n    if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;\n  }\n  goto LAB_000366d0;\nLAB_00036ab8:\n  uVar4 = 0;\n  piVar10 = piVar10 + -1;\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036e4c:\n    unaff_s1 = param_5;\n    if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }\n  }\nLAB_000366d0:\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *unaff_s0;" primitive_type (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined *unaff_s1;" type_identifier (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "code *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "code *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (declaration "uint unaff_s5;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "code *unaff_s8;" type_identifier (pointer_declarator "*unaff_s8" * identifier) ;) (declaration "code *local_570;" type_identifier (pointer_declarator "*local_570" * identifier) ;) (declaration "uint local_568;" type_identifier identifier ;) (declaration "uint local_564;" type_identifier identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_000564b4;" (assignment_expression "puVar2 = PTR___stack_chk_guard_000564b4" identifier = identifier) ;) (expression_statement "puVar1 = PTR_wcrtomb_00056118;" (assignment_expression "puVar1 = PTR_wcrtomb_00056118" identifier = identifier) ;) (expression_statement "iVar3 = *(int *)PTR___stack_chk_guard_000564b4;" (assignment_expression "iVar3 = *(int *)PTR___stack_chk_guard_000564b4" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000564b4" * (cast_expression "(int *)PTR___stack_chk_guard_000564b4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar9 = *(int **)param_1;" (assignment_expression "piVar9 = *(int **)param_1" identifier = (pointer_expression "*(int **)param_1" * (cast_expression "(int **)param_1" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "piVar7 = piVar9;" (assignment_expression "piVar7 = piVar9" identifier = identifier) ;) (if_statement "if (piVar9 != (int *)0x0) {\n    piVar7 = (int *)((uint)param_5 & 0x10);\n    unaff_s1 = (undefined *)((uint)param_5 & 2);\n    local_564 = (uint)param_5 & 1;\n    local_568 = (uint)param_5 & 0x20;\n    pcVar8 = param_1 + 4;\n    do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);\n  }" if (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    piVar7 = (int *)((uint)param_5 & 0x10);\n    unaff_s1 = (undefined *)((uint)param_5 & 2);\n    local_564 = (uint)param_5 & 1;\n    local_568 = (uint)param_5 & 0x20;\n    pcVar8 = param_1 + 4;\n    do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);\n  }" { (expression_statement "piVar7 = (int *)((uint)param_5 & 0x10);" (assignment_expression "piVar7 = (int *)((uint)param_5 & 0x10)" identifier = (cast_expression "(int *)((uint)param_5 & 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_5 & 0x10)" ( (binary_expression "(uint)param_5 & 0x10" (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "unaff_s1 = (undefined *)((uint)param_5 & 2);" (assignment_expression "unaff_s1 = (undefined *)((uint)param_5 & 2)" identifier = (cast_expression "(undefined *)((uint)param_5 & 2)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_5 & 2)" ( (binary_expression "(uint)param_5 & 2" (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "local_564 = (uint)param_5 & 1;" (assignment_expression "local_564 = (uint)param_5 & 1" identifier = (binary_expression "(uint)param_5 & 1" (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "local_568 = (uint)param_5 & 0x20;" (assignment_expression "local_568 = (uint)param_5 & 0x20" identifier = (binary_expression "(uint)param_5 & 0x20" (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "pcVar8 = param_1 + 4;" (assignment_expression "pcVar8 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (do_statement "do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);" do (compound_statement "{\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    }" { (expression_statement "unaff_s8 = pcVar8;" (assignment_expression "unaff_s8 = pcVar8" identifier = identifier) ;) (expression_statement "unaff_s0 = piVar9;" (assignment_expression "unaff_s0 = piVar9" identifier = identifier) ;) (if_statement "if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }" if (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }" { (expression_statement "unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);" (assignment_expression "unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9)" identifier = (cast_expression "(int *)(*(code *)PTR_towlower_000564ac)(piVar9)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_towlower_000564ac)(piVar9)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" ( (pointer_expression "*(code *)PTR_towlower_000564ac" * (cast_expression "(code *)PTR_towlower_000564ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar9)" ( identifier ))))) ;) })) (if_statement "if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }" if (parenthesized_expression "((int)unaff_s0 - 0x21U < 0x3c)" ( (binary_expression "(int)unaff_s0 - 0x21U < 0x3c" (binary_expression "(int)unaff_s0 - 0x21U" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) < number_literal) )) (compound_statement "{\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }" { (expression_statement "uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();" (assignment_expression "uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0))" * (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0))" ( (binary_expression "&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" * (cast_expression "(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" ( (binary_expression "puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0" (binary_expression "puVar1 + ((int)unaff_s0 - 0x21U) * 4" identifier + (binary_expression "((int)unaff_s0 - 0x21U) * 4" (parenthesized_expression "((int)unaff_s0 - 0x21U)" ( (binary_expression "(int)unaff_s0 - 0x21U" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar4;" return identifier ;) })) (expression_statement "local_570 = param_3;" (assignment_expression "local_570 = param_3" identifier = identifier) ;) (if_statement "if (param_3 == param_2) goto LAB_000366d0;" if (parenthesized_expression "(param_3 == param_2)" ( (binary_expression "param_3 == param_2" identifier == identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "piVar9 = *(int **)param_2;" (assignment_expression "piVar9 = *(int **)param_2" identifier = (pointer_expression "*(int **)param_2" * (cast_expression "(int **)param_2" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }" if (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }" { (expression_statement "piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);" (assignment_expression "piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9)" identifier = (cast_expression "(int *)(*(code *)PTR_towlower_000564ac)(piVar9)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_towlower_000564ac)(piVar9)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" ( (pointer_expression "*(code *)PTR_towlower_000564ac" * (cast_expression "(code *)PTR_towlower_000564ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar9)" ( identifier ))))) ;) })) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" identifier = identifier) ;) (if_statement "if (piVar9 != unaff_s0) goto LAB_000366d8;" if (parenthesized_expression "(piVar9 != unaff_s0)" ( (binary_expression "piVar9 != unaff_s0" identifier != identifier) )) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;)) (expression_statement "param_4 = 0;" (assignment_expression "param_4 = 0" identifier = number_literal) ;) (expression_statement "piVar9 = *(int **)unaff_s8;" (assignment_expression "piVar9 = *(int **)unaff_s8" identifier = (pointer_expression "*(int **)unaff_s8" * (cast_expression "(int **)unaff_s8" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "unaff_s0 = piVar9;" (assignment_expression "unaff_s0 = piVar9" identifier = identifier) ;) (expression_statement "pcVar8 = unaff_s8 + 4;" (assignment_expression "pcVar8 = unaff_s8 + 4" identifier = (binary_expression "unaff_s8 + 4" identifier + number_literal)) ;) (expression_statement "unaff_s5 = param_4;" (assignment_expression "unaff_s5 = param_4" identifier = identifier) ;) (expression_statement "param_1 = unaff_s8;" (assignment_expression "param_1 = unaff_s8" identifier = identifier) ;) }) while (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "param_4 = unaff_s5;" (assignment_expression "param_4 = unaff_s5" identifier = identifier) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" identifier = identifier) ;) (expression_statement "param_1 = unaff_s8;" (assignment_expression "param_1 = unaff_s8" identifier = identifier) ;) (if_statement "if (param_2 != param_3) {\n    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*(int *)param_2 != 0x2f);\n  }" if (parenthesized_expression "(param_2 != param_3)" ( (binary_expression "param_2 != param_3" identifier != identifier) )) (compound_statement "{\n    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*(int *)param_2 != 0x2f);\n  }" { (if_statement "if (((uint)param_5 & 8) == 0) goto LAB_000366d0;" if (parenthesized_expression "(((uint)param_5 & 8) == 0)" ( (binary_expression "((uint)param_5 & 8) == 0" (parenthesized_expression "((uint)param_5 & 8)" ( (binary_expression "(uint)param_5 & 8" (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "uVar4 = (uint)(*(int *)param_2 != 0x2f);" (assignment_expression "uVar4 = (uint)(*(int *)param_2 != 0x2f)" identifier = (call_expression "(uint)(*(int *)param_2 != 0x2f)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)param_2 != 0x2f)" ( (binary_expression "*(int *)param_2 != 0x2f" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != number_literal) )))) ;) })) (labeled_statement "LAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }" statement_identifier : (if_statement "if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }" if (parenthesized_expression "(iVar3 == *(int *)puVar2)" ( (binary_expression "iVar3 == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar4;\n  }" { (return_statement "return uVar4;" return identifier ;) }))) (expression_statement "pcVar8 = (code *)PTR___stack_chk_fail_00056494;" (assignment_expression "pcVar8 = (code *)PTR___stack_chk_fail_00056494" identifier = (cast_expression "(code *)PTR___stack_chk_fail_00056494" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00056494)();" (call_expression "(*(code *)PTR___stack_chk_fail_00056494)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00056494)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00056494" * (cast_expression "(code *)PTR___stack_chk_fail_00056494" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_000371b4:\n  piVar9 = (int *)(*pcVar8)(piVar10);" statement_identifier : (expression_statement "piVar9 = (int *)(*pcVar8)(piVar10);" (assignment_expression "piVar9 = (int *)(*pcVar8)(piVar10)" identifier = (cast_expression "(int *)(*pcVar8)(piVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar8)(piVar10)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(piVar10)" ( identifier ))))) ;)) (expression_statement "piVar7 = piVar10;" (assignment_expression "piVar7 = piVar10" identifier = identifier) ;) (if_statement "if (piVar10 == piVar9) goto LAB_00036bb0;" if (parenthesized_expression "(piVar10 == piVar9)" ( (binary_expression "piVar10 == piVar9" identifier == identifier) )) (goto_statement "goto LAB_00036bb0;" goto statement_identifier ;)) (expression_statement "pcVar8 = (code *)*piVar9;" (assignment_expression "pcVar8 = (code *)*piVar9" identifier = (cast_expression "(code *)*piVar9" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) (do_statement "do {\n    piVar10 = piVar9 + 1;\nLAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }\n    if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    pcVar8 = (code *)*piVar10;\n    if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar9 = (int *)(*local_570)(piVar10);\n    if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    pcVar8 = (code *)*piVar9;\n  } while( true );" do (compound_statement "{\n    piVar10 = piVar9 + 1;\nLAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }\n    if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    pcVar8 = (code *)*piVar10;\n    if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar9 = (int *)(*local_570)(piVar10);\n    if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    pcVar8 = (code *)*piVar9;\n  }" { (expression_statement "piVar10 = piVar9 + 1;" (assignment_expression "piVar10 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }" statement_identifier : (while_statement "while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }" while (parenthesized_expression "(pcVar8 == (code *)0x3f)" ( (binary_expression "pcVar8 == (code *)0x3f" identifier == (cast_expression "(code *)0x3f" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }" { (expression_statement "piVar7 = piVar10;" (assignment_expression "piVar7 = piVar10" identifier = identifier) ;) (expression_statement "pcVar8 = local_570;" (assignment_expression "pcVar8 = local_570" identifier = identifier) ;) (if_statement "if ((code *)*piVar10 == param_1) goto LAB_000371b4;" if (parenthesized_expression "((code *)*piVar10 == param_1)" ( (binary_expression "(code *)*piVar10 == param_1" (cast_expression "(code *)*piVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier)) == identifier) )) (goto_statement "goto LAB_000371b4;" goto statement_identifier ;)) (labeled_statement "LAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;" statement_identifier : (if_statement "if (param_3 == param_2) goto LAB_000366d0;" if (parenthesized_expression "(param_3 == param_2)" ( (binary_expression "param_3 == param_2" identifier == identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;))) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "piVar10 = piVar7 + 1;" (assignment_expression "piVar10 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) (expression_statement "pcVar8 = (code *)*piVar7;" (assignment_expression "pcVar8 = (code *)*piVar7" identifier = (cast_expression "(code *)*piVar7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) }))) (if_statement "if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }" if (parenthesized_expression "(pcVar8 != unaff_s2)" ( (binary_expression "pcVar8 != unaff_s2" identifier != identifier) )) (compound_statement "{\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (pcVar8 == (code *)0x0) goto LAB_000366d8;" if (parenthesized_expression "(pcVar8 == (code *)0x0)" ( (binary_expression "pcVar8 == (code *)0x0" identifier == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;)) (expression_statement "pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);" (assignment_expression "pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2)" identifier = (cast_expression "(code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2)" (parenthesized_expression "(*(code *)PTR_wmemchr_000563bc)" ( (pointer_expression "*(code *)PTR_wmemchr_000563bc" * (cast_expression "(code *)PTR_wmemchr_000563bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,0,(int)param_3 - (int)param_2 >> 2)" ( identifier , number_literal , (binary_expression "(int)param_3 - (int)param_2 >> 2" (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))))) ;) (expression_statement "unaff_s2 = param_3;" (assignment_expression "unaff_s2 = param_3" identifier = identifier) ;) (if_statement "if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }" if (parenthesized_expression "(pcVar5 != (code *)0x0)" ( (binary_expression "pcVar5 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        unaff_s2 = pcVar5;\n      }" { (expression_statement "unaff_s2 = pcVar5;" (assignment_expression "unaff_s2 = pcVar5" identifier = identifier) ;) })) (if_statement "if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }" if (parenthesized_expression "(pcVar8 == (code *)0x5b)" ( (binary_expression "pcVar8 == (code *)0x5b" identifier == (cast_expression "(code *)0x5b" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }" { (labeled_statement "LAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }" statement_identifier : (if_statement "if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }" if (parenthesized_expression "(local_564 == 0)" ( (binary_expression "local_564 == 0" identifier == number_literal) )) (compound_statement "{\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }" { (expression_statement "param_5 = (undefined *)((uint)param_5 & 0xfffffffb);" (assignment_expression "param_5 = (undefined *)((uint)param_5 & 0xfffffffb)" identifier = (cast_expression "(undefined *)((uint)param_5 & 0xfffffffb)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_5 & 0xfffffffb)" ( (binary_expression "(uint)param_5 & 0xfffffffb" (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) }))) (expression_statement "piVar7 = piVar10 + -1;" (assignment_expression "piVar7 = piVar10 + -1" identifier = (binary_expression "piVar10 + -1" identifier + number_literal)) ;) (if_statement "if (unaff_s2 <= param_2) goto LAB_000366d0;" if (parenthesized_expression "(unaff_s2 <= param_2)" ( (binary_expression "unaff_s2 <= param_2" identifier <= identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);" (assignment_expression "unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404)" identifier = (cast_expression "(int *)(PTR_LAB_00056274 + 0x6404)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00056274 + 0x6404)" ( (binary_expression "PTR_LAB_00056274 + 0x6404" identifier + number_literal) )))) ;) (expression_statement "uVar4 = param_4;" (assignment_expression "uVar4 = param_4" identifier = identifier) ;) (break_statement "break;" break ;) })) (if_statement "if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }" if (parenthesized_expression "(local_568 == 0)" ( (binary_expression "local_568 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }" { (labeled_statement "LAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" statement_identifier : (if_statement "if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" if (parenthesized_expression "(pcVar8 == (code *)0x2f)" ( (binary_expression "pcVar8 == (code *)0x2f" identifier == (cast_expression "(code *)0x2f" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }" { (if_statement "if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }" if (parenthesized_expression "(local_564 != 0)" ( (binary_expression "local_564 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (if_statement "if (param_3 <= param_2) goto LAB_000366d8;" if (parenthesized_expression "(param_3 <= param_2)" ( (binary_expression "param_3 <= param_2" identifier <= identifier) )) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;)) (if_statement "if (*(int *)param_2 == 0x2f) goto LAB_0003714c;" if (parenthesized_expression "(*(int *)param_2 == 0x2f)" ( (binary_expression "*(int *)param_2 == 0x2f" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == number_literal) )) (goto_statement "goto LAB_0003714c;" goto statement_identifier ;)) (goto_statement "goto LAB_00036f88;" goto statement_identifier ;) })) (labeled_statement "LAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);" statement_identifier : (expression_statement "param_5 = (undefined *)((uint)param_5 & 0xfffffffb);" (assignment_expression "param_5 = (undefined *)((uint)param_5 & 0xfffffffb)" identifier = (cast_expression "(undefined *)((uint)param_5 & 0xfffffffb)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_5 & 0xfffffffb)" ( (binary_expression "(uint)param_5 & 0xfffffffb" (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;)) }) (else_clause "else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" else (compound_statement "{\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" { (labeled_statement "LAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;" statement_identifier : (if_statement "if (local_564 == 0) goto LAB_00036efc;" if (parenthesized_expression "(local_564 == 0)" ( (binary_expression "local_564 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00036efc;" goto statement_identifier ;))) })))) (if_statement "if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }" if (parenthesized_expression "((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0))" ( (binary_expression "(pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)" (parenthesized_expression "(pcVar8 == (code *)&DAT_0000005c)" ( (binary_expression "pcVar8 == (code *)&DAT_0000005c" identifier == (cast_expression "(code *)&DAT_0000005c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0000005c" & identifier))) )) && (parenthesized_expression "(unaff_s1 == (undefined *)0x0)" ( (binary_expression "unaff_s1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n          pcVar8 = (code *)*piVar10;\n        }" { (expression_statement "pcVar8 = (code *)*piVar10;" (assignment_expression "pcVar8 = (code *)*piVar10" identifier = (cast_expression "(code *)*piVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) ;) })) }) (else_clause "else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }" else (compound_statement "{\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }" { (if_statement "if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;" if (parenthesized_expression "((code *)0x1f < pcVar8 + -0x21)" ( (binary_expression "(code *)0x1f < pcVar8 + -0x21" (cast_expression "(code *)0x1f" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < (binary_expression "pcVar8 + -0x21" identifier + number_literal)) )) (goto_statement "goto LAB_00036a24;" goto statement_identifier ;)) (if_statement "if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;" if (parenthesized_expression "(-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f))" ( (binary_expression "-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)" number_literal < (cast_expression "(int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)" ( (binary_expression "(0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f" (parenthesized_expression "(0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f))" ( (binary_expression "0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)" number_literal >> (parenthesized_expression "((uint)(pcVar8 + -0x21) & 0x1f)" ( (binary_expression "(uint)(pcVar8 + -0x21) & 0x1f" (call_expression "(uint)(pcVar8 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar8 + -0x21)" ( (binary_expression "pcVar8 + -0x21" identifier + number_literal) ))) & number_literal) ))) )) << number_literal) )))) )) (goto_statement "goto LAB_00036a18;" goto statement_identifier ;)) (if_statement "if (*piVar10 == 0x28) goto LAB_00036ccc;" if (parenthesized_expression "(*piVar10 == 0x28)" ( (binary_expression "*piVar10 == 0x28" (pointer_expression "*piVar10" * identifier) == number_literal) )) (goto_statement "goto LAB_00036ccc;" goto statement_identifier ;)) (if_statement "if (local_564 == 0) goto LAB_00036efc;" if (parenthesized_expression "(local_564 == 0)" ( (binary_expression "local_564 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00036efc;" goto statement_identifier ;)) }))) (if_statement "if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }" if (parenthesized_expression "(unaff_s0 == (int *)0x0)" ( (binary_expression "unaff_s0 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }" { (expression_statement "piVar7 = piVar10 + -1;" (assignment_expression "piVar7 = piVar10 + -1" identifier = (binary_expression "piVar10 + -1" identifier + number_literal)) ;) (if_statement "if (unaff_s2 <= param_2) goto LAB_000366d0;" if (parenthesized_expression "(unaff_s2 <= param_2)" ( (binary_expression "unaff_s2 <= param_2" identifier <= identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);" (assignment_expression "unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404)" identifier = (cast_expression "(int *)(PTR_LAB_00056274 + 0x6404)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00056274 + 0x6404)" ( (binary_expression "PTR_LAB_00056274 + 0x6404" identifier + number_literal) )))) ;) (expression_statement "uVar4 = param_4;" (assignment_expression "uVar4 = param_4" identifier = identifier) ;) (goto_statement "goto LAB_00036e4c;" goto statement_identifier ;) })) (expression_statement "piVar7 = piVar10 + -1;" (assignment_expression "piVar7 = piVar10 + -1" identifier = (binary_expression "piVar10 + -1" identifier + number_literal)) ;) (expression_statement "unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);" (assignment_expression "unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8)" identifier = (cast_expression "(int *)(*(code *)PTR_towlower_000564ac)(pcVar8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_towlower_000564ac)(pcVar8)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" ( (pointer_expression "*(code *)PTR_towlower_000564ac" * (cast_expression "(code *)PTR_towlower_000564ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar8)" ( identifier ))))) ;) (if_statement "if (unaff_s2 <= param_2) goto LAB_000366d0;" if (parenthesized_expression "(unaff_s2 <= param_2)" ( (binary_expression "unaff_s2 <= param_2" identifier <= identifier) )) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;)) (expression_statement "unaff_s1 = PTR_LAB_00056274 + 0x6404;" (assignment_expression "unaff_s1 = PTR_LAB_00056274 + 0x6404" identifier = (binary_expression "PTR_LAB_00056274 + 0x6404" identifier + number_literal)) ;) (goto_statement "goto LAB_00036a80;" goto statement_identifier ;) })) (expression_statement "pcVar8 = (code *)*piVar10;" (assignment_expression "pcVar8 = (code *)*piVar10" identifier = (cast_expression "(code *)*piVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) ;) (if_statement "if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }" if (parenthesized_expression "(pcVar8 != param_1)" ( (binary_expression "pcVar8 != param_1" identifier != identifier) )) (compound_statement "{\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }" { (expression_statement "piVar10 = piVar10 + 1;" (assignment_expression "piVar10 = piVar10 + 1" identifier = (binary_expression "piVar10 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00036b9c;" goto statement_identifier ;) })) (expression_statement "piVar9 = (int *)(*local_570)(piVar10);" (assignment_expression "piVar9 = (int *)(*local_570)(piVar10)" identifier = (cast_expression "(int *)(*local_570)(piVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*local_570)(piVar10)" (parenthesized_expression "(*local_570)" ( (pointer_expression "*local_570" * identifier) )) (argument_list "(piVar10)" ( identifier ))))) ;) (if_statement "if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }" if (parenthesized_expression "(piVar10 == piVar9)" ( (binary_expression "piVar10 == piVar9" identifier == identifier) )) (compound_statement "{\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }" { (expression_statement "pcVar8 = (code *)*piVar10;" (assignment_expression "pcVar8 = (code *)*piVar10" identifier = (cast_expression "(code *)*piVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) ;) (expression_statement "piVar10 = piVar10 + 1;" (assignment_expression "piVar10 = piVar10 + 1" identifier = (binary_expression "piVar10 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00036b9c;" goto statement_identifier ;) })) (expression_statement "pcVar8 = (code *)*piVar9;" (assignment_expression "pcVar8 = (code *)*piVar9" identifier = (cast_expression "(code *)*piVar9" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (while_statement "while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\n    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);\n    unaff_s1 = param_5;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\n    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);\n    unaff_s1 = param_5;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }" { (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (unaff_s2 <= param_2) break;" if (parenthesized_expression "(unaff_s2 <= param_2)" ( (binary_expression "unaff_s2 <= param_2" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);" (assignment_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5)" identifier = (call_expression "FUN_00036404(piVar7,param_2,param_3,uVar4,param_5)" identifier (argument_list "(piVar7,param_2,param_3,uVar4,param_5)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "unaff_s1 = param_5;" (assignment_expression "unaff_s1 = param_5" identifier = identifier) ;) (if_statement "if (iVar6 == 0) goto LAB_00036ab8;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00036ab8;" goto statement_identifier ;)) })) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" identifier = identifier) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) (while_statement "while (*(int *)param_2 != 0x2f) {\nLAB_00036f88:\n    param_2 = param_2 + 4;\n    uVar4 = 1;\n    if (param_3 <= param_2) goto LAB_000366d8;\n  }" while (parenthesized_expression "(*(int *)param_2 != 0x2f)" ( (binary_expression "*(int *)param_2 != 0x2f" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != number_literal) )) (compound_statement "{\nLAB_00036f88:\n    param_2 = param_2 + 4;\n    uVar4 = 1;\n    if (param_3 <= param_2) goto LAB_000366d8;\n  }" { (labeled_statement "LAB_00036f88:\n    param_2 = param_2 + 4;" statement_identifier : (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;)) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (if_statement "if (param_3 <= param_2) goto LAB_000366d8;" if (parenthesized_expression "(param_3 <= param_2)" ( (binary_expression "param_3 <= param_2" identifier <= identifier) )) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;)) })) (labeled_statement "LAB_0003714c:\n  iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);" statement_identifier : (expression_statement "iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);" (assignment_expression "iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5)" identifier = (call_expression "FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5)" identifier (argument_list "(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5)" ( identifier , (binary_expression "param_2 + 4" identifier + number_literal) , identifier , (binary_expression "(uint)((int)param_5 << 0x1d) >> 0x1f" (call_expression "(uint)((int)param_5 << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_5 << 0x1d)" ( (binary_expression "(int)param_5 << 0x1d" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) , identifier )))) ;)) (expression_statement "uVar4 = (uint)(iVar6 != 0);" (assignment_expression "uVar4 = (uint)(iVar6 != 0)" identifier = (call_expression "(uint)(iVar6 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )))) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) (while_statement "while( true ) {\n    param_2 = param_2 + 4;\n    param_4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);\n    if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    param_2 = param_2 + 4;\n    param_4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);\n    if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;\n  }" { (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "param_4 = 0;" (assignment_expression "param_4 = 0" identifier = number_literal) ;) (if_statement "if (unaff_s2 <= param_2) break;" if (parenthesized_expression "(unaff_s2 <= param_2)" ( (binary_expression "unaff_s2 <= param_2" identifier <= identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);" statement_identifier : (expression_statement "piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);" (assignment_expression "piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2)" identifier = (cast_expression "(int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_towlower_000564ac)(*(int *)param_2)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" ( (pointer_expression "*(code *)PTR_towlower_000564ac" * (cast_expression "(code *)PTR_towlower_000564ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)param_2)" ( (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ))))) ;)) (if_statement "if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;" if (parenthesized_expression "((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))" ( (binary_expression "(unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0)" (parenthesized_expression "(unaff_s0 == piVar9)" ( (binary_expression "unaff_s0 == piVar9" identifier == identifier) )) && (parenthesized_expression "(iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0)" ( (comma_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0" (assignment_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5)" identifier = (call_expression "FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5)" identifier (argument_list "(piVar7,param_2,param_3,param_4 & 1,param_5)" ( identifier , identifier , identifier , (binary_expression "param_4 & 1" identifier & number_literal) , identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_00036ab8;" goto statement_identifier ;)) })) (goto_statement "goto LAB_000366d0;" goto statement_identifier ;) (labeled_statement "LAB_00036ab8:\n  uVar4 = 0;" statement_identifier : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;)) (expression_statement "piVar10 = piVar10 + -1;" (assignment_expression "piVar10 = piVar10 + -1" identifier = (binary_expression "piVar10 + -1" identifier + number_literal)) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) (while_statement "while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036e4c:\n    unaff_s1 = param_5;\n    if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036e4c:\n    unaff_s1 = param_5;\n    if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }\n  }" { (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (unaff_s2 <= param_2) break;" if (parenthesized_expression "(unaff_s2 <= param_2)" ( (binary_expression "unaff_s2 <= param_2" identifier <= identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00036e4c:\n    unaff_s1 = param_5;" statement_identifier : (expression_statement "unaff_s1 = param_5;" (assignment_expression "unaff_s1 = param_5" identifier = identifier) ;)) (if_statement "if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }" if (parenthesized_expression "((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0))" ( (binary_expression "(pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)" (parenthesized_expression "(pcVar8 == *(code **)param_2)" ( (binary_expression "pcVar8 == *(code **)param_2" identifier == (pointer_expression "*(code **)param_2" * (cast_expression "(code **)param_2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) && (parenthesized_expression "(iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)" ( (comma_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0" (assignment_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5)" identifier = (call_expression "FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5)" identifier (argument_list "(piVar7,param_2,param_3,uVar4 & 1,param_5)" ( identifier , identifier , identifier , (binary_expression "uVar4 & 1" identifier & number_literal) , identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" identifier = identifier) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000366d0:\n  uVar4 = 1;" statement_identifier : (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;)) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" identifier = identifier) ;) (goto_statement "goto LAB_000366d8;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) )) * LIT)) + LIT) ))))) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) != LIT) )))) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) })))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) )) && (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) < (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT >> (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) ))) )) << LIT) )))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( BOOL )) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT , (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) ))) >> LIT) , IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) ;) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (binary_expression IDENT & LIT) , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (goto_statement goto statement_identifier ;)) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (binary_expression IDENT & LIT) , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "uint FUN_00036404(code *param_1,code *param_2,code *param_3,uint param_4,undefined *param_5)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  code *pcVar5;\n  int iVar6;\n  int *unaff_s0;\n  int *piVar7;\n  undefined *unaff_s1;\n  code *unaff_s2;\n  code *pcVar8;\n  uint unaff_s5;\n  int *piVar9;\n  int *piVar10;\n  code *unaff_s8;\n  code *local_570;\n  uint local_568;\n  uint local_564;\n  \n  puVar2 = PTR___stack_chk_guard_000564b4;\n  puVar1 = PTR_wcrtomb_00056118;\n  iVar3 = *(int *)PTR___stack_chk_guard_000564b4;\n  piVar9 = *(int **)param_1;\n  piVar7 = piVar9;\n  if (piVar9 != (int *)0x0) {\n    piVar7 = (int *)((uint)param_5 & 0x10);\n    unaff_s1 = (undefined *)((uint)param_5 & 2);\n    local_564 = (uint)param_5 & 1;\n    local_568 = (uint)param_5 & 0x20;\n    pcVar8 = param_1 + 4;\n    do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);\n  }\n  param_4 = unaff_s5;\n  uVar4 = 0;\n  piVar10 = piVar7;\n  param_1 = unaff_s8;\n  if (param_2 != param_3) {\n    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*(int *)param_2 != 0x2f);\n  }\nLAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }\n  pcVar8 = (code *)PTR___stack_chk_fail_00056494;\n  (*(code *)PTR___stack_chk_fail_00056494)();\nLAB_000371b4:\n  piVar9 = (int *)(*pcVar8)(piVar10);\n  piVar7 = piVar10;\n  if (piVar10 == piVar9) goto LAB_00036bb0;\n  pcVar8 = (code *)*piVar9;\n  do {\n    piVar10 = piVar9 + 1;\nLAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }\n    if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    pcVar8 = (code *)*piVar10;\n    if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar9 = (int *)(*local_570)(piVar10);\n    if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    pcVar8 = (code *)*piVar9;\n  } while( true );\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\n    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);\n    unaff_s1 = param_5;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n  while (*(int *)param_2 != 0x2f) {\nLAB_00036f88:\n    param_2 = param_2 + 4;\n    uVar4 = 1;\n    if (param_3 <= param_2) goto LAB_000366d8;\n  }\nLAB_0003714c:\n  iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);\n  uVar4 = (uint)(iVar6 != 0);\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    param_4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);\n    if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;\n  }\n  goto LAB_000366d0;\nLAB_00036ab8:\n  uVar4 = 0;\n  piVar10 = piVar10 + -1;\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036e4c:\n    unaff_s1 = param_5;\n    if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }\n  }\nLAB_000366d0:\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n}" (type_identifier "uint") (function_declarator "FUN_00036404(code *param_1,code *param_2,code *param_3,uint param_4,undefined *param_5)" (identifier "FUN_00036404") (parameter_list "(code *param_1,code *param_2,code *param_3,uint param_4,undefined *param_5)" (( "(") (parameter_declaration "code *param_1" (type_identifier "code") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "code *param_2" (type_identifier "code") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "code *param_3" (type_identifier "code") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "undefined *param_5" (type_identifier "undefined") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  code *pcVar5;\n  int iVar6;\n  int *unaff_s0;\n  int *piVar7;\n  undefined *unaff_s1;\n  code *unaff_s2;\n  code *pcVar8;\n  uint unaff_s5;\n  int *piVar9;\n  int *piVar10;\n  code *unaff_s8;\n  code *local_570;\n  uint local_568;\n  uint local_564;\n  \n  puVar2 = PTR___stack_chk_guard_000564b4;\n  puVar1 = PTR_wcrtomb_00056118;\n  iVar3 = *(int *)PTR___stack_chk_guard_000564b4;\n  piVar9 = *(int **)param_1;\n  piVar7 = piVar9;\n  if (piVar9 != (int *)0x0) {\n    piVar7 = (int *)((uint)param_5 & 0x10);\n    unaff_s1 = (undefined *)((uint)param_5 & 2);\n    local_564 = (uint)param_5 & 1;\n    local_568 = (uint)param_5 & 0x20;\n    pcVar8 = param_1 + 4;\n    do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);\n  }\n  param_4 = unaff_s5;\n  uVar4 = 0;\n  piVar10 = piVar7;\n  param_1 = unaff_s8;\n  if (param_2 != param_3) {\n    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*(int *)param_2 != 0x2f);\n  }\nLAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }\n  pcVar8 = (code *)PTR___stack_chk_fail_00056494;\n  (*(code *)PTR___stack_chk_fail_00056494)();\nLAB_000371b4:\n  piVar9 = (int *)(*pcVar8)(piVar10);\n  piVar7 = piVar10;\n  if (piVar10 == piVar9) goto LAB_00036bb0;\n  pcVar8 = (code *)*piVar9;\n  do {\n    piVar10 = piVar9 + 1;\nLAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }\n    if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    pcVar8 = (code *)*piVar10;\n    if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar9 = (int *)(*local_570)(piVar10);\n    if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    pcVar8 = (code *)*piVar9;\n  } while( true );\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\n    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);\n    unaff_s1 = param_5;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n  while (*(int *)param_2 != 0x2f) {\nLAB_00036f88:\n    param_2 = param_2 + 4;\n    uVar4 = 1;\n    if (param_3 <= param_2) goto LAB_000366d8;\n  }\nLAB_0003714c:\n  iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);\n  uVar4 = (uint)(iVar6 != 0);\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    param_4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);\n    if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;\n  }\n  goto LAB_000366d0;\nLAB_00036ab8:\n  uVar4 = 0;\n  piVar10 = piVar10 + -1;\n  goto LAB_000366d8;\n  while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036e4c:\n    unaff_s1 = param_5;\n    if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }\n  }\nLAB_000366d0:\n  uVar4 = 1;\n  piVar10 = piVar7;\n  goto LAB_000366d8;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "code *pcVar5;" (type_identifier "code") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int *unaff_s0;" (primitive_type "int") (pointer_declarator "*unaff_s0" (* "*") (identifier "unaff_s0")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "undefined *unaff_s1;" (type_identifier "undefined") (pointer_declarator "*unaff_s1" (* "*") (identifier "unaff_s1")) (; ";")) (declaration "code *unaff_s2;" (type_identifier "code") (pointer_declarator "*unaff_s2" (* "*") (identifier "unaff_s2")) (; ";")) (declaration "code *pcVar8;" (type_identifier "code") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "uint unaff_s5;" (type_identifier "uint") (identifier "unaff_s5") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "code *unaff_s8;" (type_identifier "code") (pointer_declarator "*unaff_s8" (* "*") (identifier "unaff_s8")) (; ";")) (declaration "code *local_570;" (type_identifier "code") (pointer_declarator "*local_570" (* "*") (identifier "local_570")) (; ";")) (declaration "uint local_568;" (type_identifier "uint") (identifier "local_568") (; ";")) (declaration "uint local_564;" (type_identifier "uint") (identifier "local_564") (; ";")) (expression_statement "puVar2 = PTR___stack_chk_guard_000564b4;" (assignment_expression "puVar2 = PTR___stack_chk_guard_000564b4" (identifier "puVar2") (= "=") (identifier "PTR___stack_chk_guard_000564b4")) (; ";")) (expression_statement "puVar1 = PTR_wcrtomb_00056118;" (assignment_expression "puVar1 = PTR_wcrtomb_00056118" (identifier "puVar1") (= "=") (identifier "PTR_wcrtomb_00056118")) (; ";")) (expression_statement "iVar3 = *(int *)PTR___stack_chk_guard_000564b4;" (assignment_expression "iVar3 = *(int *)PTR___stack_chk_guard_000564b4" (identifier "iVar3") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000564b4" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000564b4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000564b4")))) (; ";")) (expression_statement "piVar9 = *(int **)param_1;" (assignment_expression "piVar9 = *(int **)param_1" (identifier "piVar9") (= "=") (pointer_expression "*(int **)param_1" (* "*") (cast_expression "(int **)param_1" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_1")))) (; ";")) (expression_statement "piVar7 = piVar9;" (assignment_expression "piVar7 = piVar9" (identifier "piVar7") (= "=") (identifier "piVar9")) (; ";")) (if_statement "if (piVar9 != (int *)0x0) {\n    piVar7 = (int *)((uint)param_5 & 0x10);\n    unaff_s1 = (undefined *)((uint)param_5 & 2);\n    local_564 = (uint)param_5 & 1;\n    local_568 = (uint)param_5 & 0x20;\n    pcVar8 = param_1 + 4;\n    do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);\n  }" (if "if") (parenthesized_expression "(piVar9 != (int *)0x0)" (( "(") (binary_expression "piVar9 != (int *)0x0" (identifier "piVar9") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    piVar7 = (int *)((uint)param_5 & 0x10);\n    unaff_s1 = (undefined *)((uint)param_5 & 2);\n    local_564 = (uint)param_5 & 1;\n    local_568 = (uint)param_5 & 0x20;\n    pcVar8 = param_1 + 4;\n    do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);\n  }" ({ "{") (expression_statement "piVar7 = (int *)((uint)param_5 & 0x10);" (assignment_expression "piVar7 = (int *)((uint)param_5 & 0x10)" (identifier "piVar7") (= "=") (cast_expression "(int *)((uint)param_5 & 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)param_5 & 0x10)" (( "(") (binary_expression "(uint)param_5 & 0x10" (cast_expression "(uint)param_5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_5")) (& "&") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "unaff_s1 = (undefined *)((uint)param_5 & 2);" (assignment_expression "unaff_s1 = (undefined *)((uint)param_5 & 2)" (identifier "unaff_s1") (= "=") (cast_expression "(undefined *)((uint)param_5 & 2)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)param_5 & 2)" (( "(") (binary_expression "(uint)param_5 & 2" (cast_expression "(uint)param_5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_5")) (& "&") (number_literal "2")) () ")")))) (; ";")) (expression_statement "local_564 = (uint)param_5 & 1;" (assignment_expression "local_564 = (uint)param_5 & 1" (identifier "local_564") (= "=") (binary_expression "(uint)param_5 & 1" (cast_expression "(uint)param_5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_5")) (& "&") (number_literal "1"))) (; ";")) (expression_statement "local_568 = (uint)param_5 & 0x20;" (assignment_expression "local_568 = (uint)param_5 & 0x20" (identifier "local_568") (= "=") (binary_expression "(uint)param_5 & 0x20" (cast_expression "(uint)param_5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_5")) (& "&") (number_literal "0x20"))) (; ";")) (expression_statement "pcVar8 = param_1 + 4;" (assignment_expression "pcVar8 = param_1 + 4" (identifier "pcVar8") (= "=") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4"))) (; ";")) (do_statement "do {\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    } while (piVar9 != (int *)0x0);" (do "do") (compound_statement "{\n      unaff_s8 = pcVar8;\n      unaff_s0 = piVar9;\n      if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }\n      local_570 = param_3;\n      if (param_3 == param_2) goto LAB_000366d0;\n      piVar9 = *(int **)param_2;\n      if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }\n      uVar4 = 1;\n      piVar10 = piVar7;\n      if (piVar9 != unaff_s0) goto LAB_000366d8;\n      param_4 = 0;\n      piVar9 = *(int **)unaff_s8;\n      param_2 = param_2 + 4;\n      unaff_s0 = piVar9;\n      pcVar8 = unaff_s8 + 4;\n      unaff_s5 = param_4;\n      param_1 = unaff_s8;\n    }" ({ "{") (expression_statement "unaff_s8 = pcVar8;" (assignment_expression "unaff_s8 = pcVar8" (identifier "unaff_s8") (= "=") (identifier "pcVar8")) (; ";")) (expression_statement "unaff_s0 = piVar9;" (assignment_expression "unaff_s0 = piVar9" (identifier "unaff_s0") (= "=") (identifier "piVar9")) (; ";")) (if_statement "if (piVar7 != (int *)0x0) {\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }" (if "if") (parenthesized_expression "(piVar7 != (int *)0x0)" (( "(") (binary_expression "piVar7 != (int *)0x0" (identifier "piVar7") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }" ({ "{") (expression_statement "unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);" (assignment_expression "unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9)" (identifier "unaff_s0") (= "=") (cast_expression "(int *)(*(code *)PTR_towlower_000564ac)(piVar9)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_towlower_000564ac)(piVar9)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" (( "(") (pointer_expression "*(code *)PTR_towlower_000564ac" (* "*") (cast_expression "(code *)PTR_towlower_000564ac" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_towlower_000564ac"))) () ")")) (argument_list "(piVar9)" (( "(") (identifier "piVar9") () ")"))))) (; ";")) (} "}"))) (if_statement "if ((int)unaff_s0 - 0x21U < 0x3c) {\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }" (if "if") (parenthesized_expression "((int)unaff_s0 - 0x21U < 0x3c)" (( "(") (binary_expression "(int)unaff_s0 - 0x21U < 0x3c" (binary_expression "(int)unaff_s0 - 0x21U" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (- "-") (number_literal "0x21U")) (< "<") (number_literal "0x3c")) () ")")) (compound_statement "{\n                    \n                    \n        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();\n        return uVar4;\n      }" ({ "{") (expression_statement "uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();" (assignment_expression "uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))()" (identifier "uVar4") (= "=") (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0))" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0))" (( "(") (binary_expression "&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" (* "*") (cast_expression "(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)" (( "(") (binary_expression "puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0" (binary_expression "puVar1 + ((int)unaff_s0 - 0x21U) * 4" (identifier "puVar1") (+ "+") (binary_expression "((int)unaff_s0 - 0x21U) * 4" (parenthesized_expression "((int)unaff_s0 - 0x21U)" (( "(") (binary_expression "(int)unaff_s0 - 0x21U" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (- "-") (number_literal "0x21U")) () ")")) (* "*") (number_literal "4"))) (+ "+") (number_literal "0x4fe0")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (expression_statement "local_570 = param_3;" (assignment_expression "local_570 = param_3" (identifier "local_570") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (param_3 == param_2) goto LAB_000366d0;" (if "if") (parenthesized_expression "(param_3 == param_2)" (( "(") (binary_expression "param_3 == param_2" (identifier "param_3") (== "==") (identifier "param_2")) () ")")) (goto_statement "goto LAB_000366d0;" (goto "goto") (statement_identifier "LAB_000366d0") (; ";"))) (expression_statement "piVar9 = *(int **)param_2;" (assignment_expression "piVar9 = *(int **)param_2" (identifier "piVar9") (= "=") (pointer_expression "*(int **)param_2" (* "*") (cast_expression "(int **)param_2" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_2")))) (; ";")) (if_statement "if (piVar7 != (int *)0x0) {\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }" (if "if") (parenthesized_expression "(piVar7 != (int *)0x0)" (( "(") (binary_expression "piVar7 != (int *)0x0" (identifier "piVar7") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);\n      }" ({ "{") (expression_statement "piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);" (assignment_expression "piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9)" (identifier "piVar9") (= "=") (cast_expression "(int *)(*(code *)PTR_towlower_000564ac)(piVar9)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_towlower_000564ac)(piVar9)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" (( "(") (pointer_expression "*(code *)PTR_towlower_000564ac" (* "*") (cast_expression "(code *)PTR_towlower_000564ac" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_towlower_000564ac"))) () ")")) (argument_list "(piVar9)" (( "(") (identifier "piVar9") () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" (identifier "piVar10") (= "=") (identifier "piVar7")) (; ";")) (if_statement "if (piVar9 != unaff_s0) goto LAB_000366d8;" (if "if") (parenthesized_expression "(piVar9 != unaff_s0)" (( "(") (binary_expression "piVar9 != unaff_s0" (identifier "piVar9") (!= "!=") (identifier "unaff_s0")) () ")")) (goto_statement "goto LAB_000366d8;" (goto "goto") (statement_identifier "LAB_000366d8") (; ";"))) (expression_statement "param_4 = 0;" (assignment_expression "param_4 = 0" (identifier "param_4") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar9 = *(int **)unaff_s8;" (assignment_expression "piVar9 = *(int **)unaff_s8" (identifier "piVar9") (= "=") (pointer_expression "*(int **)unaff_s8" (* "*") (cast_expression "(int **)unaff_s8" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "unaff_s8")))) (; ";")) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" (identifier "param_2") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "unaff_s0 = piVar9;" (assignment_expression "unaff_s0 = piVar9" (identifier "unaff_s0") (= "=") (identifier "piVar9")) (; ";")) (expression_statement "pcVar8 = unaff_s8 + 4;" (assignment_expression "pcVar8 = unaff_s8 + 4" (identifier "pcVar8") (= "=") (binary_expression "unaff_s8 + 4" (identifier "unaff_s8") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "unaff_s5 = param_4;" (assignment_expression "unaff_s5 = param_4" (identifier "unaff_s5") (= "=") (identifier "param_4")) (; ";")) (expression_statement "param_1 = unaff_s8;" (assignment_expression "param_1 = unaff_s8" (identifier "param_1") (= "=") (identifier "unaff_s8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar9 != (int *)0x0)" (( "(") (binary_expression "piVar9 != (int *)0x0" (identifier "piVar9") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}"))) (expression_statement "param_4 = unaff_s5;" (assignment_expression "param_4 = unaff_s5" (identifier "param_4") (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" (identifier "piVar10") (= "=") (identifier "piVar7")) (; ";")) (expression_statement "param_1 = unaff_s8;" (assignment_expression "param_1 = unaff_s8" (identifier "param_1") (= "=") (identifier "unaff_s8")) (; ";")) (if_statement "if (param_2 != param_3) {\n    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*(int *)param_2 != 0x2f);\n  }" (if "if") (parenthesized_expression "(param_2 != param_3)" (( "(") (binary_expression "param_2 != param_3" (identifier "param_2") (!= "!=") (identifier "param_3")) () ")")) (compound_statement "{\n    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;\n    uVar4 = (uint)(*(int *)param_2 != 0x2f);\n  }" ({ "{") (if_statement "if (((uint)param_5 & 8) == 0) goto LAB_000366d0;" (if "if") (parenthesized_expression "(((uint)param_5 & 8) == 0)" (( "(") (binary_expression "((uint)param_5 & 8) == 0" (parenthesized_expression "((uint)param_5 & 8)" (( "(") (binary_expression "(uint)param_5 & 8" (cast_expression "(uint)param_5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_5")) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000366d0;" (goto "goto") (statement_identifier "LAB_000366d0") (; ";"))) (expression_statement "uVar4 = (uint)(*(int *)param_2 != 0x2f);" (assignment_expression "uVar4 = (uint)(*(int *)param_2 != 0x2f)" (identifier "uVar4") (= "=") (call_expression "(uint)(*(int *)param_2 != 0x2f)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)param_2 != 0x2f)" (( "(") (binary_expression "*(int *)param_2 != 0x2f" (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (!= "!=") (number_literal "0x2f")) () ")")))) (; ";")) (} "}"))) (labeled_statement "LAB_000366d8:\n  if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }" (statement_identifier "LAB_000366d8") (: ":") (if_statement "if (iVar3 == *(int *)puVar2) {\n    return uVar4;\n  }" (if "if") (parenthesized_expression "(iVar3 == *(int *)puVar2)" (( "(") (binary_expression "iVar3 == *(int *)puVar2" (identifier "iVar3") (== "==") (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2")))) () ")")) (compound_statement "{\n    return uVar4;\n  }" ({ "{") (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}")))) (expression_statement "pcVar8 = (code *)PTR___stack_chk_fail_00056494;" (assignment_expression "pcVar8 = (code *)PTR___stack_chk_fail_00056494" (identifier "pcVar8") (= "=") (cast_expression "(code *)PTR___stack_chk_fail_00056494" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00056494"))) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_00056494)();" (call_expression "(*(code *)PTR___stack_chk_fail_00056494)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00056494)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00056494" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00056494" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00056494"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_000371b4:\n  piVar9 = (int *)(*pcVar8)(piVar10);" (statement_identifier "LAB_000371b4") (: ":") (expression_statement "piVar9 = (int *)(*pcVar8)(piVar10);" (assignment_expression "piVar9 = (int *)(*pcVar8)(piVar10)" (identifier "piVar9") (= "=") (cast_expression "(int *)(*pcVar8)(piVar10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar8)(piVar10)" (parenthesized_expression "(*pcVar8)" (( "(") (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8")) () ")")) (argument_list "(piVar10)" (( "(") (identifier "piVar10") () ")"))))) (; ";"))) (expression_statement "piVar7 = piVar10;" (assignment_expression "piVar7 = piVar10" (identifier "piVar7") (= "=") (identifier "piVar10")) (; ";")) (if_statement "if (piVar10 == piVar9) goto LAB_00036bb0;" (if "if") (parenthesized_expression "(piVar10 == piVar9)" (( "(") (binary_expression "piVar10 == piVar9" (identifier "piVar10") (== "==") (identifier "piVar9")) () ")")) (goto_statement "goto LAB_00036bb0;" (goto "goto") (statement_identifier "LAB_00036bb0") (; ";"))) (expression_statement "pcVar8 = (code *)*piVar9;" (assignment_expression "pcVar8 = (code *)*piVar9" (identifier "pcVar8") (= "=") (cast_expression "(code *)*piVar9" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")))) (; ";")) (do_statement "do {\n    piVar10 = piVar9 + 1;\nLAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }\n    if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    pcVar8 = (code *)*piVar10;\n    if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar9 = (int *)(*local_570)(piVar10);\n    if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    pcVar8 = (code *)*piVar9;\n  } while( true );" (do "do") (compound_statement "{\n    piVar10 = piVar9 + 1;\nLAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }\n    if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }\n    pcVar8 = (code *)*piVar10;\n    if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    piVar9 = (int *)(*local_570)(piVar10);\n    if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }\n    pcVar8 = (code *)*piVar9;\n  }" ({ "{") (expression_statement "piVar10 = piVar9 + 1;" (assignment_expression "piVar10 = piVar9 + 1" (identifier "piVar10") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "LAB_00036b9c:\n    while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }" (statement_identifier "LAB_00036b9c") (: ":") (while_statement "while (pcVar8 == (code *)0x3f) {\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }" (while "while") (parenthesized_expression "(pcVar8 == (code *)0x3f)" (( "(") (binary_expression "pcVar8 == (code *)0x3f" (identifier "pcVar8") (== "==") (cast_expression "(code *)0x3f" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3f"))) () ")")) (compound_statement "{\n      piVar7 = piVar10;\n      pcVar8 = local_570;\n      if ((code *)*piVar10 == param_1) goto LAB_000371b4;\nLAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;\n      param_2 = param_2 + 4;\n      piVar10 = piVar7 + 1;\n      pcVar8 = (code *)*piVar7;\n    }" ({ "{") (expression_statement "piVar7 = piVar10;" (assignment_expression "piVar7 = piVar10" (identifier "piVar7") (= "=") (identifier "piVar10")) (; ";")) (expression_statement "pcVar8 = local_570;" (assignment_expression "pcVar8 = local_570" (identifier "pcVar8") (= "=") (identifier "local_570")) (; ";")) (if_statement "if ((code *)*piVar10 == param_1) goto LAB_000371b4;" (if "if") (parenthesized_expression "((code *)*piVar10 == param_1)" (( "(") (binary_expression "(code *)*piVar10 == param_1" (cast_expression "(code *)*piVar10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (== "==") (identifier "param_1")) () ")")) (goto_statement "goto LAB_000371b4;" (goto "goto") (statement_identifier "LAB_000371b4") (; ";"))) (labeled_statement "LAB_00036bb0:\n      if (param_3 == param_2) goto LAB_000366d0;" (statement_identifier "LAB_00036bb0") (: ":") (if_statement "if (param_3 == param_2) goto LAB_000366d0;" (if "if") (parenthesized_expression "(param_3 == param_2)" (( "(") (binary_expression "param_3 == param_2" (identifier "param_3") (== "==") (identifier "param_2")) () ")")) (goto_statement "goto LAB_000366d0;" (goto "goto") (statement_identifier "LAB_000366d0") (; ";")))) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" (identifier "param_2") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "piVar10 = piVar7 + 1;" (assignment_expression "piVar10 = piVar7 + 1" (identifier "piVar10") (= "=") (binary_expression "piVar7 + 1" (identifier "piVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar8 = (code *)*piVar7;" (assignment_expression "pcVar8 = (code *)*piVar7" (identifier "pcVar8") (= "=") (cast_expression "(code *)*piVar7" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")))) (; ";")) (} "}")))) (if_statement "if (pcVar8 != unaff_s2) {\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }" (if "if") (parenthesized_expression "(pcVar8 != unaff_s2)" (( "(") (binary_expression "pcVar8 != unaff_s2" (identifier "pcVar8") (!= "!=") (identifier "unaff_s2")) () ")")) (compound_statement "{\n      uVar4 = 0;\n      if (pcVar8 == (code *)0x0) goto LAB_000366d8;\n      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);\n      unaff_s2 = param_3;\n      if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }\n      if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }\n      if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }\n      if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }\n      piVar7 = piVar10 + -1;\n      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);\n      if (unaff_s2 <= param_2) goto LAB_000366d0;\n      unaff_s1 = PTR_LAB_00056274 + 0x6404;\n      goto LAB_00036a80;\n    }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (pcVar8 == (code *)0x0) goto LAB_000366d8;" (if "if") (parenthesized_expression "(pcVar8 == (code *)0x0)" (( "(") (binary_expression "pcVar8 == (code *)0x0" (identifier "pcVar8") (== "==") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000366d8;" (goto "goto") (statement_identifier "LAB_000366d8") (; ";"))) (expression_statement "pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);" (assignment_expression "pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2)" (identifier "pcVar5") (= "=") (cast_expression "(code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2)" (parenthesized_expression "(*(code *)PTR_wmemchr_000563bc)" (( "(") (pointer_expression "*(code *)PTR_wmemchr_000563bc" (* "*") (cast_expression "(code *)PTR_wmemchr_000563bc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wmemchr_000563bc"))) () ")")) (argument_list "(param_2,0,(int)param_3 - (int)param_2 >> 2)" (( "(") (identifier "param_2") (, ",") (number_literal "0") (, ",") (binary_expression "(int)param_3 - (int)param_2 >> 2" (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (>> ">>") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "unaff_s2 = param_3;" (assignment_expression "unaff_s2 = param_3" (identifier "unaff_s2") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (pcVar5 != (code *)0x0) {\n        unaff_s2 = pcVar5;\n      }" (if "if") (parenthesized_expression "(pcVar5 != (code *)0x0)" (( "(") (binary_expression "pcVar5 != (code *)0x0" (identifier "pcVar5") (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        unaff_s2 = pcVar5;\n      }" ({ "{") (expression_statement "unaff_s2 = pcVar5;" (assignment_expression "unaff_s2 = pcVar5" (identifier "unaff_s2") (= "=") (identifier "pcVar5")) (; ";")) (} "}"))) (if_statement "if (pcVar8 == (code *)0x5b) {\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }" (if "if") (parenthesized_expression "(pcVar8 == (code *)0x5b)" (( "(") (binary_expression "pcVar8 == (code *)0x5b" (identifier "pcVar8") (== "==") (cast_expression "(code *)0x5b" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x5b"))) () ")")) (compound_statement "{\nLAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        break;\n      }" ({ "{") (labeled_statement "LAB_00036ccc:\n        if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }" (statement_identifier "LAB_00036ccc") (: ":") (if_statement "if (local_564 == 0) {\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }" (if "if") (parenthesized_expression "(local_564 == 0)" (( "(") (binary_expression "local_564 == 0" (identifier "local_564") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }" ({ "{") (expression_statement "param_5 = (undefined *)((uint)param_5 & 0xfffffffb);" (assignment_expression "param_5 = (undefined *)((uint)param_5 & 0xfffffffb)" (identifier "param_5") (= "=") (cast_expression "(undefined *)((uint)param_5 & 0xfffffffb)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)param_5 & 0xfffffffb)" (( "(") (binary_expression "(uint)param_5 & 0xfffffffb" (cast_expression "(uint)param_5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_5")) (& "&") (number_literal "0xfffffffb")) () ")")))) (; ";")) (} "}")))) (expression_statement "piVar7 = piVar10 + -1;" (assignment_expression "piVar7 = piVar10 + -1" (identifier "piVar7") (= "=") (binary_expression "piVar10 + -1" (identifier "piVar10") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (unaff_s2 <= param_2) goto LAB_000366d0;" (if "if") (parenthesized_expression "(unaff_s2 <= param_2)" (( "(") (binary_expression "unaff_s2 <= param_2" (identifier "unaff_s2") (<= "<=") (identifier "param_2")) () ")")) (goto_statement "goto LAB_000366d0;" (goto "goto") (statement_identifier "LAB_000366d0") (; ";"))) (expression_statement "unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);" (assignment_expression "unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404)" (identifier "unaff_s0") (= "=") (cast_expression "(int *)(PTR_LAB_00056274 + 0x6404)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00056274 + 0x6404)" (( "(") (binary_expression "PTR_LAB_00056274 + 0x6404" (identifier "PTR_LAB_00056274") (+ "+") (number_literal "0x6404")) () ")")))) (; ";")) (expression_statement "uVar4 = param_4;" (assignment_expression "uVar4 = param_4" (identifier "uVar4") (= "=") (identifier "param_4")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (local_568 == 0) {\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }\n      else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }" (if "if") (parenthesized_expression "(local_568 == 0)" (( "(") (binary_expression "local_568 == 0" (identifier "local_568") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }\n        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }\n      }" ({ "{") (labeled_statement "LAB_00036a18:\n        if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" (statement_identifier "LAB_00036a18") (: ":") (if_statement "if (pcVar8 == (code *)0x2f) {\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }\n        else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" (if "if") (parenthesized_expression "(pcVar8 == (code *)0x2f)" (( "(") (binary_expression "pcVar8 == (code *)0x2f" (identifier "pcVar8") (== "==") (cast_expression "(code *)0x2f" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2f"))) () ")")) (compound_statement "{\n          if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }\nLAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);\n        }" ({ "{") (if_statement "if (local_564 != 0) {\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }" (if "if") (parenthesized_expression "(local_564 != 0)" (( "(") (binary_expression "local_564 != 0" (identifier "local_564") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar4 = 1;\n            if (param_3 <= param_2) goto LAB_000366d8;\n            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;\n            goto LAB_00036f88;\n          }" ({ "{") (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (if_statement "if (param_3 <= param_2) goto LAB_000366d8;" (if "if") (parenthesized_expression "(param_3 <= param_2)" (( "(") (binary_expression "param_3 <= param_2" (identifier "param_3") (<= "<=") (identifier "param_2")) () ")")) (goto_statement "goto LAB_000366d8;" (goto "goto") (statement_identifier "LAB_000366d8") (; ";"))) (if_statement "if (*(int *)param_2 == 0x2f) goto LAB_0003714c;" (if "if") (parenthesized_expression "(*(int *)param_2 == 0x2f)" (( "(") (binary_expression "*(int *)param_2 == 0x2f" (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (== "==") (number_literal "0x2f")) () ")")) (goto_statement "goto LAB_0003714c;" (goto "goto") (statement_identifier "LAB_0003714c") (; ";"))) (goto_statement "goto LAB_00036f88;" (goto "goto") (statement_identifier "LAB_00036f88") (; ";")) (} "}"))) (labeled_statement "LAB_00036efc:\n          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);" (statement_identifier "LAB_00036efc") (: ":") (expression_statement "param_5 = (undefined *)((uint)param_5 & 0xfffffffb);" (assignment_expression "param_5 = (undefined *)((uint)param_5 & 0xfffffffb)" (identifier "param_5") (= "=") (cast_expression "(undefined *)((uint)param_5 & 0xfffffffb)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)param_5 & 0xfffffffb)" (( "(") (binary_expression "(uint)param_5 & 0xfffffffb" (cast_expression "(uint)param_5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_5")) (& "&") (number_literal "0xfffffffb")) () ")")))) (; ";"))) (} "}")) (else_clause "else {\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" (else "else") (compound_statement "{\nLAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;\n        }" ({ "{") (labeled_statement "LAB_00036a24:\n          if (local_564 == 0) goto LAB_00036efc;" (statement_identifier "LAB_00036a24") (: ":") (if_statement "if (local_564 == 0) goto LAB_00036efc;" (if "if") (parenthesized_expression "(local_564 == 0)" (( "(") (binary_expression "local_564 == 0" (identifier "local_564") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00036efc;" (goto "goto") (statement_identifier "LAB_00036efc") (; ";")))) (} "}"))))) (if_statement "if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {\n          pcVar8 = (code *)*piVar10;\n        }" (if "if") (parenthesized_expression "((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0))" (( "(") (binary_expression "(pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)" (parenthesized_expression "(pcVar8 == (code *)&DAT_0000005c)" (( "(") (binary_expression "pcVar8 == (code *)&DAT_0000005c" (identifier "pcVar8") (== "==") (cast_expression "(code *)&DAT_0000005c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_0000005c" (& "&") (identifier "DAT_0000005c")))) () ")")) (&& "&&") (parenthesized_expression "(unaff_s1 == (undefined *)0x0)" (( "(") (binary_expression "unaff_s1 == (undefined *)0x0" (identifier "unaff_s1") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n          pcVar8 = (code *)*piVar10;\n        }" ({ "{") (expression_statement "pcVar8 = (code *)*piVar10;" (assignment_expression "pcVar8 = (code *)*piVar10" (identifier "pcVar8") (= "=") (cast_expression "(code *)*piVar10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar10" (* "*") (identifier "piVar10")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }" (else "else") (compound_statement "{\n        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;\n        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;\n        if (*piVar10 == 0x28) goto LAB_00036ccc;\n        if (local_564 == 0) goto LAB_00036efc;\n      }" ({ "{") (if_statement "if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;" (if "if") (parenthesized_expression "((code *)0x1f < pcVar8 + -0x21)" (( "(") (binary_expression "(code *)0x1f < pcVar8 + -0x21" (cast_expression "(code *)0x1f" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1f")) (< "<") (binary_expression "pcVar8 + -0x21" (identifier "pcVar8") (+ "+") (number_literal "-0x21"))) () ")")) (goto_statement "goto LAB_00036a24;" (goto "goto") (statement_identifier "LAB_00036a24") (; ";"))) (if_statement "if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;" (if "if") (parenthesized_expression "(-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f))" (( "(") (binary_expression "-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)" (number_literal "-1") (< "<") (cast_expression "(int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)" (( "(") (binary_expression "(0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f" (parenthesized_expression "(0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f))" (( "(") (binary_expression "0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)" (number_literal "0x80000401U") (>> ">>") (parenthesized_expression "((uint)(pcVar8 + -0x21) & 0x1f)" (( "(") (binary_expression "(uint)(pcVar8 + -0x21) & 0x1f" (call_expression "(uint)(pcVar8 + -0x21)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pcVar8 + -0x21)" (( "(") (binary_expression "pcVar8 + -0x21" (identifier "pcVar8") (+ "+") (number_literal "-0x21")) () ")"))) (& "&") (number_literal "0x1f")) () ")"))) () ")")) (<< "<<") (number_literal "0x1f")) () ")")))) () ")")) (goto_statement "goto LAB_00036a18;" (goto "goto") (statement_identifier "LAB_00036a18") (; ";"))) (if_statement "if (*piVar10 == 0x28) goto LAB_00036ccc;" (if "if") (parenthesized_expression "(*piVar10 == 0x28)" (( "(") (binary_expression "*piVar10 == 0x28" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (== "==") (number_literal "0x28")) () ")")) (goto_statement "goto LAB_00036ccc;" (goto "goto") (statement_identifier "LAB_00036ccc") (; ";"))) (if_statement "if (local_564 == 0) goto LAB_00036efc;" (if "if") (parenthesized_expression "(local_564 == 0)" (( "(") (binary_expression "local_564 == 0" (identifier "local_564") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00036efc;" (goto "goto") (statement_identifier "LAB_00036efc") (; ";"))) (} "}")))) (if_statement "if (unaff_s0 == (int *)0x0) {\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }" (if "if") (parenthesized_expression "(unaff_s0 == (int *)0x0)" (( "(") (binary_expression "unaff_s0 == (int *)0x0" (identifier "unaff_s0") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        piVar7 = piVar10 + -1;\n        if (unaff_s2 <= param_2) goto LAB_000366d0;\n        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);\n        uVar4 = param_4;\n        goto LAB_00036e4c;\n      }" ({ "{") (expression_statement "piVar7 = piVar10 + -1;" (assignment_expression "piVar7 = piVar10 + -1" (identifier "piVar7") (= "=") (binary_expression "piVar10 + -1" (identifier "piVar10") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (unaff_s2 <= param_2) goto LAB_000366d0;" (if "if") (parenthesized_expression "(unaff_s2 <= param_2)" (( "(") (binary_expression "unaff_s2 <= param_2" (identifier "unaff_s2") (<= "<=") (identifier "param_2")) () ")")) (goto_statement "goto LAB_000366d0;" (goto "goto") (statement_identifier "LAB_000366d0") (; ";"))) (expression_statement "unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);" (assignment_expression "unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404)" (identifier "unaff_s0") (= "=") (cast_expression "(int *)(PTR_LAB_00056274 + 0x6404)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00056274 + 0x6404)" (( "(") (binary_expression "PTR_LAB_00056274 + 0x6404" (identifier "PTR_LAB_00056274") (+ "+") (number_literal "0x6404")) () ")")))) (; ";")) (expression_statement "uVar4 = param_4;" (assignment_expression "uVar4 = param_4" (identifier "uVar4") (= "=") (identifier "param_4")) (; ";")) (goto_statement "goto LAB_00036e4c;" (goto "goto") (statement_identifier "LAB_00036e4c") (; ";")) (} "}"))) (expression_statement "piVar7 = piVar10 + -1;" (assignment_expression "piVar7 = piVar10 + -1" (identifier "piVar7") (= "=") (binary_expression "piVar10 + -1" (identifier "piVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);" (assignment_expression "unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8)" (identifier "unaff_s0") (= "=") (cast_expression "(int *)(*(code *)PTR_towlower_000564ac)(pcVar8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_towlower_000564ac)(pcVar8)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" (( "(") (pointer_expression "*(code *)PTR_towlower_000564ac" (* "*") (cast_expression "(code *)PTR_towlower_000564ac" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_towlower_000564ac"))) () ")")) (argument_list "(pcVar8)" (( "(") (identifier "pcVar8") () ")"))))) (; ";")) (if_statement "if (unaff_s2 <= param_2) goto LAB_000366d0;" (if "if") (parenthesized_expression "(unaff_s2 <= param_2)" (( "(") (binary_expression "unaff_s2 <= param_2" (identifier "unaff_s2") (<= "<=") (identifier "param_2")) () ")")) (goto_statement "goto LAB_000366d0;" (goto "goto") (statement_identifier "LAB_000366d0") (; ";"))) (expression_statement "unaff_s1 = PTR_LAB_00056274 + 0x6404;" (assignment_expression "unaff_s1 = PTR_LAB_00056274 + 0x6404" (identifier "unaff_s1") (= "=") (binary_expression "PTR_LAB_00056274 + 0x6404" (identifier "PTR_LAB_00056274") (+ "+") (number_literal "0x6404"))) (; ";")) (goto_statement "goto LAB_00036a80;" (goto "goto") (statement_identifier "LAB_00036a80") (; ";")) (} "}"))) (expression_statement "pcVar8 = (code *)*piVar10;" (assignment_expression "pcVar8 = (code *)*piVar10" (identifier "pcVar8") (= "=") (cast_expression "(code *)*piVar10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar10" (* "*") (identifier "piVar10")))) (; ";")) (if_statement "if (pcVar8 != param_1) {\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }" (if "if") (parenthesized_expression "(pcVar8 != param_1)" (( "(") (binary_expression "pcVar8 != param_1" (identifier "pcVar8") (!= "!=") (identifier "param_1")) () ")")) (compound_statement "{\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }" ({ "{") (expression_statement "piVar10 = piVar10 + 1;" (assignment_expression "piVar10 = piVar10 + 1" (identifier "piVar10") (= "=") (binary_expression "piVar10 + 1" (identifier "piVar10") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_00036b9c;" (goto "goto") (statement_identifier "LAB_00036b9c") (; ";")) (} "}"))) (expression_statement "piVar9 = (int *)(*local_570)(piVar10);" (assignment_expression "piVar9 = (int *)(*local_570)(piVar10)" (identifier "piVar9") (= "=") (cast_expression "(int *)(*local_570)(piVar10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*local_570)(piVar10)" (parenthesized_expression "(*local_570)" (( "(") (pointer_expression "*local_570" (* "*") (identifier "local_570")) () ")")) (argument_list "(piVar10)" (( "(") (identifier "piVar10") () ")"))))) (; ";")) (if_statement "if (piVar10 == piVar9) {\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }" (if "if") (parenthesized_expression "(piVar10 == piVar9)" (( "(") (binary_expression "piVar10 == piVar9" (identifier "piVar10") (== "==") (identifier "piVar9")) () ")")) (compound_statement "{\n      pcVar8 = (code *)*piVar10;\n      piVar10 = piVar10 + 1;\n      goto LAB_00036b9c;\n    }" ({ "{") (expression_statement "pcVar8 = (code *)*piVar10;" (assignment_expression "pcVar8 = (code *)*piVar10" (identifier "pcVar8") (= "=") (cast_expression "(code *)*piVar10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar10" (* "*") (identifier "piVar10")))) (; ";")) (expression_statement "piVar10 = piVar10 + 1;" (assignment_expression "piVar10 = piVar10 + 1" (identifier "piVar10") (= "=") (binary_expression "piVar10 + 1" (identifier "piVar10") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_00036b9c;" (goto "goto") (statement_identifier "LAB_00036b9c") (; ";")) (} "}"))) (expression_statement "pcVar8 = (code *)*piVar9;" (assignment_expression "pcVar8 = (code *)*piVar9" (identifier "pcVar8") (= "=") (cast_expression "(code *)*piVar9" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (while_statement "while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\n    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);\n    unaff_s1 = param_5;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\n    iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);\n    unaff_s1 = param_5;\n    if (iVar6 == 0) goto LAB_00036ab8;\n  }" ({ "{") (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" (identifier "param_2") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (unaff_s2 <= param_2) break;" (if "if") (parenthesized_expression "(unaff_s2 <= param_2)" (( "(") (binary_expression "unaff_s2 <= param_2" (identifier "unaff_s2") (<= "<=") (identifier "param_2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5);" (assignment_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4,param_5)" (identifier "iVar6") (= "=") (call_expression "FUN_00036404(piVar7,param_2,param_3,uVar4,param_5)" (identifier "FUN_00036404") (argument_list "(piVar7,param_2,param_3,uVar4,param_5)" (( "(") (identifier "piVar7") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "uVar4") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "unaff_s1 = param_5;" (assignment_expression "unaff_s1 = param_5" (identifier "unaff_s1") (= "=") (identifier "param_5")) (; ";")) (if_statement "if (iVar6 == 0) goto LAB_00036ab8;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00036ab8;" (goto "goto") (statement_identifier "LAB_00036ab8") (; ";"))) (} "}"))) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" (identifier "piVar10") (= "=") (identifier "piVar7")) (; ";")) (goto_statement "goto LAB_000366d8;" (goto "goto") (statement_identifier "LAB_000366d8") (; ";")) (while_statement "while (*(int *)param_2 != 0x2f) {\nLAB_00036f88:\n    param_2 = param_2 + 4;\n    uVar4 = 1;\n    if (param_3 <= param_2) goto LAB_000366d8;\n  }" (while "while") (parenthesized_expression "(*(int *)param_2 != 0x2f)" (( "(") (binary_expression "*(int *)param_2 != 0x2f" (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (!= "!=") (number_literal "0x2f")) () ")")) (compound_statement "{\nLAB_00036f88:\n    param_2 = param_2 + 4;\n    uVar4 = 1;\n    if (param_3 <= param_2) goto LAB_000366d8;\n  }" ({ "{") (labeled_statement "LAB_00036f88:\n    param_2 = param_2 + 4;" (statement_identifier "LAB_00036f88") (: ":") (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" (identifier "param_2") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";"))) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (if_statement "if (param_3 <= param_2) goto LAB_000366d8;" (if "if") (parenthesized_expression "(param_3 <= param_2)" (( "(") (binary_expression "param_3 <= param_2" (identifier "param_3") (<= "<=") (identifier "param_2")) () ")")) (goto_statement "goto LAB_000366d8;" (goto "goto") (statement_identifier "LAB_000366d8") (; ";"))) (} "}"))) (labeled_statement "LAB_0003714c:\n  iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);" (statement_identifier "LAB_0003714c") (: ":") (expression_statement "iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);" (assignment_expression "iVar6 = FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5)" (identifier "iVar6") (= "=") (call_expression "FUN_00036404(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5)" (identifier "FUN_00036404") (argument_list "(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5)" (( "(") (identifier "piVar10") (, ",") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) (, ",") (identifier "param_3") (, ",") (binary_expression "(uint)((int)param_5 << 0x1d) >> 0x1f" (call_expression "(uint)((int)param_5 << 0x1d)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)param_5 << 0x1d)" (( "(") (binary_expression "(int)param_5 << 0x1d" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (<< "<<") (number_literal "0x1d")) () ")"))) (>> ">>") (number_literal "0x1f")) (, ",") (identifier "param_5") () ")")))) (; ";"))) (expression_statement "uVar4 = (uint)(iVar6 != 0);" (assignment_expression "uVar4 = (uint)(iVar6 != 0)" (identifier "uVar4") (= "=") (call_expression "(uint)(iVar6 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")))) (; ";")) (goto_statement "goto LAB_000366d8;" (goto "goto") (statement_identifier "LAB_000366d8") (; ";")) (while_statement "while( true ) {\n    param_2 = param_2 + 4;\n    param_4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);\n    if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    param_2 = param_2 + 4;\n    param_4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);\n    if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;\n  }" ({ "{") (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" (identifier "param_2") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "param_4 = 0;" (assignment_expression "param_4 = 0" (identifier "param_4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (unaff_s2 <= param_2) break;" (if "if") (parenthesized_expression "(unaff_s2 <= param_2)" (( "(") (binary_expression "unaff_s2 <= param_2" (identifier "unaff_s2") (<= "<=") (identifier "param_2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00036a80:\n    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);" (statement_identifier "LAB_00036a80") (: ":") (expression_statement "piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);" (assignment_expression "piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2)" (identifier "piVar9") (= "=") (cast_expression "(int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_towlower_000564ac)(*(int *)param_2)" (parenthesized_expression "(*(code *)PTR_towlower_000564ac)" (( "(") (pointer_expression "*(code *)PTR_towlower_000564ac" (* "*") (cast_expression "(code *)PTR_towlower_000564ac" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_towlower_000564ac"))) () ")")) (argument_list "(*(int *)param_2)" (( "(") (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) () ")"))))) (; ";"))) (if_statement "if ((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))\n    goto LAB_00036ab8;" (if "if") (parenthesized_expression "((unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))" (( "(") (binary_expression "(unaff_s0 == piVar9) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0)" (parenthesized_expression "(unaff_s0 == piVar9)" (( "(") (binary_expression "unaff_s0 == piVar9" (identifier "unaff_s0") (== "==") (identifier "piVar9")) () ")")) (&& "&&") (parenthesized_expression "(iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0)" (( "(") (comma_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0" (assignment_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5)" (identifier "iVar6") (= "=") (call_expression "FUN_00036404(piVar7,param_2,param_3,param_4 & 1,param_5)" (identifier "FUN_00036404") (argument_list "(piVar7,param_2,param_3,param_4 & 1,param_5)" (( "(") (identifier "piVar7") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (binary_expression "param_4 & 1" (identifier "param_4") (& "&") (number_literal "1")) (, ",") (identifier "param_5") () ")")))) (, ",") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_00036ab8;" (goto "goto") (statement_identifier "LAB_00036ab8") (; ";"))) (} "}"))) (goto_statement "goto LAB_000366d0;" (goto "goto") (statement_identifier "LAB_000366d0") (; ";")) (labeled_statement "LAB_00036ab8:\n  uVar4 = 0;" (statement_identifier "LAB_00036ab8") (: ":") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";"))) (expression_statement "piVar10 = piVar10 + -1;" (assignment_expression "piVar10 = piVar10 + -1" (identifier "piVar10") (= "=") (binary_expression "piVar10 + -1" (identifier "piVar10") (+ "+") (number_literal "-1"))) (; ";")) (goto_statement "goto LAB_000366d8;" (goto "goto") (statement_identifier "LAB_000366d8") (; ";")) (while_statement "while( true ) {\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036e4c:\n    unaff_s1 = param_5;\n    if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    param_2 = param_2 + 4;\n    uVar4 = 0;\n    if (unaff_s2 <= param_2) break;\nLAB_00036e4c:\n    unaff_s1 = param_5;\n    if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }\n  }" ({ "{") (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" (identifier "param_2") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (unaff_s2 <= param_2) break;" (if "if") (parenthesized_expression "(unaff_s2 <= param_2)" (( "(") (binary_expression "unaff_s2 <= param_2" (identifier "unaff_s2") (<= "<=") (identifier "param_2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00036e4c:\n    unaff_s1 = param_5;" (statement_identifier "LAB_00036e4c") (: ":") (expression_statement "unaff_s1 = param_5;" (assignment_expression "unaff_s1 = param_5" (identifier "unaff_s1") (= "=") (identifier "param_5")) (; ";"))) (if_statement "if ((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }" (if "if") (parenthesized_expression "((pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0))" (( "(") (binary_expression "(pcVar8 == *(code **)param_2) &&\n       (iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)" (parenthesized_expression "(pcVar8 == *(code **)param_2)" (( "(") (binary_expression "pcVar8 == *(code **)param_2" (identifier "pcVar8") (== "==") (pointer_expression "*(code **)param_2" (* "*") (cast_expression "(code **)param_2" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_2")))) () ")")) (&& "&&") (parenthesized_expression "(iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)" (( "(") (comma_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0" (assignment_expression "iVar6 = FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5)" (identifier "iVar6") (= "=") (call_expression "FUN_00036404(piVar7,param_2,param_3,uVar4 & 1,param_5)" (identifier "FUN_00036404") (argument_list "(piVar7,param_2,param_3,uVar4 & 1,param_5)" (( "(") (identifier "piVar7") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (binary_expression "uVar4 & 1" (identifier "uVar4") (& "&") (number_literal "1")) (, ",") (identifier "param_5") () ")")))) (, ",") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      uVar4 = 0;\n      piVar10 = piVar7;\n      goto LAB_000366d8;\n    }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" (identifier "piVar10") (= "=") (identifier "piVar7")) (; ";")) (goto_statement "goto LAB_000366d8;" (goto "goto") (statement_identifier "LAB_000366d8") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000366d0:\n  uVar4 = 1;" (statement_identifier "LAB_000366d0") (: ":") (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";"))) (expression_statement "piVar10 = piVar7;" (assignment_expression "piVar10 = piVar7" (identifier "piVar10") (= "=") (identifier "piVar7")) (; ";")) (goto_statement "goto LAB_000366d8;" (goto "goto") (statement_identifier "LAB_000366d8") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (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: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (number_literal))) right: (number_literal)))))))))) arguments: (argument_list)))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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 (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (number_literal) (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (break_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))))) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (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: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (true))) (while_statement condition: (parenthesized_expression (true)) body: (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)) (while_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))) body: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier) (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) right: (number_literal)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (goto_statement label: (statement_identifier)) (while_statement condition: (parenthesized_expression (true)) body: (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))))))) (if_statement 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: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)) (while_statement condition: (parenthesized_expression (true)) body: (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier)))) right: (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: (identifier))) (goto_statement label: (statement_identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))))

uint MASKED(code *param_1,code *param_2,code *param_3,uint param_4,undefined *param_5)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  uint uVar4;
  code *pcVar5;
  int iVar6;
  int *unaff_s0;
  int *piVar7;
  undefined *unaff_s1;
  code *unaff_s2;
  code *pcVar8;
  uint unaff_s5;
  int *piVar9;
  int *piVar10;
  code *unaff_s8;
  code *local_570;
  uint local_568;
  uint local_564;
  
  puVar2 = PTR___stack_chk_guard_000564b4;
  puVar1 = PTR_wcrtomb_00056118;
  iVar3 = *(int *)PTR___stack_chk_guard_000564b4;
  piVar9 = *(int **)param_1;
  piVar7 = piVar9;
  if (piVar9 != (int *)0x0) {
    piVar7 = (int *)((uint)param_5 & 0x10);
    unaff_s1 = (undefined *)((uint)param_5 & 2);
    local_564 = (uint)param_5 & 1;
    local_568 = (uint)param_5 & 0x20;
    pcVar8 = param_1 + 4;
    do {
      unaff_s8 = pcVar8;
      unaff_s0 = piVar9;
      if (piVar7 != (int *)0x0) {
        unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);
      }
      if ((int)unaff_s0 - 0x21U < 0x3c) {
                    /* WARNING: Could not emulate address calculation at 0x00036510 */
                    /* WARNING: Treating indirect jump as call */
        uVar4 = (*(code *)(&_gp_1 + *(int *)(puVar1 + ((int)unaff_s0 - 0x21U) * 4 + 0x4fe0)))();
        return uVar4;
      }
      local_570 = param_3;
      if (param_3 == param_2) goto LAB_000366d0;
      piVar9 = *(int **)param_2;
      if (piVar7 != (int *)0x0) {
        piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(piVar9);
      }
      uVar4 = 1;
      piVar10 = piVar7;
      if (piVar9 != unaff_s0) goto LAB_000366d8;
      param_4 = 0;
      piVar9 = *(int **)unaff_s8;
      param_2 = param_2 + 4;
      unaff_s0 = piVar9;
      pcVar8 = unaff_s8 + 4;
      unaff_s5 = param_4;
      param_1 = unaff_s8;
    } while (piVar9 != (int *)0x0);
  }
  param_4 = unaff_s5;
  uVar4 = 0;
  piVar10 = piVar7;
  param_1 = unaff_s8;
  if (param_2 != param_3) {
    if (((uint)param_5 & 8) == 0) goto LAB_000366d0;
    uVar4 = (uint)(*(int *)param_2 != 0x2f);
  }
LAB_000366d8:
  if (iVar3 == *(int *)puVar2) {
    return uVar4;
  }
  pcVar8 = (code *)PTR___stack_chk_fail_00056494;
  (*(code *)PTR___stack_chk_fail_00056494)();
LAB_000371b4:
  piVar9 = (int *)(*pcVar8)(piVar10);
  piVar7 = piVar10;
  if (piVar10 == piVar9) goto LAB_00036bb0;
  pcVar8 = (code *)*piVar9;
  do {
    piVar10 = piVar9 + 1;
LAB_00036b9c:
    while (pcVar8 == (code *)0x3f) {
      piVar7 = piVar10;
      pcVar8 = local_570;
      if ((code *)*piVar10 == param_1) goto LAB_000371b4;
LAB_00036bb0:
      if (param_3 == param_2) goto LAB_000366d0;
      param_2 = param_2 + 4;
      piVar10 = piVar7 + 1;
      pcVar8 = (code *)*piVar7;
    }
    if (pcVar8 != unaff_s2) {
      uVar4 = 0;
      if (pcVar8 == (code *)0x0) goto LAB_000366d8;
      pcVar5 = (code *)(*(code *)PTR_wmemchr_000563bc)(param_2,0,(int)param_3 - (int)param_2 >> 2);
      unaff_s2 = param_3;
      if (pcVar5 != (code *)0x0) {
        unaff_s2 = pcVar5;
      }
      if (pcVar8 == (code *)0x5b) {
LAB_00036ccc:
        if (local_564 == 0) {
          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);
        }
        piVar7 = piVar10 + -1;
        if (unaff_s2 <= param_2) goto LAB_000366d0;
        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);
        uVar4 = param_4;
        break;
      }
      if (local_568 == 0) {
LAB_00036a18:
        if (pcVar8 == (code *)0x2f) {
          if (local_564 != 0) {
            uVar4 = 1;
            if (param_3 <= param_2) goto LAB_000366d8;
            if (*(int *)param_2 == 0x2f) goto LAB_0003714c;
            goto LAB_00036f88;
          }
LAB_00036efc:
          param_5 = (undefined *)((uint)param_5 & 0xfffffffb);
        }
        else {
LAB_00036a24:
          if (local_564 == 0) goto LAB_00036efc;
        }
        if ((pcVar8 == (code *)&DAT_0000005c) && (unaff_s1 == (undefined *)0x0)) {
          pcVar8 = (code *)*piVar10;
        }
      }
      else {
        if ((code *)0x1f < pcVar8 + -0x21) goto LAB_00036a24;
        if (-1 < (int)((0x80000401U >> ((uint)(pcVar8 + -0x21) & 0x1f)) << 0x1f)) goto LAB_00036a18;
        if (*piVar10 == 0x28) goto LAB_00036ccc;
        if (local_564 == 0) goto LAB_00036efc;
      }
      if (unaff_s0 == (int *)0x0) {
        piVar7 = piVar10 + -1;
        if (unaff_s2 <= param_2) goto LAB_000366d0;
        unaff_s0 = (int *)(PTR_LAB_00056274 + 0x6404);
        uVar4 = param_4;
        goto LAB_00036e4c;
      }
      piVar7 = piVar10 + -1;
      unaff_s0 = (int *)(*(code *)PTR_towlower_000564ac)(pcVar8);
      if (unaff_s2 <= param_2) goto LAB_000366d0;
      unaff_s1 = PTR_LAB_00056274 + 0x6404;
      goto LAB_00036a80;
    }
    pcVar8 = (code *)*piVar10;
    if (pcVar8 != param_1) {
      piVar10 = piVar10 + 1;
      goto LAB_00036b9c;
    }
    piVar9 = (int *)(*local_570)(piVar10);
    if (piVar10 == piVar9) {
      pcVar8 = (code *)*piVar10;
      piVar10 = piVar10 + 1;
      goto LAB_00036b9c;
    }
    pcVar8 = (code *)*piVar9;
  } while( true );
  while( true ) {
    param_2 = param_2 + 4;
    uVar4 = 0;
    if (unaff_s2 <= param_2) break;
    iVar6 = MASKED(piVar7,param_2,param_3,uVar4,param_5);
    unaff_s1 = param_5;
    if (iVar6 == 0) goto LAB_00036ab8;
  }
  uVar4 = 1;
  piVar10 = piVar7;
  goto LAB_000366d8;
  while (*(int *)param_2 != 0x2f) {
LAB_00036f88:
    param_2 = param_2 + 4;
    uVar4 = 1;
    if (param_3 <= param_2) goto LAB_000366d8;
  }
LAB_0003714c:
  iVar6 = MASKED(piVar10,param_2 + 4,param_3,(uint)((int)param_5 << 0x1d) >> 0x1f,param_5);
  uVar4 = (uint)(iVar6 != 0);
  goto LAB_000366d8;
  while( true ) {
    param_2 = param_2 + 4;
    param_4 = 0;
    if (unaff_s2 <= param_2) break;
LAB_00036a80:
    piVar9 = (int *)(*(code *)PTR_towlower_000564ac)(*(int *)param_2);
    if ((unaff_s0 == piVar9) &&
       (iVar6 = MASKED(piVar7,param_2,param_3,param_4 & 1,param_5), iVar6 == 0))
    goto LAB_00036ab8;
  }
  goto LAB_000366d0;
LAB_00036ab8:
  uVar4 = 0;
  piVar10 = piVar10 + -1;
  goto LAB_000366d8;
  while( true ) {
    param_2 = param_2 + 4;
    uVar4 = 0;
    if (unaff_s2 <= param_2) break;
LAB_00036e4c:
    unaff_s1 = param_5;
    if ((pcVar8 == *(code **)param_2) &&
       (iVar6 = MASKED(piVar7,param_2,param_3,uVar4 & 1,param_5), iVar6 == 0)) {
      uVar4 = 0;
      piVar10 = piVar7;
      goto LAB_000366d8;
    }
  }
LAB_000366d0:
  uVar4 = 1;
  piVar10 = piVar7;
  goto LAB_000366d8;
}

