
int wc_to_mb(int codepage,int flags,wchar_t *wcstr,int wclen,char *mbstr,int mblen,char *defchr,
            int *defused,unicode_data *ucsdata)

{
  undefined1 uVar1;
  undefined *puVar2;
  int *piVar3;
  int iVar4;
  char *pcVar5;
  int iVar6;
  undefined4 *puVar7;
  int iVar8;
  wchar_t *pwVar9;
  uint uVar10;
  mbstate_t *pmVar11;
  int iVar12;
  uint uVar13;
  uint *puVar14;
  mbstate_t *unaff_s4;
  undefined4 unaff_s5;
  int *unaff_s6;
  uint *puVar15;
  undefined *puVar16;
  code *pcVar17;
  int local_resc;
  uint uStack_c0;
  undefined1 *puStack_b4;
  undefined4 uStack_b0;
  uint uStack_ac;
  undefined1 auStack_a8 [4];
  int iStack_a4;
  int iStack_a0;
  undefined *puStack_9c;
  int iStack_98;
  char *pcStack_94;
  mbstate_t *pmStack_90;
  undefined4 uStack_8c;
  int *piStack_88;
  mbstate_t *pmStack_84;
  int local_68;
  wchar_t *local_4c [2];
  mbstate_t state;
  char output [16];
  
  puVar2 = PTR___stack_chk_guard_00112630;
  iVar8 = *(int *)PTR___stack_chk_guard_00112630;
  if (defused != (int *)0x0) {
    *defused = 0;
  }
  pmVar11 = (mbstate_t *)wcstr;
  iVar6 = wclen;
  local_resc = wclen;
  local_4c[0] = wcstr;
  if (codepage == 0xffff) {
    state.__count = 0;
    state.__value.__wch = 0;
    if (wclen < 1) {
LAB_000ca51c:
      iVar12 = 0;
    }
    else {
      iVar12 = 0;
      unaff_s6 = (int *)output;
      unaff_s5 = 0xffffffff;
      do {
        flags = *local_4c[0];
        pmVar11 = &state;
        unaff_s4 = (mbstate_t *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);
        if ((unaff_s4 == (mbstate_t *)0xffffffff) || (iVar12 - mblen < (int)unaff_s4)) break;
        flags = (int)unaff_s6;
        pmVar11 = unaff_s4;
        (*(code *)PTR_memcpy_0011256c)(mbstr + iVar12);
        iVar12 = (int)&unaff_s4->__count + iVar12;
        local_4c[0] = local_4c[0] + 1;
        local_resc = local_resc + -1;
      } while (0 < local_resc);
    }
  }
  else if (codepage == 0) {
    iVar12 = 0;
    if (0 < wclen) {
      if (mblen < 1) goto LAB_000ca51c;
      iVar12 = 0;
      iVar4 = wclen;
      pwVar9 = wcstr;
      do {
        flags = *pwVar9;
        pcVar5 = mbstr + iVar12;
        if ((int *)(flags + -0xd800) < (int *)0x100) {
          iVar12 = iVar12 + 1;
          *pcVar5 = (char)flags;
        }
        else if (defchr != (char *)0x0) {
          flags = (int)*defchr;
          iVar12 = iVar12 + 1;
          *pcVar5 = *defchr;
        }
        pmVar11 = (mbstate_t *)0xffff2800;
        local_resc = iVar4 + -1;
        if (iVar4 + -1 == 0) break;
        iVar4 = iVar4 + -1;
        pwVar9 = pwVar9 + 1;
        local_resc = iVar4;
      } while (iVar12 < mblen);
    }
  }
  else {
    flags = (int)&local_resc;
    pmVar11 = (mbstate_t *)mbstr;
    iVar6 = mblen;
    iVar12 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);
    local_68 = codepage;
  }
  if (iVar8 == *(int *)puVar2) {
    return iVar12;
  }
  puVar16 = PTR___stack_chk_fail_001122c8;
  (*(code *)PTR___stack_chk_fail_001122c8)();
  piVar3 = *(int **)(puVar16 + 0x48100);
  iStack_98 = mblen;
  puStack_9c = puVar2;
  pcStack_94 = mbstr;
  *(undefined4 *)(iVar8 + 8) = 0xffffffff;
  *(undefined4 *)(iVar8 + 0xc) = 0;
  iStack_a4 = *piVar3;
  iStack_a0 = iVar12;
  pmStack_90 = unaff_s4;
  uStack_8c = unaff_s5;
  piStack_88 = unaff_s6;
  pmStack_84 = &state;
  if (pmVar11 != (mbstate_t *)0x0) {
    pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5780);
    if (((((pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')) ||
         ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),
          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) ||
        ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c),
         pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) &&
       (iVar12 = (**(code **)(puVar16 + 0x48150))(pcVar5,iVar12 + -0x484), iVar12 != 0)) {
      uStack_c0 = 0;
      iVar12 = 0x37;
      *(undefined4 *)(iVar8 + 0xc) = 0x37;
      goto LAB_000ca5d4;
    }
    iVar12 = *(int *)(iVar8 + 0xc);
    if (iVar12 != 0) {
      uStack_c0 = 0;
      goto LAB_000ca5d4;
    }
  }
  iVar12 = 0x37;
  if ((int *)flags != (int *)0x0) {
    if (*(char *)flags == '\0') {
      iVar12 = 0x37;
    }
    else {
      iVar12 = (**(code **)(puVar16 + 0x47974))(flags);
      if (iVar12 == 0) {
        uStack_c0 = (uint)(iVar6 == 0);
        *(int *)(iVar8 + 0xc) = iVar6;
        iVar12 = iVar6;
        goto LAB_000ca5d4;
      }
    }
  }
  *(int *)(iVar8 + 0xc) = iVar12;
  uStack_c0 = 0;
LAB_000ca5d4:
  puVar15 = (uint *)(iVar8 + 0x410);
  uVar13 = 0;
  iVar6 = *(int *)(puVar16 + 0x46dc4);
  puVar14 = puVar15;
  while( true ) {
    auStack_a8[0] = (undefined1)uVar13;
    uStack_b0 = 1;
    if (iVar12 == 0) {
      *puVar14 = uVar13 | 0xd800;
    }
    else {
      puStack_b4 = auStack_a8;
      iVar12 = (**(code **)(puVar16 + 0x47970))
                         (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar12,0,iVar6 + -0x7b5c,0);
      if (iVar12 == 1) {
        *puVar14 = uStack_ac;
      }
      else {
        *puVar14 = 0xfffd;
      }
    }
    if (uVar13 == 0xff) break;
    puVar14 = puVar14 + 1;
    uVar13 = uVar13 + 1;
    iVar12 = *(int *)(iVar8 + 0xc);
  }
  puVar7 = (undefined4 *)(iVar8 + 0xc10);
  uVar13 = 0;
  iVar12 = *(int *)(puVar16 + 0x46dc4) + -0x5750;
  if (local_68 == 3) {
    iVar12 = *(int *)(puVar16 + 0x46dc4) + -0x56d0;
  }
  while( true ) {
    while (uVar10 = uVar13 + 1, uVar13 - 0x5f < 0x20) {
      *puVar7 = *(undefined4 *)(iVar12 + (uVar13 & 0x1f) * 4);
      puVar7 = puVar7 + 1;
      uVar13 = uVar10;
    }
    *puVar7 = puVar7[-0x200];
    if (uVar10 == 0x100) break;
    puVar7 = puVar7 + 1;
    uVar13 = uVar10;
  }
  iVar12 = 0;
  puVar14 = (uint *)(iVar8 + 0x10);
  do {
    while( true ) {
      auStack_a8[0] = (undefined1)iVar12;
      uStack_b0 = 1;
      puStack_b4 = auStack_a8;
      iVar4 = (**(code **)(puVar16 + 0x47970))
                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar6 + -0x7b5c,0);
      if (iVar4 != 1) break;
      iVar12 = iVar12 + 1;
      *puVar14 = uStack_ac;
      puVar14 = puVar14 + 1;
      if (iVar12 == 0x100) goto LAB_000ca778;
    }
    iVar12 = iVar12 + 1;
    *puVar14 = 0xfffd;
    puVar14 = puVar14 + 1;
  } while (iVar12 != 0x100);
LAB_000ca778:
  iVar6 = 0;
  do {
    while( true ) {
      uVar13 = *puVar15;
      if ((((0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f)) && (0x1f < uVar13 - 0xd800)) &&
         (iVar12 = iVar8 + iVar6, uVar13 != 0xd87f)) break;
      iVar12 = iVar8 + iVar6;
      uVar1 = (undefined1)iVar6;
      iVar6 = iVar6 + 1;
      puVar15 = puVar15 + 1;
      *(undefined1 *)(iVar12 + 0x1410) = uVar1;
      if (iVar6 == 0x100) goto LAB_000ca7ec;
    }
    iVar6 = iVar6 + 1;
    puVar15 = puVar15 + 1;
    *(undefined1 *)(iVar12 + 0x1410) = 0xff;
  } while (iVar6 != 0x100);
LAB_000ca7ec:
  if (iStack_a4 == *piVar3) {
    return uStack_c0;
  }
  pcVar17 = *(code **)(puVar16 + 0x47d98);
  iVar8 = iStack_a4;
  (*pcVar17)();
  if (iVar8 == 0) {
    return *(int *)(pcVar17 + 0x469f0) + -0x5764;
  }
                    /* WARNING: Could not recover jumptable at 0x000ca924. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  iVar8 = (**(code **)(pcVar17 + 0x475a4))();
  return iVar8;
}



uint wc_to_mb(int param_1,int *param_2,undefined4 *param_3,int param_4,undefined4 *param_5,
             int param_6,char *param_7,undefined4 *param_8)

{
  undefined1 uVar1;
  undefined *puVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  char *pcVar6;
  int iVar7;
  undefined4 *puVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  uint *puVar12;
  undefined4 *unaff_s4;
  undefined4 unaff_s5;
  int *unaff_s6;
  uint *puVar13;
  undefined *puVar14;
  code *pcVar15;
  int local_resc;
  uint uStack_c0;
  undefined1 *puStack_b4;
  undefined4 uStack_b0;
  uint uStack_ac;
  undefined1 auStack_a8 [4];
  int iStack_a4;
  uint uStack_a0;
  undefined *puStack_9c;
  int iStack_98;
  undefined4 *puStack_94;
  undefined4 *puStack_90;
  undefined4 uStack_8c;
  int *piStack_88;
  undefined4 *puStack_84;
  int local_68;
  undefined4 *local_4c [2];
  undefined4 local_44;
  undefined4 local_40;
  int aiStack_3c [4];
  int local_2c;
  
  puVar2 = PTR___stack_chk_guard_00112630;
  local_2c = *(int *)PTR___stack_chk_guard_00112630;
  if (param_8 != (undefined4 *)0x0) {
    *param_8 = 0;
  }
  puVar8 = param_3;
  iVar7 = param_4;
  local_resc = param_4;
  local_4c[0] = param_3;
  if (param_1 == 0xffff) {
    local_44 = 0;
    local_40 = 0;
    if (param_4 < 1) {
LAB_000ca51c:
      uVar11 = 0;
    }
    else {
      uVar11 = 0;
      unaff_s6 = aiStack_3c;
      unaff_s5 = 0xffffffff;
      do {
        param_2 = (int *)*local_4c[0];
        puVar8 = &local_44;
        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);
        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))
        break;
        param_2 = unaff_s6;
        puVar8 = unaff_s4;
        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);
        uVar11 = uVar11 + (int)unaff_s4;
        local_4c[0] = local_4c[0] + 1;
        local_resc = local_resc + -1;
      } while (0 < local_resc);
    }
  }
  else if (param_1 == 0) {
    uVar11 = 0;
    if (0 < param_4) {
      if (param_6 < 1) goto LAB_000ca51c;
      uVar11 = 0;
      do {
        param_2 = (int *)*param_3;
        pcVar6 = (char *)((int)param_5 + uVar11);
        if (param_2 + -0x3600 < (int *)0x100) {
          uVar11 = uVar11 + 1;
          *pcVar6 = (char)param_2;
        }
        else if (param_7 != (char *)0x0) {
          param_2 = (int *)(int)*param_7;
          uVar11 = uVar11 + 1;
          *pcVar6 = *param_7;
        }
        puVar8 = (undefined4 *)0xffff2800;
        local_resc = param_4 + -1;
        if (param_4 + -1 == 0) break;
        param_4 = param_4 + -1;
        param_3 = param_3 + 1;
        local_resc = param_4;
      } while ((int)uVar11 < param_6);
    }
  }
  else {
    param_2 = &local_resc;
    puVar8 = param_5;
    iVar7 = param_6;
    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);
    local_68 = param_1;
  }
  if (local_2c == *(int *)puVar2) {
    return uVar11;
  }
  iVar9 = local_2c;
  puVar14 = PTR___stack_chk_fail_001122c8;
  (*(code *)PTR___stack_chk_fail_001122c8)();
  piVar3 = *(int **)(puVar14 + 0x48100);
  iStack_98 = param_6;
  puStack_9c = puVar2;
  puStack_94 = param_5;
  *(undefined4 *)(iVar9 + 8) = 0xffffffff;
  *(undefined4 *)(iVar9 + 0xc) = 0;
  iStack_a4 = *piVar3;
  uStack_a0 = uVar11;
  puStack_90 = unaff_s4;
  uStack_8c = unaff_s5;
  piStack_88 = unaff_s6;
  puStack_84 = &local_44;
  if (puVar8 != (undefined4 *)0x0) {
    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);
    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||
         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),
          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||
        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),
         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&
       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {
      uStack_c0 = 0;
      iVar4 = 0x37;
      *(undefined4 *)(iVar9 + 0xc) = 0x37;
      goto LAB_000ca5d4;
    }
    iVar4 = *(int *)(iVar9 + 0xc);
    if (iVar4 != 0) {
      uStack_c0 = 0;
      goto LAB_000ca5d4;
    }
  }
  iVar4 = 0x37;
  if (param_2 != (int *)0x0) {
    if (*(char *)param_2 == '\0') {
      iVar4 = 0x37;
    }
    else {
      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);
      if (iVar4 == 0) {
        uStack_c0 = (uint)(iVar7 == 0);
        *(int *)(iVar9 + 0xc) = iVar7;
        iVar4 = iVar7;
        goto LAB_000ca5d4;
      }
    }
  }
  *(int *)(iVar9 + 0xc) = iVar4;
  uStack_c0 = 0;
LAB_000ca5d4:
  puVar13 = (uint *)(iVar9 + 0x410);
  uVar11 = 0;
  iVar7 = *(int *)(puVar14 + 0x46dc4);
  puVar12 = puVar13;
  while( true ) {
    auStack_a8[0] = (undefined1)uVar11;
    uStack_b0 = 1;
    if (iVar4 == 0) {
      *puVar12 = uVar11 | 0xd800;
    }
    else {
      puStack_b4 = auStack_a8;
      iVar4 = (**(code **)(puVar14 + 0x47970))
                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);
      if (iVar4 == 1) {
        *puVar12 = uStack_ac;
      }
      else {
        *puVar12 = 0xfffd;
      }
    }
    if (uVar11 == 0xff) break;
    puVar12 = puVar12 + 1;
    uVar11 = uVar11 + 1;
    iVar4 = *(int *)(iVar9 + 0xc);
  }
  puVar8 = (undefined4 *)(iVar9 + 0xc10);
  uVar11 = 0;
  iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750;
  if (local_68 == 3) {
    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;
  }
  while( true ) {
    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {
      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);
      puVar8 = puVar8 + 1;
      uVar11 = uVar10;
    }
    *puVar8 = puVar8[-0x200];
    if (uVar10 == 0x100) break;
    puVar8 = puVar8 + 1;
    uVar11 = uVar10;
  }
  iVar4 = 0;
  puVar12 = (uint *)(iVar9 + 0x10);
  do {
    while( true ) {
      auStack_a8[0] = (undefined1)iVar4;
      uStack_b0 = 1;
      puStack_b4 = auStack_a8;
      iVar5 = (**(code **)(puVar14 + 0x47970))
                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);
      if (iVar5 != 1) break;
      iVar4 = iVar4 + 1;
      *puVar12 = uStack_ac;
      puVar12 = puVar12 + 1;
      if (iVar4 == 0x100) goto LAB_000ca778;
    }
    iVar4 = iVar4 + 1;
    *puVar12 = 0xfffd;
    puVar12 = puVar12 + 1;
  } while (iVar4 != 0x100);
LAB_000ca778:
  iVar7 = 0;
  do {
    while( true ) {
      uVar11 = *puVar13;
      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&
         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;
      iVar4 = iVar9 + iVar7;
      uVar1 = (undefined1)iVar7;
      iVar7 = iVar7 + 1;
      puVar13 = puVar13 + 1;
      *(undefined1 *)(iVar4 + 0x1410) = uVar1;
      if (iVar7 == 0x100) goto LAB_000ca7ec;
    }
    iVar7 = iVar7 + 1;
    puVar13 = puVar13 + 1;
    *(undefined1 *)(iVar4 + 0x1410) = 0xff;
  } while (iVar7 != 0x100);
LAB_000ca7ec:
  if (iStack_a4 == *piVar3) {
    return uStack_c0;
  }
  pcVar15 = *(code **)(puVar14 + 0x47d98);
  iVar7 = iStack_a4;
  (*pcVar15)();
  if (iVar7 == 0) {
    return *(int *)(pcVar15 + 0x469f0) - 0x5764;
  }
                    /* WARNING: Could not recover jumptable at 0x000ca924. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  uVar11 = (**(code **)(pcVar15 + 0x475a4))();
  return uVar11;
}


lui gp,0x5
addiu gp,gp,-0x1074
addu gp,gp,t9
addiu sp,sp,-0x78
or v0,a0,zero
lw v1,0x94(sp)
sw s1,0x58(sp)
lw s1,-0x6c80(gp)
lw t0,0x90(sp)
sw gp,0x20(sp)
sw s3,0x60(sp)
sw s2,0x5c(sp)
sw ra,0x74(sp)
sw s7,0x70(sp)
sw s6,0x6c(sp)
sw s5,0x68(sp)
sw s4,0x64(sp)
sw s0,0x54(sp)
sw a2,0x2c(sp)
sw a3,0x84(sp)
lw a0,0x0(s1)
lw s3,0x88(sp)
lw s2,0x8c(sp)
sw a0,0x4c(sp)
beq v1,zero,0x000ca390
_nop
sw zero,0x0(v1)
ori v1,zero,0xffff
beq v0,v1,0x000ca48c
_addiu s7,sp,0x34
bne v0,zero,0x000ca458
_lw t9,-0x7570(gp)
lw v0,0x84(sp)
blez v0,0x000ca41c
_or s0,zero,zero
blez s2,0x000ca51c
_lw a0,0x2c(sp)
lui a2,0xffff
or s0,zero,zero
b 0x000ca3e8
_addiu a2,a2,0x2800
addiu s0,s0,0x1
sb a1,0x0(v1)
addiu v0,v0,-0x1
beq v0,zero,0x000ca41c
_sw v0,0x84(sp)
slt v1,s0,s2
beq v1,zero,0x000ca41c
_addiu a0,a0,0x4
lw a1,0x0(a0)
addu v1,a1,a2
sltiu v1,v1,0x100
bne v1,zero,0x000ca3c8
_addu v1,s3,s0
beq t0,zero,0x000ca3d0
_nop
lb a1,0x0(t0)
addiu v0,v0,-0x1
addiu s0,s0,0x1
sb a1,0x0(v1)
bne v0,zero,0x000ca3dc
_sw v0,0x84(sp)
lw a0,0x4c(sp)
or v0,s0,zero
lw v1,0x0(s1)
bne a0,v1,0x000ca524
_lw ra,0x74(sp)
lw s7,0x70(sp)
lw s6,0x6c(sp)
lw s5,0x68(sp)
lw s4,0x64(sp)
lw s3,0x60(sp)
lw s2,0x5c(sp)
lw s1,0x58(sp)
lw s0,0x54(sp)
jr ra
_addiu sp,sp,0x78
sltu v1,zero,t0
addiu a1,sp,0x84
sw v1,0x1c(sp)
addiu a0,sp,0x2c
sw t0,0x18(sp)
sw zero,0x14(sp)
or a3,s2,zero
sw v0,0x10(sp)
jalr t9
_or a2,s3,zero
lw gp,0x20(sp)
b 0x000ca41c
_or s0,v0,zero
lw v0,0x84(sp)
sw zero,0x34(sp)
blez v0,0x000ca51c
_sw zero,0x4(s7)
lw v0,0x2c(sp)
or s0,zero,zero
addiu s6,sp,0x3c
b 0x000ca4f4
_li s5,-0x1
subu v0,s0,s2
slt v0,v0,s4
bne v0,zero,0x000ca41c
_lw t9,-0x6d44(gp)
addu a0,s3,s0
or a2,s4,zero
jalr t9
_or a1,s6,zero
addu s0,s0,s4
lw v0,0x2c(sp)
lw v1,0x84(sp)
lw gp,0x20(sp)
addiu v0,v0,0x4
addiu v1,v1,-0x1
sw v0,0x2c(sp)
blez v1,0x000ca41c
_sw v1,0x84(sp)
lw t9,-0x6f84(gp)
or a2,s7,zero
lw a1,0x0(v0)
jalr t9
_or a0,s6,zero
lw gp,0x20(sp)
bne v0,s5,0x000ca4b0
_or s4,v0,zero
b 0x000ca41c
_nop
b 0x000ca41c
_or s0,zero,zero
lw t9,-0x6fe8(gp)
jalr t9
_nop
(translation_unit "uint wc_to_mb(int param_1,int *param_2,undefined4 *param_3,int param_4,undefined4 *param_5,\n             int param_6,char *param_7,undefined4 *param_8)\n\n{\n  undefined1 uVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *unaff_s4;\n  undefined4 unaff_s5;\n  int *unaff_s6;\n  uint *puVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int local_resc;\n  uint uStack_c0;\n  undefined1 *puStack_b4;\n  undefined4 uStack_b0;\n  uint uStack_ac;\n  undefined1 auStack_a8 [4];\n  int iStack_a4;\n  uint uStack_a0;\n  undefined *puStack_9c;\n  int iStack_98;\n  undefined4 *puStack_94;\n  undefined4 *puStack_90;\n  undefined4 uStack_8c;\n  int *piStack_88;\n  undefined4 *puStack_84;\n  int local_68;\n  undefined4 *local_4c [2];\n  undefined4 local_44;\n  undefined4 local_40;\n  int aiStack_3c [4];\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  if (param_8 != (undefined4 *)0x0) {\n    *param_8 = 0;\n  }\n  puVar8 = param_3;\n  iVar7 = param_4;\n  local_resc = param_4;\n  local_4c[0] = param_3;\n  if (param_1 == 0xffff) {\n    local_44 = 0;\n    local_40 = 0;\n    if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }\n  if (local_2c == *(int *)puVar2) {\n    return uVar11;\n  }\n  iVar9 = local_2c;\n  puVar14 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar3 = *(int **)(puVar14 + 0x48100);\n  iStack_98 = param_6;\n  puStack_9c = puVar2;\n  puStack_94 = param_5;\n  *(undefined4 *)(iVar9 + 8) = 0xffffffff;\n  *(undefined4 *)(iVar9 + 0xc) = 0;\n  iStack_a4 = *piVar3;\n  uStack_a0 = uVar11;\n  puStack_90 = unaff_s4;\n  uStack_8c = unaff_s5;\n  piStack_88 = unaff_s6;\n  puStack_84 = &local_44;\n  if (puVar8 != (undefined4 *)0x0) {\n    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);\n    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar4 = *(int *)(iVar9 + 0xc);\n    if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }\n  iVar4 = 0x37;\n  if (param_2 != (int *)0x0) {\n    if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }\n  }\n  *(int *)(iVar9 + 0xc) = iVar4;\n  uStack_c0 = 0;\nLAB_000ca5d4:\n  puVar13 = (uint *)(iVar9 + 0x410);\n  uVar11 = 0;\n  iVar7 = *(int *)(puVar14 + 0x46dc4);\n  puVar12 = puVar13;\n  while( true ) {\n    auStack_a8[0] = (undefined1)uVar11;\n    uStack_b0 = 1;\n    if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }\n    if (uVar11 == 0xff) break;\n    puVar12 = puVar12 + 1;\n    uVar11 = uVar11 + 1;\n    iVar4 = *(int *)(iVar9 + 0xc);\n  }\n  puVar8 = (undefined4 *)(iVar9 + 0xc10);\n  uVar11 = 0;\n  iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750;\n  if (local_68 == 3) {\n    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;\n  }\n  while( true ) {\n    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }\n    *puVar8 = puVar8[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar8 = puVar8 + 1;\n    uVar11 = uVar10;\n  }\n  iVar4 = 0;\n  puVar12 = (uint *)(iVar9 + 0x10);\n  do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }\n    iVar4 = iVar4 + 1;\n    *puVar12 = 0xfffd;\n    puVar12 = puVar12 + 1;\n  } while (iVar4 != 0x100);\nLAB_000ca778:\n  iVar7 = 0;\n  do {\n    while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar7 = iVar7 + 1;\n    puVar13 = puVar13 + 1;\n    *(undefined1 *)(iVar4 + 0x1410) = 0xff;\n  } while (iVar7 != 0x100);\nLAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x47d98);\n  iVar7 = iStack_a4;\n  (*pcVar15)();\n  if (iVar7 == 0) {\n    return *(int *)(pcVar15 + 0x469f0) - 0x5764;\n  }\n                    /* WARNING: Could not recover jumptable at 0x000ca924. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  uVar11 = (**(code **)(pcVar15 + 0x475a4))();\n  return uVar11;\n}\n\n" (function_definition "uint wc_to_mb(int param_1,int *param_2,undefined4 *param_3,int param_4,undefined4 *param_5,\n             int param_6,char *param_7,undefined4 *param_8)\n\n{\n  undefined1 uVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *unaff_s4;\n  undefined4 unaff_s5;\n  int *unaff_s6;\n  uint *puVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int local_resc;\n  uint uStack_c0;\n  undefined1 *puStack_b4;\n  undefined4 uStack_b0;\n  uint uStack_ac;\n  undefined1 auStack_a8 [4];\n  int iStack_a4;\n  uint uStack_a0;\n  undefined *puStack_9c;\n  int iStack_98;\n  undefined4 *puStack_94;\n  undefined4 *puStack_90;\n  undefined4 uStack_8c;\n  int *piStack_88;\n  undefined4 *puStack_84;\n  int local_68;\n  undefined4 *local_4c [2];\n  undefined4 local_44;\n  undefined4 local_40;\n  int aiStack_3c [4];\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  if (param_8 != (undefined4 *)0x0) {\n    *param_8 = 0;\n  }\n  puVar8 = param_3;\n  iVar7 = param_4;\n  local_resc = param_4;\n  local_4c[0] = param_3;\n  if (param_1 == 0xffff) {\n    local_44 = 0;\n    local_40 = 0;\n    if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }\n  if (local_2c == *(int *)puVar2) {\n    return uVar11;\n  }\n  iVar9 = local_2c;\n  puVar14 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar3 = *(int **)(puVar14 + 0x48100);\n  iStack_98 = param_6;\n  puStack_9c = puVar2;\n  puStack_94 = param_5;\n  *(undefined4 *)(iVar9 + 8) = 0xffffffff;\n  *(undefined4 *)(iVar9 + 0xc) = 0;\n  iStack_a4 = *piVar3;\n  uStack_a0 = uVar11;\n  puStack_90 = unaff_s4;\n  uStack_8c = unaff_s5;\n  piStack_88 = unaff_s6;\n  puStack_84 = &local_44;\n  if (puVar8 != (undefined4 *)0x0) {\n    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);\n    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar4 = *(int *)(iVar9 + 0xc);\n    if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }\n  iVar4 = 0x37;\n  if (param_2 != (int *)0x0) {\n    if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }\n  }\n  *(int *)(iVar9 + 0xc) = iVar4;\n  uStack_c0 = 0;\nLAB_000ca5d4:\n  puVar13 = (uint *)(iVar9 + 0x410);\n  uVar11 = 0;\n  iVar7 = *(int *)(puVar14 + 0x46dc4);\n  puVar12 = puVar13;\n  while( true ) {\n    auStack_a8[0] = (undefined1)uVar11;\n    uStack_b0 = 1;\n    if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }\n    if (uVar11 == 0xff) break;\n    puVar12 = puVar12 + 1;\n    uVar11 = uVar11 + 1;\n    iVar4 = *(int *)(iVar9 + 0xc);\n  }\n  puVar8 = (undefined4 *)(iVar9 + 0xc10);\n  uVar11 = 0;\n  iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750;\n  if (local_68 == 3) {\n    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;\n  }\n  while( true ) {\n    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }\n    *puVar8 = puVar8[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar8 = puVar8 + 1;\n    uVar11 = uVar10;\n  }\n  iVar4 = 0;\n  puVar12 = (uint *)(iVar9 + 0x10);\n  do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }\n    iVar4 = iVar4 + 1;\n    *puVar12 = 0xfffd;\n    puVar12 = puVar12 + 1;\n  } while (iVar4 != 0x100);\nLAB_000ca778:\n  iVar7 = 0;\n  do {\n    while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar7 = iVar7 + 1;\n    puVar13 = puVar13 + 1;\n    *(undefined1 *)(iVar4 + 0x1410) = 0xff;\n  } while (iVar7 != 0x100);\nLAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x47d98);\n  iVar7 = iStack_a4;\n  (*pcVar15)();\n  if (iVar7 == 0) {\n    return *(int *)(pcVar15 + 0x469f0) - 0x5764;\n  }\n                    /* WARNING: Could not recover jumptable at 0x000ca924. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  uVar11 = (**(code **)(pcVar15 + 0x475a4))();\n  return uVar11;\n}" type_identifier (function_declarator "wc_to_mb(int param_1,int *param_2,undefined4 *param_3,int param_4,undefined4 *param_5,\n             int param_6,char *param_7,undefined4 *param_8)" identifier (parameter_list "(int param_1,int *param_2,undefined4 *param_3,int param_4,undefined4 *param_5,\n             int param_6,char *param_7,undefined4 *param_8)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "char *param_7" primitive_type (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "undefined4 *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) ))) (compound_statement "{\n  undefined1 uVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *unaff_s4;\n  undefined4 unaff_s5;\n  int *unaff_s6;\n  uint *puVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int local_resc;\n  uint uStack_c0;\n  undefined1 *puStack_b4;\n  undefined4 uStack_b0;\n  uint uStack_ac;\n  undefined1 auStack_a8 [4];\n  int iStack_a4;\n  uint uStack_a0;\n  undefined *puStack_9c;\n  int iStack_98;\n  undefined4 *puStack_94;\n  undefined4 *puStack_90;\n  undefined4 uStack_8c;\n  int *piStack_88;\n  undefined4 *puStack_84;\n  int local_68;\n  undefined4 *local_4c [2];\n  undefined4 local_44;\n  undefined4 local_40;\n  int aiStack_3c [4];\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  if (param_8 != (undefined4 *)0x0) {\n    *param_8 = 0;\n  }\n  puVar8 = param_3;\n  iVar7 = param_4;\n  local_resc = param_4;\n  local_4c[0] = param_3;\n  if (param_1 == 0xffff) {\n    local_44 = 0;\n    local_40 = 0;\n    if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }\n  if (local_2c == *(int *)puVar2) {\n    return uVar11;\n  }\n  iVar9 = local_2c;\n  puVar14 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar3 = *(int **)(puVar14 + 0x48100);\n  iStack_98 = param_6;\n  puStack_9c = puVar2;\n  puStack_94 = param_5;\n  *(undefined4 *)(iVar9 + 8) = 0xffffffff;\n  *(undefined4 *)(iVar9 + 0xc) = 0;\n  iStack_a4 = *piVar3;\n  uStack_a0 = uVar11;\n  puStack_90 = unaff_s4;\n  uStack_8c = unaff_s5;\n  piStack_88 = unaff_s6;\n  puStack_84 = &local_44;\n  if (puVar8 != (undefined4 *)0x0) {\n    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);\n    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar4 = *(int *)(iVar9 + 0xc);\n    if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }\n  iVar4 = 0x37;\n  if (param_2 != (int *)0x0) {\n    if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }\n  }\n  *(int *)(iVar9 + 0xc) = iVar4;\n  uStack_c0 = 0;\nLAB_000ca5d4:\n  puVar13 = (uint *)(iVar9 + 0x410);\n  uVar11 = 0;\n  iVar7 = *(int *)(puVar14 + 0x46dc4);\n  puVar12 = puVar13;\n  while( true ) {\n    auStack_a8[0] = (undefined1)uVar11;\n    uStack_b0 = 1;\n    if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }\n    if (uVar11 == 0xff) break;\n    puVar12 = puVar12 + 1;\n    uVar11 = uVar11 + 1;\n    iVar4 = *(int *)(iVar9 + 0xc);\n  }\n  puVar8 = (undefined4 *)(iVar9 + 0xc10);\n  uVar11 = 0;\n  iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750;\n  if (local_68 == 3) {\n    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;\n  }\n  while( true ) {\n    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }\n    *puVar8 = puVar8[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar8 = puVar8 + 1;\n    uVar11 = uVar10;\n  }\n  iVar4 = 0;\n  puVar12 = (uint *)(iVar9 + 0x10);\n  do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }\n    iVar4 = iVar4 + 1;\n    *puVar12 = 0xfffd;\n    puVar12 = puVar12 + 1;\n  } while (iVar4 != 0x100);\nLAB_000ca778:\n  iVar7 = 0;\n  do {\n    while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar7 = iVar7 + 1;\n    puVar13 = puVar13 + 1;\n    *(undefined1 *)(iVar4 + 0x1410) = 0xff;\n  } while (iVar7 != 0x100);\nLAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x47d98);\n  iVar7 = iStack_a4;\n  (*pcVar15)();\n  if (iVar7 == 0) {\n    return *(int *)(pcVar15 + 0x469f0) - 0x5764;\n  }\n                    /* WARNING: Could not recover jumptable at 0x000ca924. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  uVar11 = (**(code **)(pcVar15 + 0x475a4))();\n  return uVar11;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "int *unaff_s6;" primitive_type (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "int local_resc;" primitive_type identifier ;) (declaration "uint uStack_c0;" type_identifier identifier ;) (declaration "undefined1 *puStack_b4;" type_identifier (pointer_declarator "*puStack_b4" * identifier) ;) (declaration "undefined4 uStack_b0;" type_identifier identifier ;) (declaration "uint uStack_ac;" type_identifier identifier ;) (declaration "undefined1 auStack_a8 [4];" type_identifier (array_declarator "auStack_a8 [4]" identifier [ number_literal ]) ;) (declaration "int iStack_a4;" primitive_type identifier ;) (declaration "uint uStack_a0;" type_identifier identifier ;) (declaration "undefined *puStack_9c;" type_identifier (pointer_declarator "*puStack_9c" * identifier) ;) (declaration "int iStack_98;" primitive_type identifier ;) (declaration "undefined4 *puStack_94;" type_identifier (pointer_declarator "*puStack_94" * identifier) ;) (declaration "undefined4 *puStack_90;" type_identifier (pointer_declarator "*puStack_90" * identifier) ;) (declaration "undefined4 uStack_8c;" type_identifier identifier ;) (declaration "int *piStack_88;" primitive_type (pointer_declarator "*piStack_88" * identifier) ;) (declaration "undefined4 *puStack_84;" type_identifier (pointer_declarator "*puStack_84" * identifier) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined4 *local_4c [2];" type_identifier (pointer_declarator "*local_4c [2]" * (array_declarator "local_4c [2]" identifier [ number_literal ])) ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "int aiStack_3c [4];" primitive_type (array_declarator "aiStack_3c [4]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00112630;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00112630" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00112630;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00112630" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00112630" * (cast_expression "(int *)PTR___stack_chk_guard_00112630" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_8 != (undefined4 *)0x0) {\n    *param_8 = 0;\n  }" if (parenthesized_expression "(param_8 != (undefined4 *)0x0)" ( (binary_expression "param_8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_8 = 0;\n  }" { (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) })) (expression_statement "puVar8 = param_3;" (assignment_expression "puVar8 = param_3" identifier = identifier) ;) (expression_statement "iVar7 = param_4;" (assignment_expression "iVar7 = param_4" identifier = identifier) ;) (expression_statement "local_resc = param_4;" (assignment_expression "local_resc = param_4" identifier = identifier) ;) (expression_statement "local_4c[0] = param_3;" (assignment_expression "local_4c[0] = param_3" (subscript_expression "local_4c[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_1 == 0xffff) {\n    local_44 = 0;\n    local_40 = 0;\n    if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" if (parenthesized_expression "(param_1 == 0xffff)" ( (binary_expression "param_1 == 0xffff" identifier == number_literal) )) (compound_statement "{\n    local_44 = 0;\n    local_40 = 0;\n    if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }" { (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (if_statement "if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }" if (parenthesized_expression "(param_4 < 1)" ( (binary_expression "param_4 < 1" identifier < number_literal) )) (compound_statement "{\nLAB_000ca51c:\n      uVar11 = 0;\n    }" { (labeled_statement "LAB_000ca51c:\n      uVar11 = 0;" statement_identifier : (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }" else (compound_statement "{\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "unaff_s6 = aiStack_3c;" (assignment_expression "unaff_s6 = aiStack_3c" identifier = identifier) ;) (expression_statement "unaff_s5 = 0xffffffff;" (assignment_expression "unaff_s5 = 0xffffffff" identifier = number_literal) ;) (do_statement "do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);" do (compound_statement "{\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      }" { (expression_statement "param_2 = (int *)*local_4c[0];" (assignment_expression "param_2 = (int *)*local_4c[0]" identifier = (cast_expression "(int *)*local_4c[0]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_4c[0]" * (subscript_expression "local_4c[0]" identifier [ number_literal ])))) ;) (expression_statement "puVar8 = &local_44;" (assignment_expression "puVar8 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);" (assignment_expression "unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_wcrtomb_0011232c)(unaff_s6)" (parenthesized_expression "(*(code *)PTR_wcrtomb_0011232c)" ( (pointer_expression "*(code *)PTR_wcrtomb_0011232c" * (cast_expression "(code *)PTR_wcrtomb_0011232c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s6)" ( identifier ))))) ;) (if_statement "if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;" if (parenthesized_expression "((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))" ( (binary_expression "(unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4)" (parenthesized_expression "(unaff_s4 == (undefined4 *)0xffffffff)" ( (binary_expression "unaff_s4 == (undefined4 *)0xffffffff" identifier == (cast_expression "(undefined4 *)0xffffffff" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((int)(uVar11 - param_6) < (int)unaff_s4)" ( (binary_expression "(int)(uVar11 - param_6) < (int)unaff_s4" (cast_expression "(int)(uVar11 - param_6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar11 - param_6)" ( (binary_expression "uVar11 - param_6" identifier - identifier) ))) < (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (break_statement "break;" break ;)) (expression_statement "param_2 = unaff_s6;" (assignment_expression "param_2 = unaff_s6" identifier = identifier) ;) (expression_statement "puVar8 = unaff_s4;" (assignment_expression "puVar8 = unaff_s4" identifier = identifier) ;) (expression_statement "(*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);" (call_expression "(*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11)" (parenthesized_expression "(*(code *)PTR_memcpy_0011256c)" ( (pointer_expression "*(code *)PTR_memcpy_0011256c" * (cast_expression "(code *)PTR_memcpy_0011256c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((int)param_5 + uVar11)" ( (binary_expression "(int)param_5 + uVar11" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) ;) (expression_statement "uVar11 = uVar11 + (int)unaff_s4;" (assignment_expression "uVar11 = uVar11 + (int)unaff_s4" identifier = (binary_expression "uVar11 + (int)unaff_s4" identifier + (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_4c[0] = local_4c[0] + 1;" (assignment_expression "local_4c[0] = local_4c[0] + 1" (subscript_expression "local_4c[0]" identifier [ number_literal ]) = (binary_expression "local_4c[0] + 1" (subscript_expression "local_4c[0]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_resc = local_resc + -1;" (assignment_expression "local_resc = local_resc + -1" identifier = (binary_expression "local_resc + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(0 < local_resc)" ( (binary_expression "0 < local_resc" number_literal < identifier) )) ;) }))) }) (else_clause "else if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" else (if_statement "if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }" if (parenthesized_expression "(0 < param_4)" ( (binary_expression "0 < param_4" number_literal < identifier) )) (compound_statement "{\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }" { (if_statement "if (param_6 < 1) goto LAB_000ca51c;" if (parenthesized_expression "(param_6 < 1)" ( (binary_expression "param_6 < 1" identifier < number_literal) )) (goto_statement "goto LAB_000ca51c;" goto statement_identifier ;)) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);" do (compound_statement "{\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      }" { (expression_statement "param_2 = (int *)*param_3;" (assignment_expression "param_2 = (int *)*param_3" identifier = (cast_expression "(int *)*param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (expression_statement "pcVar6 = (char *)((int)param_5 + uVar11);" (assignment_expression "pcVar6 = (char *)((int)param_5 + uVar11)" identifier = (cast_expression "(char *)((int)param_5 + uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + uVar11)" ( (binary_expression "(int)param_5 + uVar11" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }" if (parenthesized_expression "(param_2 + -0x3600 < (int *)0x100)" ( (binary_expression "param_2 + -0x3600 < (int *)0x100" (binary_expression "param_2 + -0x3600" identifier + number_literal) < (cast_expression "(int *)0x100" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }" { (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar6 = (char)param_2;" (assignment_expression "*pcVar6 = (char)param_2" (pointer_expression "*pcVar6" * identifier) = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }" else (if_statement "if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }" if (parenthesized_expression "(param_7 != (char *)0x0)" ( (binary_expression "param_7 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }" { (expression_statement "param_2 = (int *)(int)*param_7;" (assignment_expression "param_2 = (int *)(int)*param_7" identifier = (cast_expression "(int *)(int)*param_7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*param_7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_7" * identifier)))) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar6 = *param_7;" (assignment_expression "*pcVar6 = *param_7" (pointer_expression "*pcVar6" * identifier) = (pointer_expression "*param_7" * identifier)) ;) })))) (expression_statement "puVar8 = (undefined4 *)0xffff2800;" (assignment_expression "puVar8 = (undefined4 *)0xffff2800" identifier = (cast_expression "(undefined4 *)0xffff2800" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_resc = param_4 + -1;" (assignment_expression "local_resc = param_4 + -1" identifier = (binary_expression "param_4 + -1" identifier + number_literal)) ;) (if_statement "if (param_4 + -1 == 0) break;" if (parenthesized_expression "(param_4 + -1 == 0)" ( (binary_expression "param_4 + -1 == 0" (binary_expression "param_4 + -1" identifier + number_literal) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_4 = param_4 + -1;" (assignment_expression "param_4 = param_4 + -1" identifier = (binary_expression "param_4 + -1" identifier + number_literal)) ;) (expression_statement "param_3 = param_3 + 1;" (assignment_expression "param_3 = param_3 + 1" identifier = (binary_expression "param_3 + 1" identifier + number_literal)) ;) (expression_statement "local_resc = param_4;" (assignment_expression "local_resc = param_4" identifier = identifier) ;) }) while (parenthesized_expression "((int)uVar11 < param_6)" ( (binary_expression "(int)uVar11 < param_6" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) })) }) (else_clause "else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" else (compound_statement "{\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" { (expression_statement "param_2 = &local_resc;" (assignment_expression "param_2 = &local_resc" identifier = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "puVar8 = param_5;" (assignment_expression "puVar8 = param_5" identifier = identifier) ;) (expression_statement "iVar7 = param_6;" (assignment_expression "iVar7 = param_6" identifier = identifier) ;) (expression_statement "uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);" (assignment_expression "uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c)" identifier = (call_expression "(*(code *)PTR_charset_from_unicode_00111d40)(local_4c)" (parenthesized_expression "(*(code *)PTR_charset_from_unicode_00111d40)" ( (pointer_expression "*(code *)PTR_charset_from_unicode_00111d40" * (cast_expression "(code *)PTR_charset_from_unicode_00111d40" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_4c)" ( identifier )))) ;) (expression_statement "local_68 = param_1;" (assignment_expression "local_68 = param_1" identifier = identifier) ;) }))))) (if_statement "if (local_2c == *(int *)puVar2) {\n    return uVar11;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar2)" ( (binary_expression "local_2c == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar11;\n  }" { (return_statement "return uVar11;" return identifier ;) })) (expression_statement "iVar9 = local_2c;" (assignment_expression "iVar9 = local_2c" identifier = identifier) ;) (expression_statement "puVar14 = PTR___stack_chk_fail_001122c8;" (assignment_expression "puVar14 = PTR___stack_chk_fail_001122c8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001122c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_001122c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001122c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001122c8" * (cast_expression "(code *)PTR___stack_chk_fail_001122c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar3 = *(int **)(puVar14 + 0x48100);" (assignment_expression "piVar3 = *(int **)(puVar14 + 0x48100)" identifier = (pointer_expression "*(int **)(puVar14 + 0x48100)" * (cast_expression "(int **)(puVar14 + 0x48100)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x48100)" ( (binary_expression "puVar14 + 0x48100" identifier + number_literal) ))))) ;) (expression_statement "iStack_98 = param_6;" (assignment_expression "iStack_98 = param_6" identifier = identifier) ;) (expression_statement "puStack_9c = puVar2;" (assignment_expression "puStack_9c = puVar2" identifier = identifier) ;) (expression_statement "puStack_94 = param_5;" (assignment_expression "puStack_94 = param_5" identifier = identifier) ;) (expression_statement "*(undefined4 *)(iVar9 + 8) = 0xffffffff;" (assignment_expression "*(undefined4 *)(iVar9 + 8) = 0xffffffff" (pointer_expression "*(undefined4 *)(iVar9 + 8)" * (cast_expression "(undefined4 *)(iVar9 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar9 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xc)" * (cast_expression "(undefined4 *)(iVar9 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iStack_a4 = *piVar3;" (assignment_expression "iStack_a4 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "uStack_a0 = uVar11;" (assignment_expression "uStack_a0 = uVar11" identifier = identifier) ;) (expression_statement "puStack_90 = unaff_s4;" (assignment_expression "puStack_90 = unaff_s4" identifier = identifier) ;) (expression_statement "uStack_8c = unaff_s5;" (assignment_expression "uStack_8c = unaff_s5" identifier = identifier) ;) (expression_statement "piStack_88 = unaff_s6;" (assignment_expression "piStack_88 = unaff_s6" identifier = identifier) ;) (expression_statement "puStack_84 = &local_44;" (assignment_expression "puStack_84 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (if_statement "if (puVar8 != (undefined4 *)0x0) {\n    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);\n    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar4 = *(int *)(iVar9 + 0xc);\n    if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }" if (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);\n    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar4 = *(int *)(iVar9 + 0xc);\n    if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }" { (expression_statement "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);" (assignment_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780)" identifier = (cast_expression "(char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780)" (parenthesized_expression "(**(code **)(puVar14 + 0x47e74))" ( (pointer_expression "**(code **)(puVar14 + 0x47e74)" * (pointer_expression "*(code **)(puVar14 + 0x47e74)" * (cast_expression "(code **)(puVar14 + 0x47e74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x47e74)" ( (binary_expression "puVar14 + 0x47e74" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar14 + 0x46dc4) + -0x5780)" ( (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x5780" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" * (cast_expression "(int *)(puVar14 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46dc4)" ( (binary_expression "puVar14 + 0x46dc4" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }" if (parenthesized_expression "(((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0))" ( (binary_expression "((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)" (parenthesized_expression "((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))))" ( (binary_expression "(((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))" (parenthesized_expression "(((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))))" ( (binary_expression "((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))" (parenthesized_expression "((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))" ( (binary_expression "(pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (parenthesized_expression "(pcVar6 != (char *)0x0)" ( (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" ( (comma_expression "iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46db8)" identifier = (pointer_expression "*(int *)(puVar14 + 0x46db8)" * (cast_expression "(int *)(puVar14 + 0x46db8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46db8)" ( (binary_expression "puVar14 + 0x46db8" identifier + number_literal) ))))) , (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence '))) ))) )) || (parenthesized_expression "((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))" ( (parenthesized_expression "(pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))" ( (comma_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (assignment_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778)" identifier = (cast_expression "(char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778)" (parenthesized_expression "(**(code **)(puVar14 + 0x47e74))" ( (pointer_expression "**(code **)(puVar14 + 0x47e74)" * (pointer_expression "*(code **)(puVar14 + 0x47e74)" * (cast_expression "(code **)(puVar14 + 0x47e74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x47e74)" ( (binary_expression "puVar14 + 0x47e74" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar14 + 0x46dc4) + -0x5778)" ( (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x5778" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" * (cast_expression "(int *)(puVar14 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46dc4)" ( (binary_expression "puVar14 + 0x46dc4" identifier + number_literal) )))) + number_literal) ))))) , (binary_expression "pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" ( (comma_expression "iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46db8)" identifier = (pointer_expression "*(int *)(puVar14 + 0x46db8)" * (cast_expression "(int *)(puVar14 + 0x46db8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46db8)" ( (binary_expression "puVar14 + 0x46db8" identifier + number_literal) ))))) , (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence '))) )))) )) ))) )) || (parenthesized_expression "((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))" ( (parenthesized_expression "(pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))" ( (comma_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (assignment_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c)" identifier = (cast_expression "(char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c)" (parenthesized_expression "(**(code **)(puVar14 + 0x47e74))" ( (pointer_expression "**(code **)(puVar14 + 0x47e74)" * (pointer_expression "*(code **)(puVar14 + 0x47e74)" * (cast_expression "(code **)(puVar14 + 0x47e74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x47e74)" ( (binary_expression "puVar14 + 0x47e74" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar14 + 0x46dc4) + -0x576c)" ( (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x576c" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" * (cast_expression "(int *)(puVar14 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46dc4)" ( (binary_expression "puVar14 + 0x46dc4" identifier + number_literal) )))) + number_literal) ))))) , (binary_expression "pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" ( (comma_expression "iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46db8)" identifier = (pointer_expression "*(int *)(puVar14 + 0x46db8)" * (cast_expression "(int *)(puVar14 + 0x46db8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46db8)" ( (binary_expression "puVar14 + 0x46db8" identifier + number_literal) ))))) , (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence '))) )))) )) ))) )) && (parenthesized_expression "(iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)" ( (comma_expression "iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0" (assignment_expression "iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484)" identifier = (call_expression "(**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484)" (parenthesized_expression "(**(code **)(puVar14 + 0x48150))" ( (pointer_expression "**(code **)(puVar14 + 0x48150)" * (pointer_expression "*(code **)(puVar14 + 0x48150)" * (cast_expression "(code **)(puVar14 + 0x48150)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x48150)" ( (binary_expression "puVar14 + 0x48150" identifier + number_literal) ))))) )) (argument_list "(pcVar6,iVar4 + -0x484)" ( identifier , (binary_expression "iVar4 + -0x484" identifier + number_literal) )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }" { (expression_statement "uStack_c0 = 0;" (assignment_expression "uStack_c0 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = 0x37;" (assignment_expression "iVar4 = 0x37" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(iVar9 + 0xc) = 0x37;" (assignment_expression "*(undefined4 *)(iVar9 + 0xc) = 0x37" (pointer_expression "*(undefined4 *)(iVar9 + 0xc)" * (cast_expression "(undefined4 *)(iVar9 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_000ca5d4;" goto statement_identifier ;) })) (expression_statement "iVar4 = *(int *)(iVar9 + 0xc);" (assignment_expression "iVar4 = *(int *)(iVar9 + 0xc)" identifier = (pointer_expression "*(int *)(iVar9 + 0xc)" * (cast_expression "(int *)(iVar9 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }" { (expression_statement "uStack_c0 = 0;" (assignment_expression "uStack_c0 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000ca5d4;" goto statement_identifier ;) })) })) (expression_statement "iVar4 = 0x37;" (assignment_expression "iVar4 = 0x37" identifier = number_literal) ;) (if_statement "if (param_2 != (int *)0x0) {\n    if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }\n  }" if (parenthesized_expression "(param_2 != (int *)0x0)" ( (binary_expression "param_2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }\n  }" { (if_statement "if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }" if (parenthesized_expression "(*(char *)param_2 == '\0')" ( (binary_expression "*(char *)param_2 == '\0'" (pointer_expression "*(char *)param_2" * (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar4 = 0x37;\n    }" { (expression_statement "iVar4 = 0x37;" (assignment_expression "iVar4 = 0x37" identifier = number_literal) ;) }) (else_clause "else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }" else (compound_statement "{\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }" { (expression_statement "iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);" (assignment_expression "iVar4 = (**(code **)(puVar14 + 0x47974))(param_2)" identifier = (call_expression "(**(code **)(puVar14 + 0x47974))(param_2)" (parenthesized_expression "(**(code **)(puVar14 + 0x47974))" ( (pointer_expression "**(code **)(puVar14 + 0x47974)" * (pointer_expression "*(code **)(puVar14 + 0x47974)" * (cast_expression "(code **)(puVar14 + 0x47974)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x47974)" ( (binary_expression "puVar14 + 0x47974" identifier + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }" { (expression_statement "uStack_c0 = (uint)(iVar7 == 0);" (assignment_expression "uStack_c0 = (uint)(iVar7 == 0)" identifier = (call_expression "(uint)(iVar7 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )))) ;) (expression_statement "*(int *)(iVar9 + 0xc) = iVar7;" (assignment_expression "*(int *)(iVar9 + 0xc) = iVar7" (pointer_expression "*(int *)(iVar9 + 0xc)" * (cast_expression "(int *)(iVar9 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar4 = iVar7;" (assignment_expression "iVar4 = iVar7" identifier = identifier) ;) (goto_statement "goto LAB_000ca5d4;" goto statement_identifier ;) })) }))) })) (expression_statement "*(int *)(iVar9 + 0xc) = iVar4;" (assignment_expression "*(int *)(iVar9 + 0xc) = iVar4" (pointer_expression "*(int *)(iVar9 + 0xc)" * (cast_expression "(int *)(iVar9 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "uStack_c0 = 0;" (assignment_expression "uStack_c0 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000ca5d4:\n  puVar13 = (uint *)(iVar9 + 0x410);" statement_identifier : (expression_statement "puVar13 = (uint *)(iVar9 + 0x410);" (assignment_expression "puVar13 = (uint *)(iVar9 + 0x410)" identifier = (cast_expression "(uint *)(iVar9 + 0x410)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x410)" ( (binary_expression "iVar9 + 0x410" identifier + number_literal) )))) ;)) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = *(int *)(puVar14 + 0x46dc4);" (assignment_expression "iVar7 = *(int *)(puVar14 + 0x46dc4)" identifier = (pointer_expression "*(int *)(puVar14 + 0x46dc4)" * (cast_expression "(int *)(puVar14 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46dc4)" ( (binary_expression "puVar14 + 0x46dc4" identifier + number_literal) ))))) ;) (expression_statement "puVar12 = puVar13;" (assignment_expression "puVar12 = puVar13" identifier = identifier) ;) (while_statement "while( true ) {\n    auStack_a8[0] = (undefined1)uVar11;\n    uStack_b0 = 1;\n    if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }\n    if (uVar11 == 0xff) break;\n    puVar12 = puVar12 + 1;\n    uVar11 = uVar11 + 1;\n    iVar4 = *(int *)(iVar9 + 0xc);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    auStack_a8[0] = (undefined1)uVar11;\n    uStack_b0 = 1;\n    if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }\n    if (uVar11 == 0xff) break;\n    puVar12 = puVar12 + 1;\n    uVar11 = uVar11 + 1;\n    iVar4 = *(int *)(iVar9 + 0xc);\n  }" { (expression_statement "auStack_a8[0] = (undefined1)uVar11;" (assignment_expression "auStack_a8[0] = (undefined1)uVar11" (subscript_expression "auStack_a8[0]" identifier [ number_literal ]) = (cast_expression "(undefined1)uVar11" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uStack_b0 = 1;" (assignment_expression "uStack_b0 = 1" identifier = number_literal) ;) (if_statement "if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      *puVar12 = uVar11 | 0xd800;\n    }" { (expression_statement "*puVar12 = uVar11 | 0xd800;" (assignment_expression "*puVar12 = uVar11 | 0xd800" (pointer_expression "*puVar12" * identifier) = (binary_expression "uVar11 | 0xd800" identifier | number_literal)) ;) }) (else_clause "else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }" else (compound_statement "{\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }" { (expression_statement "puStack_b4 = auStack_a8;" (assignment_expression "puStack_b4 = auStack_a8" identifier = identifier) ;) (expression_statement "iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);" (assignment_expression "iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0)" identifier = (call_expression "(**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0)" (parenthesized_expression "(**(code **)(puVar14 + 0x47970))" ( (pointer_expression "**(code **)(puVar14 + 0x47970)" * (pointer_expression "*(code **)(puVar14 + 0x47970)" * (cast_expression "(code **)(puVar14 + 0x47970)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x47970)" ( (binary_expression "puVar14 + 0x47970" identifier + number_literal) ))))) )) (argument_list "(&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0)" ( (pointer_expression "&puStack_b4" & identifier) , (pointer_expression "&uStack_b0" & identifier) , (pointer_expression "&uStack_ac" & identifier) , number_literal , identifier , number_literal , (binary_expression "iVar7 + -0x7b5c" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }" if (parenthesized_expression "(iVar4 == 1)" ( (binary_expression "iVar4 == 1" identifier == number_literal) )) (compound_statement "{\n        *puVar12 = uStack_ac;\n      }" { (expression_statement "*puVar12 = uStack_ac;" (assignment_expression "*puVar12 = uStack_ac" (pointer_expression "*puVar12" * identifier) = identifier) ;) }) (else_clause "else {\n        *puVar12 = 0xfffd;\n      }" else (compound_statement "{\n        *puVar12 = 0xfffd;\n      }" { (expression_statement "*puVar12 = 0xfffd;" (assignment_expression "*puVar12 = 0xfffd" (pointer_expression "*puVar12" * identifier) = number_literal) ;) }))) }))) (if_statement "if (uVar11 == 0xff) break;" if (parenthesized_expression "(uVar11 == 0xff)" ( (binary_expression "uVar11 == 0xff" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = *(int *)(iVar9 + 0xc);" (assignment_expression "iVar4 = *(int *)(iVar9 + 0xc)" identifier = (pointer_expression "*(int *)(iVar9 + 0xc)" * (cast_expression "(int *)(iVar9 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) ))))) ;) })) (expression_statement "puVar8 = (undefined4 *)(iVar9 + 0xc10);" (assignment_expression "puVar8 = (undefined4 *)(iVar9 + 0xc10)" identifier = (cast_expression "(undefined4 *)(iVar9 + 0xc10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc10)" ( (binary_expression "iVar9 + 0xc10" identifier + number_literal) )))) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750;" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750" identifier = (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x5750" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" * (cast_expression "(int *)(puVar14 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46dc4)" ( (binary_expression "puVar14 + 0x46dc4" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (local_68 == 3) {\n    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;\n  }" if (parenthesized_expression "(local_68 == 3)" ( (binary_expression "local_68 == 3" identifier == number_literal) )) (compound_statement "{\n    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;\n  }" { (expression_statement "iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0" identifier = (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x56d0" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" * (cast_expression "(int *)(puVar14 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46dc4)" ( (binary_expression "puVar14 + 0x46dc4" identifier + number_literal) )))) + number_literal)) ;) })) (while_statement "while( true ) {\n    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }\n    *puVar8 = puVar8[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar8 = puVar8 + 1;\n    uVar11 = uVar10;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }\n    *puVar8 = puVar8[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar8 = puVar8 + 1;\n    uVar11 = uVar10;\n  }" { (while_statement "while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }" while (parenthesized_expression "(uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20)" ( (comma_expression "uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20" (assignment_expression "uVar10 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) , (binary_expression "uVar11 - 0x5f < 0x20" (binary_expression "uVar11 - 0x5f" identifier - number_literal) < number_literal)) )) (compound_statement "{\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }" { (expression_statement "*puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);" (assignment_expression "*puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4)" (pointer_expression "*puVar8" * identifier) = (pointer_expression "*(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4)" * (cast_expression "(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + (uVar11 & 0x1f) * 4)" ( (binary_expression "iVar4 + (uVar11 & 0x1f) * 4" identifier + (binary_expression "(uVar11 & 0x1f) * 4" (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) )) * number_literal)) ))))) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) })) (expression_statement "*puVar8 = puVar8[-0x200];" (assignment_expression "*puVar8 = puVar8[-0x200]" (pointer_expression "*puVar8" * identifier) = (subscript_expression "puVar8[-0x200]" identifier [ number_literal ])) ;) (if_statement "if (uVar10 == 0x100) break;" if (parenthesized_expression "(uVar10 == 0x100)" ( (binary_expression "uVar10 == 0x100" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) })) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "puVar12 = (uint *)(iVar9 + 0x10);" (assignment_expression "puVar12 = (uint *)(iVar9 + 0x10)" identifier = (cast_expression "(uint *)(iVar9 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x10)" ( (binary_expression "iVar9 + 0x10" identifier + number_literal) )))) ;) (do_statement "do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }\n    iVar4 = iVar4 + 1;\n    *puVar12 = 0xfffd;\n    puVar12 = puVar12 + 1;\n  } while (iVar4 != 0x100);" do (compound_statement "{\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }\n    iVar4 = iVar4 + 1;\n    *puVar12 = 0xfffd;\n    puVar12 = puVar12 + 1;\n  }" { (while_statement "while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }" { (expression_statement "auStack_a8[0] = (undefined1)iVar4;" (assignment_expression "auStack_a8[0] = (undefined1)iVar4" (subscript_expression "auStack_a8[0]" identifier [ number_literal ]) = (cast_expression "(undefined1)iVar4" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uStack_b0 = 1;" (assignment_expression "uStack_b0 = 1" identifier = number_literal) ;) (expression_statement "puStack_b4 = auStack_a8;" (assignment_expression "puStack_b4 = auStack_a8" identifier = identifier) ;) (expression_statement "iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);" (assignment_expression "iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0)" identifier = (call_expression "(**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0)" (parenthesized_expression "(**(code **)(puVar14 + 0x47970))" ( (pointer_expression "**(code **)(puVar14 + 0x47970)" * (pointer_expression "*(code **)(puVar14 + 0x47970)" * (cast_expression "(code **)(puVar14 + 0x47970)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x47970)" ( (binary_expression "puVar14 + 0x47970" identifier + number_literal) ))))) )) (argument_list "(&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0)" ( (pointer_expression "&puStack_b4" & identifier) , (pointer_expression "&uStack_b0" & identifier) , (pointer_expression "&uStack_ac" & identifier) , number_literal , number_literal , number_literal , (binary_expression "iVar7 + -0x7b5c" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar5 != 1) break;" if (parenthesized_expression "(iVar5 != 1)" ( (binary_expression "iVar5 != 1" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar12 = uStack_ac;" (assignment_expression "*puVar12 = uStack_ac" (pointer_expression "*puVar12" * identifier) = identifier) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (if_statement "if (iVar4 == 0x100) goto LAB_000ca778;" if (parenthesized_expression "(iVar4 == 0x100)" ( (binary_expression "iVar4 == 0x100" identifier == number_literal) )) (goto_statement "goto LAB_000ca778;" goto statement_identifier ;)) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar12 = 0xfffd;" (assignment_expression "*puVar12 = 0xfffd" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0x100)" ( (binary_expression "iVar4 != 0x100" identifier != number_literal) )) ;) (labeled_statement "LAB_000ca778:\n  iVar7 = 0;" statement_identifier : (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;)) (do_statement "do {\n    while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar7 = iVar7 + 1;\n    puVar13 = puVar13 + 1;\n    *(undefined1 *)(iVar4 + 0x1410) = 0xff;\n  } while (iVar7 != 0x100);" do (compound_statement "{\n    while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar7 = iVar7 + 1;\n    puVar13 = puVar13 + 1;\n    *(undefined1 *)(iVar4 + 0x1410) = 0xff;\n  }" { (while_statement "while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }" { (expression_statement "uVar11 = *puVar13;" (assignment_expression "uVar11 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (if_statement "if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;" if (parenthesized_expression "((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f))" ( (binary_expression "(((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)" (parenthesized_expression "(((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800))" ( (binary_expression "((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)" (parenthesized_expression "((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f))" ( (binary_expression "(0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)" (parenthesized_expression "(0x1f < (int)uVar11)" ( (binary_expression "0x1f < (int)uVar11" number_literal < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(0x20 < uVar11 - 0x7f)" ( (binary_expression "0x20 < uVar11 - 0x7f" number_literal < (binary_expression "uVar11 - 0x7f" identifier - number_literal)) ))) )) && (parenthesized_expression "(0x1f < uVar11 - 0xd800)" ( (binary_expression "0x1f < uVar11 - 0xd800" number_literal < (binary_expression "uVar11 - 0xd800" identifier - number_literal)) ))) )) && (parenthesized_expression "(iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)" ( (comma_expression "iVar4 = iVar9 + iVar7, uVar11 != 0xd87f" (assignment_expression "iVar4 = iVar9 + iVar7" identifier = (binary_expression "iVar9 + iVar7" identifier + identifier)) , (binary_expression "uVar11 != 0xd87f" identifier != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar9 + iVar7;" (assignment_expression "iVar4 = iVar9 + iVar7" identifier = (binary_expression "iVar9 + iVar7" identifier + identifier)) ;) (expression_statement "uVar1 = (undefined1)iVar7;" (assignment_expression "uVar1 = (undefined1)iVar7" identifier = (cast_expression "(undefined1)iVar7" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(iVar4 + 0x1410) = uVar1;" (assignment_expression "*(undefined1 *)(iVar4 + 0x1410) = uVar1" (pointer_expression "*(undefined1 *)(iVar4 + 0x1410)" * (cast_expression "(undefined1 *)(iVar4 + 0x1410)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1410)" ( (binary_expression "iVar4 + 0x1410" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar7 == 0x100) goto LAB_000ca7ec;" if (parenthesized_expression "(iVar7 == 0x100)" ( (binary_expression "iVar7 == 0x100" identifier == number_literal) )) (goto_statement "goto LAB_000ca7ec;" goto statement_identifier ;)) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(iVar4 + 0x1410) = 0xff;" (assignment_expression "*(undefined1 *)(iVar4 + 0x1410) = 0xff" (pointer_expression "*(undefined1 *)(iVar4 + 0x1410)" * (cast_expression "(undefined1 *)(iVar4 + 0x1410)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1410)" ( (binary_expression "iVar4 + 0x1410" identifier + number_literal) )))) = number_literal) ;) }) while (parenthesized_expression "(iVar7 != 0x100)" ( (binary_expression "iVar7 != 0x100" identifier != number_literal) )) ;) (labeled_statement "LAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }" statement_identifier : (if_statement "if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }" if (parenthesized_expression "(iStack_a4 == *piVar3)" ( (binary_expression "iStack_a4 == *piVar3" identifier == (pointer_expression "*piVar3" * identifier)) )) (compound_statement "{\n    return uStack_c0;\n  }" { (return_statement "return uStack_c0;" return identifier ;) }))) (expression_statement "pcVar15 = *(code **)(puVar14 + 0x47d98);" (assignment_expression "pcVar15 = *(code **)(puVar14 + 0x47d98)" identifier = (pointer_expression "*(code **)(puVar14 + 0x47d98)" * (cast_expression "(code **)(puVar14 + 0x47d98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x47d98)" ( (binary_expression "puVar14 + 0x47d98" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = iStack_a4;" (assignment_expression "iVar7 = iStack_a4" identifier = identifier) ;) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar7 == 0) {\n    return *(int *)(pcVar15 + 0x469f0) - 0x5764;\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    return *(int *)(pcVar15 + 0x469f0) - 0x5764;\n  }" { (return_statement "return *(int *)(pcVar15 + 0x469f0) - 0x5764;" return (binary_expression "*(int *)(pcVar15 + 0x469f0) - 0x5764" (pointer_expression "*(int *)(pcVar15 + 0x469f0)" * (cast_expression "(int *)(pcVar15 + 0x469f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x469f0)" ( (binary_expression "pcVar15 + 0x469f0" identifier + number_literal) )))) - number_literal) ;) })) comment comment (expression_statement "uVar11 = (**(code **)(pcVar15 + 0x475a4))();" (assignment_expression "uVar11 = (**(code **)(pcVar15 + 0x475a4))()" identifier = (call_expression "(**(code **)(pcVar15 + 0x475a4))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x475a4))" ( (pointer_expression "**(code **)(pcVar15 + 0x475a4)" * (pointer_expression "*(code **)(pcVar15 + 0x475a4)" * (cast_expression "(code **)(pcVar15 + 0x475a4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x475a4)" ( (binary_expression "pcVar15 + 0x475a4" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar11;" return identifier ;) })))
(translation_unit "int wc_to_mb(int codepage,int flags,wchar_t *wcstr,int wclen,char *mbstr,int mblen,char *defchr,\n            int *defused,unicode_data *ucsdata)\n\n{\n  undefined1 uVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  char *pcVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  wchar_t *pwVar9;\n  uint uVar10;\n  mbstate_t *pmVar11;\n  int iVar12;\n  uint uVar13;\n  uint *puVar14;\n  mbstate_t *unaff_s4;\n  undefined4 unaff_s5;\n  int *unaff_s6;\n  uint *puVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  int local_resc;\n  uint uStack_c0;\n  undefined1 *puStack_b4;\n  undefined4 uStack_b0;\n  uint uStack_ac;\n  undefined1 auStack_a8 [4];\n  int iStack_a4;\n  int iStack_a0;\n  undefined *puStack_9c;\n  int iStack_98;\n  char *pcStack_94;\n  mbstate_t *pmStack_90;\n  undefined4 uStack_8c;\n  int *piStack_88;\n  mbstate_t *pmStack_84;\n  int local_68;\n  wchar_t *local_4c [2];\n  mbstate_t state;\n  char output [16];\n  \n  puVar2 = PTR___stack_chk_guard_00112630;\n  iVar8 = *(int *)PTR___stack_chk_guard_00112630;\n  if (defused != (int *)0x0) {\n    *defused = 0;\n  }\n  pmVar11 = (mbstate_t *)wcstr;\n  iVar6 = wclen;\n  local_resc = wclen;\n  local_4c[0] = wcstr;\n  if (codepage == 0xffff) {\n    state.__count = 0;\n    state.__value.__wch = 0;\n    if (wclen < 1) {\nLAB_000ca51c:\n      iVar12 = 0;\n    }\n    else {\n      iVar12 = 0;\n      unaff_s6 = (int *)output;\n      unaff_s5 = 0xffffffff;\n      do {\n        flags = *local_4c[0];\n        pmVar11 = &state;\n        unaff_s4 = (mbstate_t *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (mbstate_t *)0xffffffff) || (iVar12 - mblen < (int)unaff_s4)) break;\n        flags = (int)unaff_s6;\n        pmVar11 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)(mbstr + iVar12);\n        iVar12 = (int)&unaff_s4->__count + iVar12;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (codepage == 0) {\n    iVar12 = 0;\n    if (0 < wclen) {\n      if (mblen < 1) goto LAB_000ca51c;\n      iVar12 = 0;\n      iVar4 = wclen;\n      pwVar9 = wcstr;\n      do {\n        flags = *pwVar9;\n        pcVar5 = mbstr + iVar12;\n        if ((int *)(flags + -0xd800) < (int *)0x100) {\n          iVar12 = iVar12 + 1;\n          *pcVar5 = (char)flags;\n        }\n        else if (defchr != (char *)0x0) {\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }\n        pmVar11 = (mbstate_t *)0xffff2800;\n        local_resc = iVar4 + -1;\n        if (iVar4 + -1 == 0) break;\n        iVar4 = iVar4 + -1;\n        pwVar9 = pwVar9 + 1;\n        local_resc = iVar4;\n      } while (iVar12 < mblen);\n    }\n  }\n  else {\n    flags = (int)&local_resc;\n    pmVar11 = (mbstate_t *)mbstr;\n    iVar6 = mblen;\n    iVar12 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = codepage;\n  }\n  if (iVar8 == *(int *)puVar2) {\n    return iVar12;\n  }\n  puVar16 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar3 = *(int **)(puVar16 + 0x48100);\n  iStack_98 = mblen;\n  puStack_9c = puVar2;\n  pcStack_94 = mbstr;\n  *(undefined4 *)(iVar8 + 8) = 0xffffffff;\n  *(undefined4 *)(iVar8 + 0xc) = 0;\n  iStack_a4 = *piVar3;\n  iStack_a0 = iVar12;\n  pmStack_90 = unaff_s4;\n  uStack_8c = unaff_s5;\n  piStack_88 = unaff_s6;\n  pmStack_84 = &state;\n  if (pmVar11 != (mbstate_t *)0x0) {\n    pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5780);\n    if (((((pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')) ||\n         ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) ||\n        ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c),\n         pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) &&\n       (iVar12 = (**(code **)(puVar16 + 0x48150))(pcVar5,iVar12 + -0x484), iVar12 != 0)) {\n      uStack_c0 = 0;\n      iVar12 = 0x37;\n      *(undefined4 *)(iVar8 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar12 = *(int *)(iVar8 + 0xc);\n    if (iVar12 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }\n  iVar12 = 0x37;\n  if ((int *)flags != (int *)0x0) {\n    if (*(char *)flags == '\0') {\n      iVar12 = 0x37;\n    }\n    else {\n      iVar12 = (**(code **)(puVar16 + 0x47974))(flags);\n      if (iVar12 == 0) {\n        uStack_c0 = (uint)(iVar6 == 0);\n        *(int *)(iVar8 + 0xc) = iVar6;\n        iVar12 = iVar6;\n        goto LAB_000ca5d4;\n      }\n    }\n  }\n  *(int *)(iVar8 + 0xc) = iVar12;\n  uStack_c0 = 0;\nLAB_000ca5d4:\n  puVar15 = (uint *)(iVar8 + 0x410);\n  uVar13 = 0;\n  iVar6 = *(int *)(puVar16 + 0x46dc4);\n  puVar14 = puVar15;\n  while( true ) {\n    auStack_a8[0] = (undefined1)uVar13;\n    uStack_b0 = 1;\n    if (iVar12 == 0) {\n      *puVar14 = uVar13 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar12 = (**(code **)(puVar16 + 0x47970))\n                         (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar12,0,iVar6 + -0x7b5c,0);\n      if (iVar12 == 1) {\n        *puVar14 = uStack_ac;\n      }\n      else {\n        *puVar14 = 0xfffd;\n      }\n    }\n    if (uVar13 == 0xff) break;\n    puVar14 = puVar14 + 1;\n    uVar13 = uVar13 + 1;\n    iVar12 = *(int *)(iVar8 + 0xc);\n  }\n  puVar7 = (undefined4 *)(iVar8 + 0xc10);\n  uVar13 = 0;\n  iVar12 = *(int *)(puVar16 + 0x46dc4) + -0x5750;\n  if (local_68 == 3) {\n    iVar12 = *(int *)(puVar16 + 0x46dc4) + -0x56d0;\n  }\n  while( true ) {\n    while (uVar10 = uVar13 + 1, uVar13 - 0x5f < 0x20) {\n      *puVar7 = *(undefined4 *)(iVar12 + (uVar13 & 0x1f) * 4);\n      puVar7 = puVar7 + 1;\n      uVar13 = uVar10;\n    }\n    *puVar7 = puVar7[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar7 = puVar7 + 1;\n    uVar13 = uVar10;\n  }\n  iVar12 = 0;\n  puVar14 = (uint *)(iVar8 + 0x10);\n  do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar12;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar16 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar6 + -0x7b5c,0);\n      if (iVar4 != 1) break;\n      iVar12 = iVar12 + 1;\n      *puVar14 = uStack_ac;\n      puVar14 = puVar14 + 1;\n      if (iVar12 == 0x100) goto LAB_000ca778;\n    }\n    iVar12 = iVar12 + 1;\n    *puVar14 = 0xfffd;\n    puVar14 = puVar14 + 1;\n  } while (iVar12 != 0x100);\nLAB_000ca778:\n  iVar6 = 0;\n  do {\n    while( true ) {\n      uVar13 = *puVar15;\n      if ((((0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f)) && (0x1f < uVar13 - 0xd800)) &&\n         (iVar12 = iVar8 + iVar6, uVar13 != 0xd87f)) break;\n      iVar12 = iVar8 + iVar6;\n      uVar1 = (undefined1)iVar6;\n      iVar6 = iVar6 + 1;\n      puVar15 = puVar15 + 1;\n      *(undefined1 *)(iVar12 + 0x1410) = uVar1;\n      if (iVar6 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar6 = iVar6 + 1;\n    puVar15 = puVar15 + 1;\n    *(undefined1 *)(iVar12 + 0x1410) = 0xff;\n  } while (iVar6 != 0x100);\nLAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }\n  pcVar17 = *(code **)(puVar16 + 0x47d98);\n  iVar8 = iStack_a4;\n  (*pcVar17)();\n  if (iVar8 == 0) {\n    return *(int *)(pcVar17 + 0x469f0) + -0x5764;\n  }\n                    /* WARNING: Could not recover jumptable at 0x000ca924. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  iVar8 = (**(code **)(pcVar17 + 0x475a4))();\n  return iVar8;\n}\n\n" (function_definition "int wc_to_mb(int codepage,int flags,wchar_t *wcstr,int wclen,char *mbstr,int mblen,char *defchr,\n            int *defused,unicode_data *ucsdata)\n\n{\n  undefined1 uVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  char *pcVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  wchar_t *pwVar9;\n  uint uVar10;\n  mbstate_t *pmVar11;\n  int iVar12;\n  uint uVar13;\n  uint *puVar14;\n  mbstate_t *unaff_s4;\n  undefined4 unaff_s5;\n  int *unaff_s6;\n  uint *puVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  int local_resc;\n  uint uStack_c0;\n  undefined1 *puStack_b4;\n  undefined4 uStack_b0;\n  uint uStack_ac;\n  undefined1 auStack_a8 [4];\n  int iStack_a4;\n  int iStack_a0;\n  undefined *puStack_9c;\n  int iStack_98;\n  char *pcStack_94;\n  mbstate_t *pmStack_90;\n  undefined4 uStack_8c;\n  int *piStack_88;\n  mbstate_t *pmStack_84;\n  int local_68;\n  wchar_t *local_4c [2];\n  mbstate_t state;\n  char output [16];\n  \n  puVar2 = PTR___stack_chk_guard_00112630;\n  iVar8 = *(int *)PTR___stack_chk_guard_00112630;\n  if (defused != (int *)0x0) {\n    *defused = 0;\n  }\n  pmVar11 = (mbstate_t *)wcstr;\n  iVar6 = wclen;\n  local_resc = wclen;\n  local_4c[0] = wcstr;\n  if (codepage == 0xffff) {\n    state.__count = 0;\n    state.__value.__wch = 0;\n    if (wclen < 1) {\nLAB_000ca51c:\n      iVar12 = 0;\n    }\n    else {\n      iVar12 = 0;\n      unaff_s6 = (int *)output;\n      unaff_s5 = 0xffffffff;\n      do {\n        flags = *local_4c[0];\n        pmVar11 = &state;\n        unaff_s4 = (mbstate_t *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (mbstate_t *)0xffffffff) || (iVar12 - mblen < (int)unaff_s4)) break;\n        flags = (int)unaff_s6;\n        pmVar11 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)(mbstr + iVar12);\n        iVar12 = (int)&unaff_s4->__count + iVar12;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (codepage == 0) {\n    iVar12 = 0;\n    if (0 < wclen) {\n      if (mblen < 1) goto LAB_000ca51c;\n      iVar12 = 0;\n      iVar4 = wclen;\n      pwVar9 = wcstr;\n      do {\n        flags = *pwVar9;\n        pcVar5 = mbstr + iVar12;\n        if ((int *)(flags + -0xd800) < (int *)0x100) {\n          iVar12 = iVar12 + 1;\n          *pcVar5 = (char)flags;\n        }\n        else if (defchr != (char *)0x0) {\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }\n        pmVar11 = (mbstate_t *)0xffff2800;\n        local_resc = iVar4 + -1;\n        if (iVar4 + -1 == 0) break;\n        iVar4 = iVar4 + -1;\n        pwVar9 = pwVar9 + 1;\n        local_resc = iVar4;\n      } while (iVar12 < mblen);\n    }\n  }\n  else {\n    flags = (int)&local_resc;\n    pmVar11 = (mbstate_t *)mbstr;\n    iVar6 = mblen;\n    iVar12 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = codepage;\n  }\n  if (iVar8 == *(int *)puVar2) {\n    return iVar12;\n  }\n  puVar16 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar3 = *(int **)(puVar16 + 0x48100);\n  iStack_98 = mblen;\n  puStack_9c = puVar2;\n  pcStack_94 = mbstr;\n  *(undefined4 *)(iVar8 + 8) = 0xffffffff;\n  *(undefined4 *)(iVar8 + 0xc) = 0;\n  iStack_a4 = *piVar3;\n  iStack_a0 = iVar12;\n  pmStack_90 = unaff_s4;\n  uStack_8c = unaff_s5;\n  piStack_88 = unaff_s6;\n  pmStack_84 = &state;\n  if (pmVar11 != (mbstate_t *)0x0) {\n    pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5780);\n    if (((((pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')) ||\n         ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) ||\n        ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c),\n         pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) &&\n       (iVar12 = (**(code **)(puVar16 + 0x48150))(pcVar5,iVar12 + -0x484), iVar12 != 0)) {\n      uStack_c0 = 0;\n      iVar12 = 0x37;\n      *(undefined4 *)(iVar8 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar12 = *(int *)(iVar8 + 0xc);\n    if (iVar12 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }\n  iVar12 = 0x37;\n  if ((int *)flags != (int *)0x0) {\n    if (*(char *)flags == '\0') {\n      iVar12 = 0x37;\n    }\n    else {\n      iVar12 = (**(code **)(puVar16 + 0x47974))(flags);\n      if (iVar12 == 0) {\n        uStack_c0 = (uint)(iVar6 == 0);\n        *(int *)(iVar8 + 0xc) = iVar6;\n        iVar12 = iVar6;\n        goto LAB_000ca5d4;\n      }\n    }\n  }\n  *(int *)(iVar8 + 0xc) = iVar12;\n  uStack_c0 = 0;\nLAB_000ca5d4:\n  puVar15 = (uint *)(iVar8 + 0x410);\n  uVar13 = 0;\n  iVar6 = *(int *)(puVar16 + 0x46dc4);\n  puVar14 = puVar15;\n  while( true ) {\n    auStack_a8[0] = (undefined1)uVar13;\n    uStack_b0 = 1;\n    if (iVar12 == 0) {\n      *puVar14 = uVar13 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar12 = (**(code **)(puVar16 + 0x47970))\n                         (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar12,0,iVar6 + -0x7b5c,0);\n      if (iVar12 == 1) {\n        *puVar14 = uStack_ac;\n      }\n      else {\n        *puVar14 = 0xfffd;\n      }\n    }\n    if (uVar13 == 0xff) break;\n    puVar14 = puVar14 + 1;\n    uVar13 = uVar13 + 1;\n    iVar12 = *(int *)(iVar8 + 0xc);\n  }\n  puVar7 = (undefined4 *)(iVar8 + 0xc10);\n  uVar13 = 0;\n  iVar12 = *(int *)(puVar16 + 0x46dc4) + -0x5750;\n  if (local_68 == 3) {\n    iVar12 = *(int *)(puVar16 + 0x46dc4) + -0x56d0;\n  }\n  while( true ) {\n    while (uVar10 = uVar13 + 1, uVar13 - 0x5f < 0x20) {\n      *puVar7 = *(undefined4 *)(iVar12 + (uVar13 & 0x1f) * 4);\n      puVar7 = puVar7 + 1;\n      uVar13 = uVar10;\n    }\n    *puVar7 = puVar7[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar7 = puVar7 + 1;\n    uVar13 = uVar10;\n  }\n  iVar12 = 0;\n  puVar14 = (uint *)(iVar8 + 0x10);\n  do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar12;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar16 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar6 + -0x7b5c,0);\n      if (iVar4 != 1) break;\n      iVar12 = iVar12 + 1;\n      *puVar14 = uStack_ac;\n      puVar14 = puVar14 + 1;\n      if (iVar12 == 0x100) goto LAB_000ca778;\n    }\n    iVar12 = iVar12 + 1;\n    *puVar14 = 0xfffd;\n    puVar14 = puVar14 + 1;\n  } while (iVar12 != 0x100);\nLAB_000ca778:\n  iVar6 = 0;\n  do {\n    while( true ) {\n      uVar13 = *puVar15;\n      if ((((0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f)) && (0x1f < uVar13 - 0xd800)) &&\n         (iVar12 = iVar8 + iVar6, uVar13 != 0xd87f)) break;\n      iVar12 = iVar8 + iVar6;\n      uVar1 = (undefined1)iVar6;\n      iVar6 = iVar6 + 1;\n      puVar15 = puVar15 + 1;\n      *(undefined1 *)(iVar12 + 0x1410) = uVar1;\n      if (iVar6 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar6 = iVar6 + 1;\n    puVar15 = puVar15 + 1;\n    *(undefined1 *)(iVar12 + 0x1410) = 0xff;\n  } while (iVar6 != 0x100);\nLAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }\n  pcVar17 = *(code **)(puVar16 + 0x47d98);\n  iVar8 = iStack_a4;\n  (*pcVar17)();\n  if (iVar8 == 0) {\n    return *(int *)(pcVar17 + 0x469f0) + -0x5764;\n  }\n                    /* WARNING: Could not recover jumptable at 0x000ca924. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  iVar8 = (**(code **)(pcVar17 + 0x475a4))();\n  return iVar8;\n}" primitive_type (function_declarator "wc_to_mb(int codepage,int flags,wchar_t *wcstr,int wclen,char *mbstr,int mblen,char *defchr,\n            int *defused,unicode_data *ucsdata)" identifier (parameter_list "(int codepage,int flags,wchar_t *wcstr,int wclen,char *mbstr,int mblen,char *defchr,\n            int *defused,unicode_data *ucsdata)" ( (parameter_declaration "int codepage" primitive_type identifier) , (parameter_declaration "int flags" primitive_type identifier) , (parameter_declaration "wchar_t *wcstr" type_identifier (pointer_declarator "*wcstr" * identifier)) , (parameter_declaration "int wclen" primitive_type identifier) , (parameter_declaration "char *mbstr" primitive_type (pointer_declarator "*mbstr" * identifier)) , (parameter_declaration "int mblen" primitive_type identifier) , (parameter_declaration "char *defchr" primitive_type (pointer_declarator "*defchr" * identifier)) , (parameter_declaration "int *defused" primitive_type (pointer_declarator "*defused" * identifier)) , (parameter_declaration "unicode_data *ucsdata" type_identifier (pointer_declarator "*ucsdata" * identifier)) ))) (compound_statement "{\n  undefined1 uVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  char *pcVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  wchar_t *pwVar9;\n  uint uVar10;\n  mbstate_t *pmVar11;\n  int iVar12;\n  uint uVar13;\n  uint *puVar14;\n  mbstate_t *unaff_s4;\n  undefined4 unaff_s5;\n  int *unaff_s6;\n  uint *puVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  int local_resc;\n  uint uStack_c0;\n  undefined1 *puStack_b4;\n  undefined4 uStack_b0;\n  uint uStack_ac;\n  undefined1 auStack_a8 [4];\n  int iStack_a4;\n  int iStack_a0;\n  undefined *puStack_9c;\n  int iStack_98;\n  char *pcStack_94;\n  mbstate_t *pmStack_90;\n  undefined4 uStack_8c;\n  int *piStack_88;\n  mbstate_t *pmStack_84;\n  int local_68;\n  wchar_t *local_4c [2];\n  mbstate_t state;\n  char output [16];\n  \n  puVar2 = PTR___stack_chk_guard_00112630;\n  iVar8 = *(int *)PTR___stack_chk_guard_00112630;\n  if (defused != (int *)0x0) {\n    *defused = 0;\n  }\n  pmVar11 = (mbstate_t *)wcstr;\n  iVar6 = wclen;\n  local_resc = wclen;\n  local_4c[0] = wcstr;\n  if (codepage == 0xffff) {\n    state.__count = 0;\n    state.__value.__wch = 0;\n    if (wclen < 1) {\nLAB_000ca51c:\n      iVar12 = 0;\n    }\n    else {\n      iVar12 = 0;\n      unaff_s6 = (int *)output;\n      unaff_s5 = 0xffffffff;\n      do {\n        flags = *local_4c[0];\n        pmVar11 = &state;\n        unaff_s4 = (mbstate_t *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (mbstate_t *)0xffffffff) || (iVar12 - mblen < (int)unaff_s4)) break;\n        flags = (int)unaff_s6;\n        pmVar11 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)(mbstr + iVar12);\n        iVar12 = (int)&unaff_s4->__count + iVar12;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (codepage == 0) {\n    iVar12 = 0;\n    if (0 < wclen) {\n      if (mblen < 1) goto LAB_000ca51c;\n      iVar12 = 0;\n      iVar4 = wclen;\n      pwVar9 = wcstr;\n      do {\n        flags = *pwVar9;\n        pcVar5 = mbstr + iVar12;\n        if ((int *)(flags + -0xd800) < (int *)0x100) {\n          iVar12 = iVar12 + 1;\n          *pcVar5 = (char)flags;\n        }\n        else if (defchr != (char *)0x0) {\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }\n        pmVar11 = (mbstate_t *)0xffff2800;\n        local_resc = iVar4 + -1;\n        if (iVar4 + -1 == 0) break;\n        iVar4 = iVar4 + -1;\n        pwVar9 = pwVar9 + 1;\n        local_resc = iVar4;\n      } while (iVar12 < mblen);\n    }\n  }\n  else {\n    flags = (int)&local_resc;\n    pmVar11 = (mbstate_t *)mbstr;\n    iVar6 = mblen;\n    iVar12 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = codepage;\n  }\n  if (iVar8 == *(int *)puVar2) {\n    return iVar12;\n  }\n  puVar16 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar3 = *(int **)(puVar16 + 0x48100);\n  iStack_98 = mblen;\n  puStack_9c = puVar2;\n  pcStack_94 = mbstr;\n  *(undefined4 *)(iVar8 + 8) = 0xffffffff;\n  *(undefined4 *)(iVar8 + 0xc) = 0;\n  iStack_a4 = *piVar3;\n  iStack_a0 = iVar12;\n  pmStack_90 = unaff_s4;\n  uStack_8c = unaff_s5;\n  piStack_88 = unaff_s6;\n  pmStack_84 = &state;\n  if (pmVar11 != (mbstate_t *)0x0) {\n    pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5780);\n    if (((((pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')) ||\n         ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) ||\n        ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c),\n         pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) &&\n       (iVar12 = (**(code **)(puVar16 + 0x48150))(pcVar5,iVar12 + -0x484), iVar12 != 0)) {\n      uStack_c0 = 0;\n      iVar12 = 0x37;\n      *(undefined4 *)(iVar8 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar12 = *(int *)(iVar8 + 0xc);\n    if (iVar12 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }\n  iVar12 = 0x37;\n  if ((int *)flags != (int *)0x0) {\n    if (*(char *)flags == '\0') {\n      iVar12 = 0x37;\n    }\n    else {\n      iVar12 = (**(code **)(puVar16 + 0x47974))(flags);\n      if (iVar12 == 0) {\n        uStack_c0 = (uint)(iVar6 == 0);\n        *(int *)(iVar8 + 0xc) = iVar6;\n        iVar12 = iVar6;\n        goto LAB_000ca5d4;\n      }\n    }\n  }\n  *(int *)(iVar8 + 0xc) = iVar12;\n  uStack_c0 = 0;\nLAB_000ca5d4:\n  puVar15 = (uint *)(iVar8 + 0x410);\n  uVar13 = 0;\n  iVar6 = *(int *)(puVar16 + 0x46dc4);\n  puVar14 = puVar15;\n  while( true ) {\n    auStack_a8[0] = (undefined1)uVar13;\n    uStack_b0 = 1;\n    if (iVar12 == 0) {\n      *puVar14 = uVar13 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar12 = (**(code **)(puVar16 + 0x47970))\n                         (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar12,0,iVar6 + -0x7b5c,0);\n      if (iVar12 == 1) {\n        *puVar14 = uStack_ac;\n      }\n      else {\n        *puVar14 = 0xfffd;\n      }\n    }\n    if (uVar13 == 0xff) break;\n    puVar14 = puVar14 + 1;\n    uVar13 = uVar13 + 1;\n    iVar12 = *(int *)(iVar8 + 0xc);\n  }\n  puVar7 = (undefined4 *)(iVar8 + 0xc10);\n  uVar13 = 0;\n  iVar12 = *(int *)(puVar16 + 0x46dc4) + -0x5750;\n  if (local_68 == 3) {\n    iVar12 = *(int *)(puVar16 + 0x46dc4) + -0x56d0;\n  }\n  while( true ) {\n    while (uVar10 = uVar13 + 1, uVar13 - 0x5f < 0x20) {\n      *puVar7 = *(undefined4 *)(iVar12 + (uVar13 & 0x1f) * 4);\n      puVar7 = puVar7 + 1;\n      uVar13 = uVar10;\n    }\n    *puVar7 = puVar7[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar7 = puVar7 + 1;\n    uVar13 = uVar10;\n  }\n  iVar12 = 0;\n  puVar14 = (uint *)(iVar8 + 0x10);\n  do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar12;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar16 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar6 + -0x7b5c,0);\n      if (iVar4 != 1) break;\n      iVar12 = iVar12 + 1;\n      *puVar14 = uStack_ac;\n      puVar14 = puVar14 + 1;\n      if (iVar12 == 0x100) goto LAB_000ca778;\n    }\n    iVar12 = iVar12 + 1;\n    *puVar14 = 0xfffd;\n    puVar14 = puVar14 + 1;\n  } while (iVar12 != 0x100);\nLAB_000ca778:\n  iVar6 = 0;\n  do {\n    while( true ) {\n      uVar13 = *puVar15;\n      if ((((0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f)) && (0x1f < uVar13 - 0xd800)) &&\n         (iVar12 = iVar8 + iVar6, uVar13 != 0xd87f)) break;\n      iVar12 = iVar8 + iVar6;\n      uVar1 = (undefined1)iVar6;\n      iVar6 = iVar6 + 1;\n      puVar15 = puVar15 + 1;\n      *(undefined1 *)(iVar12 + 0x1410) = uVar1;\n      if (iVar6 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar6 = iVar6 + 1;\n    puVar15 = puVar15 + 1;\n    *(undefined1 *)(iVar12 + 0x1410) = 0xff;\n  } while (iVar6 != 0x100);\nLAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }\n  pcVar17 = *(code **)(puVar16 + 0x47d98);\n  iVar8 = iStack_a4;\n  (*pcVar17)();\n  if (iVar8 == 0) {\n    return *(int *)(pcVar17 + 0x469f0) + -0x5764;\n  }\n                    /* WARNING: Could not recover jumptable at 0x000ca924. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  iVar8 = (**(code **)(pcVar17 + 0x475a4))();\n  return iVar8;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "wchar_t *pwVar9;" type_identifier (pointer_declarator "*pwVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "mbstate_t *pmVar11;" type_identifier (pointer_declarator "*pmVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "mbstate_t *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "int *unaff_s6;" primitive_type (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "uint *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "int local_resc;" primitive_type identifier ;) (declaration "uint uStack_c0;" type_identifier identifier ;) (declaration "undefined1 *puStack_b4;" type_identifier (pointer_declarator "*puStack_b4" * identifier) ;) (declaration "undefined4 uStack_b0;" type_identifier identifier ;) (declaration "uint uStack_ac;" type_identifier identifier ;) (declaration "undefined1 auStack_a8 [4];" type_identifier (array_declarator "auStack_a8 [4]" identifier [ number_literal ]) ;) (declaration "int iStack_a4;" primitive_type identifier ;) (declaration "int iStack_a0;" primitive_type identifier ;) (declaration "undefined *puStack_9c;" type_identifier (pointer_declarator "*puStack_9c" * identifier) ;) (declaration "int iStack_98;" primitive_type identifier ;) (declaration "char *pcStack_94;" primitive_type (pointer_declarator "*pcStack_94" * identifier) ;) (declaration "mbstate_t *pmStack_90;" type_identifier (pointer_declarator "*pmStack_90" * identifier) ;) (declaration "undefined4 uStack_8c;" type_identifier identifier ;) (declaration "int *piStack_88;" primitive_type (pointer_declarator "*piStack_88" * identifier) ;) (declaration "mbstate_t *pmStack_84;" type_identifier (pointer_declarator "*pmStack_84" * identifier) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "wchar_t *local_4c [2];" type_identifier (pointer_declarator "*local_4c [2]" * (array_declarator "local_4c [2]" identifier [ number_literal ])) ;) (declaration "mbstate_t state;" type_identifier identifier ;) (declaration "char output [16];" primitive_type (array_declarator "output [16]" identifier [ number_literal ]) ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00112630;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00112630" identifier = identifier) ;) (expression_statement "iVar8 = *(int *)PTR___stack_chk_guard_00112630;" (assignment_expression "iVar8 = *(int *)PTR___stack_chk_guard_00112630" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00112630" * (cast_expression "(int *)PTR___stack_chk_guard_00112630" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (defused != (int *)0x0) {\n    *defused = 0;\n  }" if (parenthesized_expression "(defused != (int *)0x0)" ( (binary_expression "defused != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *defused = 0;\n  }" { (expression_statement "*defused = 0;" (assignment_expression "*defused = 0" (pointer_expression "*defused" * identifier) = number_literal) ;) })) (expression_statement "pmVar11 = (mbstate_t *)wcstr;" (assignment_expression "pmVar11 = (mbstate_t *)wcstr" identifier = (cast_expression "(mbstate_t *)wcstr" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar6 = wclen;" (assignment_expression "iVar6 = wclen" identifier = identifier) ;) (expression_statement "local_resc = wclen;" (assignment_expression "local_resc = wclen" identifier = identifier) ;) (expression_statement "local_4c[0] = wcstr;" (assignment_expression "local_4c[0] = wcstr" (subscript_expression "local_4c[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (codepage == 0xffff) {\n    state.__count = 0;\n    state.__value.__wch = 0;\n    if (wclen < 1) {\nLAB_000ca51c:\n      iVar12 = 0;\n    }\n    else {\n      iVar12 = 0;\n      unaff_s6 = (int *)output;\n      unaff_s5 = 0xffffffff;\n      do {\n        flags = *local_4c[0];\n        pmVar11 = &state;\n        unaff_s4 = (mbstate_t *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (mbstate_t *)0xffffffff) || (iVar12 - mblen < (int)unaff_s4)) break;\n        flags = (int)unaff_s6;\n        pmVar11 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)(mbstr + iVar12);\n        iVar12 = (int)&unaff_s4->__count + iVar12;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (codepage == 0) {\n    iVar12 = 0;\n    if (0 < wclen) {\n      if (mblen < 1) goto LAB_000ca51c;\n      iVar12 = 0;\n      iVar4 = wclen;\n      pwVar9 = wcstr;\n      do {\n        flags = *pwVar9;\n        pcVar5 = mbstr + iVar12;\n        if ((int *)(flags + -0xd800) < (int *)0x100) {\n          iVar12 = iVar12 + 1;\n          *pcVar5 = (char)flags;\n        }\n        else if (defchr != (char *)0x0) {\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }\n        pmVar11 = (mbstate_t *)0xffff2800;\n        local_resc = iVar4 + -1;\n        if (iVar4 + -1 == 0) break;\n        iVar4 = iVar4 + -1;\n        pwVar9 = pwVar9 + 1;\n        local_resc = iVar4;\n      } while (iVar12 < mblen);\n    }\n  }\n  else {\n    flags = (int)&local_resc;\n    pmVar11 = (mbstate_t *)mbstr;\n    iVar6 = mblen;\n    iVar12 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = codepage;\n  }" if (parenthesized_expression "(codepage == 0xffff)" ( (binary_expression "codepage == 0xffff" identifier == number_literal) )) (compound_statement "{\n    state.__count = 0;\n    state.__value.__wch = 0;\n    if (wclen < 1) {\nLAB_000ca51c:\n      iVar12 = 0;\n    }\n    else {\n      iVar12 = 0;\n      unaff_s6 = (int *)output;\n      unaff_s5 = 0xffffffff;\n      do {\n        flags = *local_4c[0];\n        pmVar11 = &state;\n        unaff_s4 = (mbstate_t *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (mbstate_t *)0xffffffff) || (iVar12 - mblen < (int)unaff_s4)) break;\n        flags = (int)unaff_s6;\n        pmVar11 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)(mbstr + iVar12);\n        iVar12 = (int)&unaff_s4->__count + iVar12;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }" { (expression_statement "state.__count = 0;" (assignment_expression "state.__count = 0" (field_expression "state.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "state.__value.__wch = 0;" (assignment_expression "state.__value.__wch = 0" (field_expression "state.__value.__wch" (field_expression "state.__value" identifier . field_identifier) . field_identifier) = number_literal) ;) (if_statement "if (wclen < 1) {\nLAB_000ca51c:\n      iVar12 = 0;\n    }\n    else {\n      iVar12 = 0;\n      unaff_s6 = (int *)output;\n      unaff_s5 = 0xffffffff;\n      do {\n        flags = *local_4c[0];\n        pmVar11 = &state;\n        unaff_s4 = (mbstate_t *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (mbstate_t *)0xffffffff) || (iVar12 - mblen < (int)unaff_s4)) break;\n        flags = (int)unaff_s6;\n        pmVar11 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)(mbstr + iVar12);\n        iVar12 = (int)&unaff_s4->__count + iVar12;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }" if (parenthesized_expression "(wclen < 1)" ( (binary_expression "wclen < 1" identifier < number_literal) )) (compound_statement "{\nLAB_000ca51c:\n      iVar12 = 0;\n    }" { (labeled_statement "LAB_000ca51c:\n      iVar12 = 0;" statement_identifier : (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n      iVar12 = 0;\n      unaff_s6 = (int *)output;\n      unaff_s5 = 0xffffffff;\n      do {\n        flags = *local_4c[0];\n        pmVar11 = &state;\n        unaff_s4 = (mbstate_t *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (mbstate_t *)0xffffffff) || (iVar12 - mblen < (int)unaff_s4)) break;\n        flags = (int)unaff_s6;\n        pmVar11 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)(mbstr + iVar12);\n        iVar12 = (int)&unaff_s4->__count + iVar12;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }" else (compound_statement "{\n      iVar12 = 0;\n      unaff_s6 = (int *)output;\n      unaff_s5 = 0xffffffff;\n      do {\n        flags = *local_4c[0];\n        pmVar11 = &state;\n        unaff_s4 = (mbstate_t *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (mbstate_t *)0xffffffff) || (iVar12 - mblen < (int)unaff_s4)) break;\n        flags = (int)unaff_s6;\n        pmVar11 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)(mbstr + iVar12);\n        iVar12 = (int)&unaff_s4->__count + iVar12;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "unaff_s6 = (int *)output;" (assignment_expression "unaff_s6 = (int *)output" identifier = (cast_expression "(int *)output" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "unaff_s5 = 0xffffffff;" (assignment_expression "unaff_s5 = 0xffffffff" identifier = number_literal) ;) (do_statement "do {\n        flags = *local_4c[0];\n        pmVar11 = &state;\n        unaff_s4 = (mbstate_t *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (mbstate_t *)0xffffffff) || (iVar12 - mblen < (int)unaff_s4)) break;\n        flags = (int)unaff_s6;\n        pmVar11 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)(mbstr + iVar12);\n        iVar12 = (int)&unaff_s4->__count + iVar12;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);" do (compound_statement "{\n        flags = *local_4c[0];\n        pmVar11 = &state;\n        unaff_s4 = (mbstate_t *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (mbstate_t *)0xffffffff) || (iVar12 - mblen < (int)unaff_s4)) break;\n        flags = (int)unaff_s6;\n        pmVar11 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)(mbstr + iVar12);\n        iVar12 = (int)&unaff_s4->__count + iVar12;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      }" { (expression_statement "flags = *local_4c[0];" (assignment_expression "flags = *local_4c[0]" identifier = (pointer_expression "*local_4c[0]" * (subscript_expression "local_4c[0]" identifier [ number_literal ]))) ;) (expression_statement "pmVar11 = &state;" (assignment_expression "pmVar11 = &state" identifier = (pointer_expression "&state" & identifier)) ;) (expression_statement "unaff_s4 = (mbstate_t *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);" (assignment_expression "unaff_s4 = (mbstate_t *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6)" identifier = (cast_expression "(mbstate_t *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_wcrtomb_0011232c)(unaff_s6)" (parenthesized_expression "(*(code *)PTR_wcrtomb_0011232c)" ( (pointer_expression "*(code *)PTR_wcrtomb_0011232c" * (cast_expression "(code *)PTR_wcrtomb_0011232c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s6)" ( identifier ))))) ;) (if_statement "if ((unaff_s4 == (mbstate_t *)0xffffffff) || (iVar12 - mblen < (int)unaff_s4)) break;" if (parenthesized_expression "((unaff_s4 == (mbstate_t *)0xffffffff) || (iVar12 - mblen < (int)unaff_s4))" ( (binary_expression "(unaff_s4 == (mbstate_t *)0xffffffff) || (iVar12 - mblen < (int)unaff_s4)" (parenthesized_expression "(unaff_s4 == (mbstate_t *)0xffffffff)" ( (binary_expression "unaff_s4 == (mbstate_t *)0xffffffff" identifier == (cast_expression "(mbstate_t *)0xffffffff" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(iVar12 - mblen < (int)unaff_s4)" ( (binary_expression "iVar12 - mblen < (int)unaff_s4" (binary_expression "iVar12 - mblen" identifier - identifier) < (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (break_statement "break;" break ;)) (expression_statement "flags = (int)unaff_s6;" (assignment_expression "flags = (int)unaff_s6" identifier = (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pmVar11 = unaff_s4;" (assignment_expression "pmVar11 = unaff_s4" identifier = identifier) ;) (expression_statement "(*(code *)PTR_memcpy_0011256c)(mbstr + iVar12);" (call_expression "(*(code *)PTR_memcpy_0011256c)(mbstr + iVar12)" (parenthesized_expression "(*(code *)PTR_memcpy_0011256c)" ( (pointer_expression "*(code *)PTR_memcpy_0011256c" * (cast_expression "(code *)PTR_memcpy_0011256c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(mbstr + iVar12)" ( (binary_expression "mbstr + iVar12" identifier + identifier) ))) ;) (expression_statement "iVar12 = (int)&unaff_s4->__count + iVar12;" (assignment_expression "iVar12 = (int)&unaff_s4->__count + iVar12" identifier = (binary_expression "(int)&unaff_s4->__count + iVar12" (cast_expression "(int)&unaff_s4->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s4->__count" & (field_expression "unaff_s4->__count" identifier -> field_identifier))) + identifier)) ;) (expression_statement "local_4c[0] = local_4c[0] + 1;" (assignment_expression "local_4c[0] = local_4c[0] + 1" (subscript_expression "local_4c[0]" identifier [ number_literal ]) = (binary_expression "local_4c[0] + 1" (subscript_expression "local_4c[0]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_resc = local_resc + -1;" (assignment_expression "local_resc = local_resc + -1" identifier = (binary_expression "local_resc + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(0 < local_resc)" ( (binary_expression "0 < local_resc" number_literal < identifier) )) ;) }))) }) (else_clause "else if (codepage == 0) {\n    iVar12 = 0;\n    if (0 < wclen) {\n      if (mblen < 1) goto LAB_000ca51c;\n      iVar12 = 0;\n      iVar4 = wclen;\n      pwVar9 = wcstr;\n      do {\n        flags = *pwVar9;\n        pcVar5 = mbstr + iVar12;\n        if ((int *)(flags + -0xd800) < (int *)0x100) {\n          iVar12 = iVar12 + 1;\n          *pcVar5 = (char)flags;\n        }\n        else if (defchr != (char *)0x0) {\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }\n        pmVar11 = (mbstate_t *)0xffff2800;\n        local_resc = iVar4 + -1;\n        if (iVar4 + -1 == 0) break;\n        iVar4 = iVar4 + -1;\n        pwVar9 = pwVar9 + 1;\n        local_resc = iVar4;\n      } while (iVar12 < mblen);\n    }\n  }\n  else {\n    flags = (int)&local_resc;\n    pmVar11 = (mbstate_t *)mbstr;\n    iVar6 = mblen;\n    iVar12 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = codepage;\n  }" else (if_statement "if (codepage == 0) {\n    iVar12 = 0;\n    if (0 < wclen) {\n      if (mblen < 1) goto LAB_000ca51c;\n      iVar12 = 0;\n      iVar4 = wclen;\n      pwVar9 = wcstr;\n      do {\n        flags = *pwVar9;\n        pcVar5 = mbstr + iVar12;\n        if ((int *)(flags + -0xd800) < (int *)0x100) {\n          iVar12 = iVar12 + 1;\n          *pcVar5 = (char)flags;\n        }\n        else if (defchr != (char *)0x0) {\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }\n        pmVar11 = (mbstate_t *)0xffff2800;\n        local_resc = iVar4 + -1;\n        if (iVar4 + -1 == 0) break;\n        iVar4 = iVar4 + -1;\n        pwVar9 = pwVar9 + 1;\n        local_resc = iVar4;\n      } while (iVar12 < mblen);\n    }\n  }\n  else {\n    flags = (int)&local_resc;\n    pmVar11 = (mbstate_t *)mbstr;\n    iVar6 = mblen;\n    iVar12 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = codepage;\n  }" if (parenthesized_expression "(codepage == 0)" ( (binary_expression "codepage == 0" identifier == number_literal) )) (compound_statement "{\n    iVar12 = 0;\n    if (0 < wclen) {\n      if (mblen < 1) goto LAB_000ca51c;\n      iVar12 = 0;\n      iVar4 = wclen;\n      pwVar9 = wcstr;\n      do {\n        flags = *pwVar9;\n        pcVar5 = mbstr + iVar12;\n        if ((int *)(flags + -0xd800) < (int *)0x100) {\n          iVar12 = iVar12 + 1;\n          *pcVar5 = (char)flags;\n        }\n        else if (defchr != (char *)0x0) {\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }\n        pmVar11 = (mbstate_t *)0xffff2800;\n        local_resc = iVar4 + -1;\n        if (iVar4 + -1 == 0) break;\n        iVar4 = iVar4 + -1;\n        pwVar9 = pwVar9 + 1;\n        local_resc = iVar4;\n      } while (iVar12 < mblen);\n    }\n  }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (if_statement "if (0 < wclen) {\n      if (mblen < 1) goto LAB_000ca51c;\n      iVar12 = 0;\n      iVar4 = wclen;\n      pwVar9 = wcstr;\n      do {\n        flags = *pwVar9;\n        pcVar5 = mbstr + iVar12;\n        if ((int *)(flags + -0xd800) < (int *)0x100) {\n          iVar12 = iVar12 + 1;\n          *pcVar5 = (char)flags;\n        }\n        else if (defchr != (char *)0x0) {\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }\n        pmVar11 = (mbstate_t *)0xffff2800;\n        local_resc = iVar4 + -1;\n        if (iVar4 + -1 == 0) break;\n        iVar4 = iVar4 + -1;\n        pwVar9 = pwVar9 + 1;\n        local_resc = iVar4;\n      } while (iVar12 < mblen);\n    }" if (parenthesized_expression "(0 < wclen)" ( (binary_expression "0 < wclen" number_literal < identifier) )) (compound_statement "{\n      if (mblen < 1) goto LAB_000ca51c;\n      iVar12 = 0;\n      iVar4 = wclen;\n      pwVar9 = wcstr;\n      do {\n        flags = *pwVar9;\n        pcVar5 = mbstr + iVar12;\n        if ((int *)(flags + -0xd800) < (int *)0x100) {\n          iVar12 = iVar12 + 1;\n          *pcVar5 = (char)flags;\n        }\n        else if (defchr != (char *)0x0) {\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }\n        pmVar11 = (mbstate_t *)0xffff2800;\n        local_resc = iVar4 + -1;\n        if (iVar4 + -1 == 0) break;\n        iVar4 = iVar4 + -1;\n        pwVar9 = pwVar9 + 1;\n        local_resc = iVar4;\n      } while (iVar12 < mblen);\n    }" { (if_statement "if (mblen < 1) goto LAB_000ca51c;" if (parenthesized_expression "(mblen < 1)" ( (binary_expression "mblen < 1" identifier < number_literal) )) (goto_statement "goto LAB_000ca51c;" goto statement_identifier ;)) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = wclen;" (assignment_expression "iVar4 = wclen" identifier = identifier) ;) (expression_statement "pwVar9 = wcstr;" (assignment_expression "pwVar9 = wcstr" identifier = identifier) ;) (do_statement "do {\n        flags = *pwVar9;\n        pcVar5 = mbstr + iVar12;\n        if ((int *)(flags + -0xd800) < (int *)0x100) {\n          iVar12 = iVar12 + 1;\n          *pcVar5 = (char)flags;\n        }\n        else if (defchr != (char *)0x0) {\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }\n        pmVar11 = (mbstate_t *)0xffff2800;\n        local_resc = iVar4 + -1;\n        if (iVar4 + -1 == 0) break;\n        iVar4 = iVar4 + -1;\n        pwVar9 = pwVar9 + 1;\n        local_resc = iVar4;\n      } while (iVar12 < mblen);" do (compound_statement "{\n        flags = *pwVar9;\n        pcVar5 = mbstr + iVar12;\n        if ((int *)(flags + -0xd800) < (int *)0x100) {\n          iVar12 = iVar12 + 1;\n          *pcVar5 = (char)flags;\n        }\n        else if (defchr != (char *)0x0) {\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }\n        pmVar11 = (mbstate_t *)0xffff2800;\n        local_resc = iVar4 + -1;\n        if (iVar4 + -1 == 0) break;\n        iVar4 = iVar4 + -1;\n        pwVar9 = pwVar9 + 1;\n        local_resc = iVar4;\n      }" { (expression_statement "flags = *pwVar9;" (assignment_expression "flags = *pwVar9" identifier = (pointer_expression "*pwVar9" * identifier)) ;) (expression_statement "pcVar5 = mbstr + iVar12;" (assignment_expression "pcVar5 = mbstr + iVar12" identifier = (binary_expression "mbstr + iVar12" identifier + identifier)) ;) (if_statement "if ((int *)(flags + -0xd800) < (int *)0x100) {\n          iVar12 = iVar12 + 1;\n          *pcVar5 = (char)flags;\n        }\n        else if (defchr != (char *)0x0) {\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }" if (parenthesized_expression "((int *)(flags + -0xd800) < (int *)0x100)" ( (binary_expression "(int *)(flags + -0xd800) < (int *)0x100" (cast_expression "(int *)(flags + -0xd800)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(flags + -0xd800)" ( (binary_expression "flags + -0xd800" identifier + number_literal) ))) < (cast_expression "(int *)0x100" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar12 = iVar12 + 1;\n          *pcVar5 = (char)flags;\n        }" { (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar5 = (char)flags;" (assignment_expression "*pcVar5 = (char)flags" (pointer_expression "*pcVar5" * identifier) = (cast_expression "(char)flags" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else if (defchr != (char *)0x0) {\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }" else (if_statement "if (defchr != (char *)0x0) {\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }" if (parenthesized_expression "(defchr != (char *)0x0)" ( (binary_expression "defchr != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          flags = (int)*defchr;\n          iVar12 = iVar12 + 1;\n          *pcVar5 = *defchr;\n        }" { (expression_statement "flags = (int)*defchr;" (assignment_expression "flags = (int)*defchr" identifier = (cast_expression "(int)*defchr" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*defchr" * identifier))) ;) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar5 = *defchr;" (assignment_expression "*pcVar5 = *defchr" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*defchr" * identifier)) ;) })))) (expression_statement "pmVar11 = (mbstate_t *)0xffff2800;" (assignment_expression "pmVar11 = (mbstate_t *)0xffff2800" identifier = (cast_expression "(mbstate_t *)0xffff2800" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_resc = iVar4 + -1;" (assignment_expression "local_resc = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (if_statement "if (iVar4 + -1 == 0) break;" if (parenthesized_expression "(iVar4 + -1 == 0)" ( (binary_expression "iVar4 + -1 == 0" (binary_expression "iVar4 + -1" identifier + number_literal) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "pwVar9 = pwVar9 + 1;" (assignment_expression "pwVar9 = pwVar9 + 1" identifier = (binary_expression "pwVar9 + 1" identifier + number_literal)) ;) (expression_statement "local_resc = iVar4;" (assignment_expression "local_resc = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar12 < mblen)" ( (binary_expression "iVar12 < mblen" identifier < identifier) )) ;) })) }) (else_clause "else {\n    flags = (int)&local_resc;\n    pmVar11 = (mbstate_t *)mbstr;\n    iVar6 = mblen;\n    iVar12 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = codepage;\n  }" else (compound_statement "{\n    flags = (int)&local_resc;\n    pmVar11 = (mbstate_t *)mbstr;\n    iVar6 = mblen;\n    iVar12 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = codepage;\n  }" { (expression_statement "flags = (int)&local_resc;" (assignment_expression "flags = (int)&local_resc" identifier = (cast_expression "(int)&local_resc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_resc" & identifier))) ;) (expression_statement "pmVar11 = (mbstate_t *)mbstr;" (assignment_expression "pmVar11 = (mbstate_t *)mbstr" identifier = (cast_expression "(mbstate_t *)mbstr" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar6 = mblen;" (assignment_expression "iVar6 = mblen" identifier = identifier) ;) (expression_statement "iVar12 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);" (assignment_expression "iVar12 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c)" identifier = (call_expression "(*(code *)PTR_charset_from_unicode_00111d40)(local_4c)" (parenthesized_expression "(*(code *)PTR_charset_from_unicode_00111d40)" ( (pointer_expression "*(code *)PTR_charset_from_unicode_00111d40" * (cast_expression "(code *)PTR_charset_from_unicode_00111d40" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_4c)" ( identifier )))) ;) (expression_statement "local_68 = codepage;" (assignment_expression "local_68 = codepage" identifier = identifier) ;) }))))) (if_statement "if (iVar8 == *(int *)puVar2) {\n    return iVar12;\n  }" if (parenthesized_expression "(iVar8 == *(int *)puVar2)" ( (binary_expression "iVar8 == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar12;\n  }" { (return_statement "return iVar12;" return identifier ;) })) (expression_statement "puVar16 = PTR___stack_chk_fail_001122c8;" (assignment_expression "puVar16 = PTR___stack_chk_fail_001122c8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001122c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_001122c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001122c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001122c8" * (cast_expression "(code *)PTR___stack_chk_fail_001122c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar3 = *(int **)(puVar16 + 0x48100);" (assignment_expression "piVar3 = *(int **)(puVar16 + 0x48100)" identifier = (pointer_expression "*(int **)(puVar16 + 0x48100)" * (cast_expression "(int **)(puVar16 + 0x48100)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x48100)" ( (binary_expression "puVar16 + 0x48100" identifier + number_literal) ))))) ;) (expression_statement "iStack_98 = mblen;" (assignment_expression "iStack_98 = mblen" identifier = identifier) ;) (expression_statement "puStack_9c = puVar2;" (assignment_expression "puStack_9c = puVar2" identifier = identifier) ;) (expression_statement "pcStack_94 = mbstr;" (assignment_expression "pcStack_94 = mbstr" identifier = identifier) ;) (expression_statement "*(undefined4 *)(iVar8 + 8) = 0xffffffff;" (assignment_expression "*(undefined4 *)(iVar8 + 8) = 0xffffffff" (pointer_expression "*(undefined4 *)(iVar8 + 8)" * (cast_expression "(undefined4 *)(iVar8 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar8 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar8 + 0xc)" * (cast_expression "(undefined4 *)(iVar8 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iStack_a4 = *piVar3;" (assignment_expression "iStack_a4 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "iStack_a0 = iVar12;" (assignment_expression "iStack_a0 = iVar12" identifier = identifier) ;) (expression_statement "pmStack_90 = unaff_s4;" (assignment_expression "pmStack_90 = unaff_s4" identifier = identifier) ;) (expression_statement "uStack_8c = unaff_s5;" (assignment_expression "uStack_8c = unaff_s5" identifier = identifier) ;) (expression_statement "piStack_88 = unaff_s6;" (assignment_expression "piStack_88 = unaff_s6" identifier = identifier) ;) (expression_statement "pmStack_84 = &state;" (assignment_expression "pmStack_84 = &state" identifier = (pointer_expression "&state" & identifier)) ;) (if_statement "if (pmVar11 != (mbstate_t *)0x0) {\n    pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5780);\n    if (((((pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')) ||\n         ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) ||\n        ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c),\n         pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) &&\n       (iVar12 = (**(code **)(puVar16 + 0x48150))(pcVar5,iVar12 + -0x484), iVar12 != 0)) {\n      uStack_c0 = 0;\n      iVar12 = 0x37;\n      *(undefined4 *)(iVar8 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar12 = *(int *)(iVar8 + 0xc);\n    if (iVar12 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }" if (parenthesized_expression "(pmVar11 != (mbstate_t *)0x0)" ( (binary_expression "pmVar11 != (mbstate_t *)0x0" identifier != (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5780);\n    if (((((pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')) ||\n         ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) ||\n        ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c),\n         pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) &&\n       (iVar12 = (**(code **)(puVar16 + 0x48150))(pcVar5,iVar12 + -0x484), iVar12 != 0)) {\n      uStack_c0 = 0;\n      iVar12 = 0x37;\n      *(undefined4 *)(iVar8 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar12 = *(int *)(iVar8 + 0xc);\n    if (iVar12 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }" { (expression_statement "pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5780);" (assignment_expression "pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5780)" identifier = (cast_expression "(char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5780)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5780)" (parenthesized_expression "(**(code **)(puVar16 + 0x47e74))" ( (pointer_expression "**(code **)(puVar16 + 0x47e74)" * (pointer_expression "*(code **)(puVar16 + 0x47e74)" * (cast_expression "(code **)(puVar16 + 0x47e74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x47e74)" ( (binary_expression "puVar16 + 0x47e74" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar16 + 0x46dc4) + -0x5780)" ( (binary_expression "*(int *)(puVar16 + 0x46dc4) + -0x5780" (pointer_expression "*(int *)(puVar16 + 0x46dc4)" * (cast_expression "(int *)(puVar16 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x46dc4)" ( (binary_expression "puVar16 + 0x46dc4" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (((((pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')) ||\n         ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) ||\n        ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c),\n         pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) &&\n       (iVar12 = (**(code **)(puVar16 + 0x48150))(pcVar5,iVar12 + -0x484), iVar12 != 0)) {\n      uStack_c0 = 0;\n      iVar12 = 0x37;\n      *(undefined4 *)(iVar8 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }" if (parenthesized_expression "(((((pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')) ||\n         ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) ||\n        ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c),\n         pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) &&\n       (iVar12 = (**(code **)(puVar16 + 0x48150))(pcVar5,iVar12 + -0x484), iVar12 != 0))" ( (binary_expression "((((pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')) ||\n         ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) ||\n        ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c),\n         pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) &&\n       (iVar12 = (**(code **)(puVar16 + 0x48150))(pcVar5,iVar12 + -0x484), iVar12 != 0)" (parenthesized_expression "((((pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')) ||\n         ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) ||\n        ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c),\n         pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0'))))" ( (binary_expression "(((pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')) ||\n         ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))) ||\n        ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c),\n         pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))" (parenthesized_expression "(((pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')) ||\n         ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0'))))" ( (binary_expression "((pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')) ||\n         ((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))" (parenthesized_expression "((pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0'))" ( (binary_expression "(pcVar5 != (char *)0x0) && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')" (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')" ( (comma_expression "iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0'" (assignment_expression "iVar12 = *(int *)(puVar16 + 0x46db8)" identifier = (pointer_expression "*(int *)(puVar16 + 0x46db8)" * (cast_expression "(int *)(puVar16 + 0x46db8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x46db8)" ( (binary_expression "puVar16 + 0x46db8" identifier + number_literal) ))))) , (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence '))) ))) )) || (parenthesized_expression "((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))" ( (parenthesized_expression "(pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0'))" ( (comma_expression "pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778),\n          pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')" (assignment_expression "pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778)" identifier = (cast_expression "(char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x5778)" (parenthesized_expression "(**(code **)(puVar16 + 0x47e74))" ( (pointer_expression "**(code **)(puVar16 + 0x47e74)" * (pointer_expression "*(code **)(puVar16 + 0x47e74)" * (cast_expression "(code **)(puVar16 + 0x47e74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x47e74)" ( (binary_expression "puVar16 + 0x47e74" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar16 + 0x46dc4) + -0x5778)" ( (binary_expression "*(int *)(puVar16 + 0x46dc4) + -0x5778" (pointer_expression "*(int *)(puVar16 + 0x46dc4)" * (cast_expression "(int *)(puVar16 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x46dc4)" ( (binary_expression "puVar16 + 0x46dc4" identifier + number_literal) )))) + number_literal) ))))) , (binary_expression "pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')" (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')" ( (comma_expression "iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0'" (assignment_expression "iVar12 = *(int *)(puVar16 + 0x46db8)" identifier = (pointer_expression "*(int *)(puVar16 + 0x46db8)" * (cast_expression "(int *)(puVar16 + 0x46db8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x46db8)" ( (binary_expression "puVar16 + 0x46db8" identifier + number_literal) ))))) , (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence '))) )))) )) ))) )) || (parenthesized_expression "((pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c),\n         pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')))" ( (parenthesized_expression "(pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c),\n         pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0'))" ( (comma_expression "pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c),\n         pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')" (assignment_expression "pcVar5 = (char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c)" identifier = (cast_expression "(char *)(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar16 + 0x47e74))(*(int *)(puVar16 + 0x46dc4) + -0x576c)" (parenthesized_expression "(**(code **)(puVar16 + 0x47e74))" ( (pointer_expression "**(code **)(puVar16 + 0x47e74)" * (pointer_expression "*(code **)(puVar16 + 0x47e74)" * (cast_expression "(code **)(puVar16 + 0x47e74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x47e74)" ( (binary_expression "puVar16 + 0x47e74" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar16 + 0x46dc4) + -0x576c)" ( (binary_expression "*(int *)(puVar16 + 0x46dc4) + -0x576c" (pointer_expression "*(int *)(puVar16 + 0x46dc4)" * (cast_expression "(int *)(puVar16 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x46dc4)" ( (binary_expression "puVar16 + 0x46dc4" identifier + number_literal) )))) + number_literal) ))))) , (binary_expression "pcVar5 != (char *)0x0 && (iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')" (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0')" ( (comma_expression "iVar12 = *(int *)(puVar16 + 0x46db8), *pcVar5 != '\0'" (assignment_expression "iVar12 = *(int *)(puVar16 + 0x46db8)" identifier = (pointer_expression "*(int *)(puVar16 + 0x46db8)" * (cast_expression "(int *)(puVar16 + 0x46db8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x46db8)" ( (binary_expression "puVar16 + 0x46db8" identifier + number_literal) ))))) , (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence '))) )))) )) ))) )) && (parenthesized_expression "(iVar12 = (**(code **)(puVar16 + 0x48150))(pcVar5,iVar12 + -0x484), iVar12 != 0)" ( (comma_expression "iVar12 = (**(code **)(puVar16 + 0x48150))(pcVar5,iVar12 + -0x484), iVar12 != 0" (assignment_expression "iVar12 = (**(code **)(puVar16 + 0x48150))(pcVar5,iVar12 + -0x484)" identifier = (call_expression "(**(code **)(puVar16 + 0x48150))(pcVar5,iVar12 + -0x484)" (parenthesized_expression "(**(code **)(puVar16 + 0x48150))" ( (pointer_expression "**(code **)(puVar16 + 0x48150)" * (pointer_expression "*(code **)(puVar16 + 0x48150)" * (cast_expression "(code **)(puVar16 + 0x48150)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x48150)" ( (binary_expression "puVar16 + 0x48150" identifier + number_literal) ))))) )) (argument_list "(pcVar5,iVar12 + -0x484)" ( identifier , (binary_expression "iVar12 + -0x484" identifier + number_literal) )))) , (binary_expression "iVar12 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      uStack_c0 = 0;\n      iVar12 = 0x37;\n      *(undefined4 *)(iVar8 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }" { (expression_statement "uStack_c0 = 0;" (assignment_expression "uStack_c0 = 0" identifier = number_literal) ;) (expression_statement "iVar12 = 0x37;" (assignment_expression "iVar12 = 0x37" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(iVar8 + 0xc) = 0x37;" (assignment_expression "*(undefined4 *)(iVar8 + 0xc) = 0x37" (pointer_expression "*(undefined4 *)(iVar8 + 0xc)" * (cast_expression "(undefined4 *)(iVar8 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_000ca5d4;" goto statement_identifier ;) })) (expression_statement "iVar12 = *(int *)(iVar8 + 0xc);" (assignment_expression "iVar12 = *(int *)(iVar8 + 0xc)" identifier = (pointer_expression "*(int *)(iVar8 + 0xc)" * (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar12 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }" { (expression_statement "uStack_c0 = 0;" (assignment_expression "uStack_c0 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000ca5d4;" goto statement_identifier ;) })) })) (expression_statement "iVar12 = 0x37;" (assignment_expression "iVar12 = 0x37" identifier = number_literal) ;) (if_statement "if ((int *)flags != (int *)0x0) {\n    if (*(char *)flags == '\0') {\n      iVar12 = 0x37;\n    }\n    else {\n      iVar12 = (**(code **)(puVar16 + 0x47974))(flags);\n      if (iVar12 == 0) {\n        uStack_c0 = (uint)(iVar6 == 0);\n        *(int *)(iVar8 + 0xc) = iVar6;\n        iVar12 = iVar6;\n        goto LAB_000ca5d4;\n      }\n    }\n  }" if (parenthesized_expression "((int *)flags != (int *)0x0)" ( (binary_expression "(int *)flags != (int *)0x0" (cast_expression "(int *)flags" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (*(char *)flags == '\0') {\n      iVar12 = 0x37;\n    }\n    else {\n      iVar12 = (**(code **)(puVar16 + 0x47974))(flags);\n      if (iVar12 == 0) {\n        uStack_c0 = (uint)(iVar6 == 0);\n        *(int *)(iVar8 + 0xc) = iVar6;\n        iVar12 = iVar6;\n        goto LAB_000ca5d4;\n      }\n    }\n  }" { (if_statement "if (*(char *)flags == '\0') {\n      iVar12 = 0x37;\n    }\n    else {\n      iVar12 = (**(code **)(puVar16 + 0x47974))(flags);\n      if (iVar12 == 0) {\n        uStack_c0 = (uint)(iVar6 == 0);\n        *(int *)(iVar8 + 0xc) = iVar6;\n        iVar12 = iVar6;\n        goto LAB_000ca5d4;\n      }\n    }" if (parenthesized_expression "(*(char *)flags == '\0')" ( (binary_expression "*(char *)flags == '\0'" (pointer_expression "*(char *)flags" * (cast_expression "(char *)flags" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar12 = 0x37;\n    }" { (expression_statement "iVar12 = 0x37;" (assignment_expression "iVar12 = 0x37" identifier = number_literal) ;) }) (else_clause "else {\n      iVar12 = (**(code **)(puVar16 + 0x47974))(flags);\n      if (iVar12 == 0) {\n        uStack_c0 = (uint)(iVar6 == 0);\n        *(int *)(iVar8 + 0xc) = iVar6;\n        iVar12 = iVar6;\n        goto LAB_000ca5d4;\n      }\n    }" else (compound_statement "{\n      iVar12 = (**(code **)(puVar16 + 0x47974))(flags);\n      if (iVar12 == 0) {\n        uStack_c0 = (uint)(iVar6 == 0);\n        *(int *)(iVar8 + 0xc) = iVar6;\n        iVar12 = iVar6;\n        goto LAB_000ca5d4;\n      }\n    }" { (expression_statement "iVar12 = (**(code **)(puVar16 + 0x47974))(flags);" (assignment_expression "iVar12 = (**(code **)(puVar16 + 0x47974))(flags)" identifier = (call_expression "(**(code **)(puVar16 + 0x47974))(flags)" (parenthesized_expression "(**(code **)(puVar16 + 0x47974))" ( (pointer_expression "**(code **)(puVar16 + 0x47974)" * (pointer_expression "*(code **)(puVar16 + 0x47974)" * (cast_expression "(code **)(puVar16 + 0x47974)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x47974)" ( (binary_expression "puVar16 + 0x47974" identifier + number_literal) ))))) )) (argument_list "(flags)" ( identifier )))) ;) (if_statement "if (iVar12 == 0) {\n        uStack_c0 = (uint)(iVar6 == 0);\n        *(int *)(iVar8 + 0xc) = iVar6;\n        iVar12 = iVar6;\n        goto LAB_000ca5d4;\n      }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        uStack_c0 = (uint)(iVar6 == 0);\n        *(int *)(iVar8 + 0xc) = iVar6;\n        iVar12 = iVar6;\n        goto LAB_000ca5d4;\n      }" { (expression_statement "uStack_c0 = (uint)(iVar6 == 0);" (assignment_expression "uStack_c0 = (uint)(iVar6 == 0)" identifier = (call_expression "(uint)(iVar6 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )))) ;) (expression_statement "*(int *)(iVar8 + 0xc) = iVar6;" (assignment_expression "*(int *)(iVar8 + 0xc) = iVar6" (pointer_expression "*(int *)(iVar8 + 0xc)" * (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar12 = iVar6;" (assignment_expression "iVar12 = iVar6" identifier = identifier) ;) (goto_statement "goto LAB_000ca5d4;" goto statement_identifier ;) })) }))) })) (expression_statement "*(int *)(iVar8 + 0xc) = iVar12;" (assignment_expression "*(int *)(iVar8 + 0xc) = iVar12" (pointer_expression "*(int *)(iVar8 + 0xc)" * (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "uStack_c0 = 0;" (assignment_expression "uStack_c0 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000ca5d4:\n  puVar15 = (uint *)(iVar8 + 0x410);" statement_identifier : (expression_statement "puVar15 = (uint *)(iVar8 + 0x410);" (assignment_expression "puVar15 = (uint *)(iVar8 + 0x410)" identifier = (cast_expression "(uint *)(iVar8 + 0x410)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x410)" ( (binary_expression "iVar8 + 0x410" identifier + number_literal) )))) ;)) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = *(int *)(puVar16 + 0x46dc4);" (assignment_expression "iVar6 = *(int *)(puVar16 + 0x46dc4)" identifier = (pointer_expression "*(int *)(puVar16 + 0x46dc4)" * (cast_expression "(int *)(puVar16 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x46dc4)" ( (binary_expression "puVar16 + 0x46dc4" identifier + number_literal) ))))) ;) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" identifier = identifier) ;) (while_statement "while( true ) {\n    auStack_a8[0] = (undefined1)uVar13;\n    uStack_b0 = 1;\n    if (iVar12 == 0) {\n      *puVar14 = uVar13 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar12 = (**(code **)(puVar16 + 0x47970))\n                         (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar12,0,iVar6 + -0x7b5c,0);\n      if (iVar12 == 1) {\n        *puVar14 = uStack_ac;\n      }\n      else {\n        *puVar14 = 0xfffd;\n      }\n    }\n    if (uVar13 == 0xff) break;\n    puVar14 = puVar14 + 1;\n    uVar13 = uVar13 + 1;\n    iVar12 = *(int *)(iVar8 + 0xc);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    auStack_a8[0] = (undefined1)uVar13;\n    uStack_b0 = 1;\n    if (iVar12 == 0) {\n      *puVar14 = uVar13 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar12 = (**(code **)(puVar16 + 0x47970))\n                         (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar12,0,iVar6 + -0x7b5c,0);\n      if (iVar12 == 1) {\n        *puVar14 = uStack_ac;\n      }\n      else {\n        *puVar14 = 0xfffd;\n      }\n    }\n    if (uVar13 == 0xff) break;\n    puVar14 = puVar14 + 1;\n    uVar13 = uVar13 + 1;\n    iVar12 = *(int *)(iVar8 + 0xc);\n  }" { (expression_statement "auStack_a8[0] = (undefined1)uVar13;" (assignment_expression "auStack_a8[0] = (undefined1)uVar13" (subscript_expression "auStack_a8[0]" identifier [ number_literal ]) = (cast_expression "(undefined1)uVar13" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uStack_b0 = 1;" (assignment_expression "uStack_b0 = 1" identifier = number_literal) ;) (if_statement "if (iVar12 == 0) {\n      *puVar14 = uVar13 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar12 = (**(code **)(puVar16 + 0x47970))\n                         (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar12,0,iVar6 + -0x7b5c,0);\n      if (iVar12 == 1) {\n        *puVar14 = uStack_ac;\n      }\n      else {\n        *puVar14 = 0xfffd;\n      }\n    }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n      *puVar14 = uVar13 | 0xd800;\n    }" { (expression_statement "*puVar14 = uVar13 | 0xd800;" (assignment_expression "*puVar14 = uVar13 | 0xd800" (pointer_expression "*puVar14" * identifier) = (binary_expression "uVar13 | 0xd800" identifier | number_literal)) ;) }) (else_clause "else {\n      puStack_b4 = auStack_a8;\n      iVar12 = (**(code **)(puVar16 + 0x47970))\n                         (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar12,0,iVar6 + -0x7b5c,0);\n      if (iVar12 == 1) {\n        *puVar14 = uStack_ac;\n      }\n      else {\n        *puVar14 = 0xfffd;\n      }\n    }" else (compound_statement "{\n      puStack_b4 = auStack_a8;\n      iVar12 = (**(code **)(puVar16 + 0x47970))\n                         (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar12,0,iVar6 + -0x7b5c,0);\n      if (iVar12 == 1) {\n        *puVar14 = uStack_ac;\n      }\n      else {\n        *puVar14 = 0xfffd;\n      }\n    }" { (expression_statement "puStack_b4 = auStack_a8;" (assignment_expression "puStack_b4 = auStack_a8" identifier = identifier) ;) (expression_statement "iVar12 = (**(code **)(puVar16 + 0x47970))\n                         (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar12,0,iVar6 + -0x7b5c,0);" (assignment_expression "iVar12 = (**(code **)(puVar16 + 0x47970))\n                         (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar12,0,iVar6 + -0x7b5c,0)" identifier = (call_expression "(**(code **)(puVar16 + 0x47970))\n                         (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar12,0,iVar6 + -0x7b5c,0)" (parenthesized_expression "(**(code **)(puVar16 + 0x47970))" ( (pointer_expression "**(code **)(puVar16 + 0x47970)" * (pointer_expression "*(code **)(puVar16 + 0x47970)" * (cast_expression "(code **)(puVar16 + 0x47970)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x47970)" ( (binary_expression "puVar16 + 0x47970" identifier + number_literal) ))))) )) (argument_list "(&puStack_b4,&uStack_b0,&uStack_ac,1,iVar12,0,iVar6 + -0x7b5c,0)" ( (pointer_expression "&puStack_b4" & identifier) , (pointer_expression "&uStack_b0" & identifier) , (pointer_expression "&uStack_ac" & identifier) , number_literal , identifier , number_literal , (binary_expression "iVar6 + -0x7b5c" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar12 == 1) {\n        *puVar14 = uStack_ac;\n      }\n      else {\n        *puVar14 = 0xfffd;\n      }" if (parenthesized_expression "(iVar12 == 1)" ( (binary_expression "iVar12 == 1" identifier == number_literal) )) (compound_statement "{\n        *puVar14 = uStack_ac;\n      }" { (expression_statement "*puVar14 = uStack_ac;" (assignment_expression "*puVar14 = uStack_ac" (pointer_expression "*puVar14" * identifier) = identifier) ;) }) (else_clause "else {\n        *puVar14 = 0xfffd;\n      }" else (compound_statement "{\n        *puVar14 = 0xfffd;\n      }" { (expression_statement "*puVar14 = 0xfffd;" (assignment_expression "*puVar14 = 0xfffd" (pointer_expression "*puVar14" * identifier) = number_literal) ;) }))) }))) (if_statement "if (uVar13 == 0xff) break;" if (parenthesized_expression "(uVar13 == 0xff)" ( (binary_expression "uVar13 == 0xff" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = *(int *)(iVar8 + 0xc);" (assignment_expression "iVar12 = *(int *)(iVar8 + 0xc)" identifier = (pointer_expression "*(int *)(iVar8 + 0xc)" * (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) ))))) ;) })) (expression_statement "puVar7 = (undefined4 *)(iVar8 + 0xc10);" (assignment_expression "puVar7 = (undefined4 *)(iVar8 + 0xc10)" identifier = (cast_expression "(undefined4 *)(iVar8 + 0xc10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc10)" ( (binary_expression "iVar8 + 0xc10" identifier + number_literal) )))) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "iVar12 = *(int *)(puVar16 + 0x46dc4) + -0x5750;" (assignment_expression "iVar12 = *(int *)(puVar16 + 0x46dc4) + -0x5750" identifier = (binary_expression "*(int *)(puVar16 + 0x46dc4) + -0x5750" (pointer_expression "*(int *)(puVar16 + 0x46dc4)" * (cast_expression "(int *)(puVar16 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x46dc4)" ( (binary_expression "puVar16 + 0x46dc4" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (local_68 == 3) {\n    iVar12 = *(int *)(puVar16 + 0x46dc4) + -0x56d0;\n  }" if (parenthesized_expression "(local_68 == 3)" ( (binary_expression "local_68 == 3" identifier == number_literal) )) (compound_statement "{\n    iVar12 = *(int *)(puVar16 + 0x46dc4) + -0x56d0;\n  }" { (expression_statement "iVar12 = *(int *)(puVar16 + 0x46dc4) + -0x56d0;" (assignment_expression "iVar12 = *(int *)(puVar16 + 0x46dc4) + -0x56d0" identifier = (binary_expression "*(int *)(puVar16 + 0x46dc4) + -0x56d0" (pointer_expression "*(int *)(puVar16 + 0x46dc4)" * (cast_expression "(int *)(puVar16 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x46dc4)" ( (binary_expression "puVar16 + 0x46dc4" identifier + number_literal) )))) + number_literal)) ;) })) (while_statement "while( true ) {\n    while (uVar10 = uVar13 + 1, uVar13 - 0x5f < 0x20) {\n      *puVar7 = *(undefined4 *)(iVar12 + (uVar13 & 0x1f) * 4);\n      puVar7 = puVar7 + 1;\n      uVar13 = uVar10;\n    }\n    *puVar7 = puVar7[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar7 = puVar7 + 1;\n    uVar13 = uVar10;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    while (uVar10 = uVar13 + 1, uVar13 - 0x5f < 0x20) {\n      *puVar7 = *(undefined4 *)(iVar12 + (uVar13 & 0x1f) * 4);\n      puVar7 = puVar7 + 1;\n      uVar13 = uVar10;\n    }\n    *puVar7 = puVar7[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar7 = puVar7 + 1;\n    uVar13 = uVar10;\n  }" { (while_statement "while (uVar10 = uVar13 + 1, uVar13 - 0x5f < 0x20) {\n      *puVar7 = *(undefined4 *)(iVar12 + (uVar13 & 0x1f) * 4);\n      puVar7 = puVar7 + 1;\n      uVar13 = uVar10;\n    }" while (parenthesized_expression "(uVar10 = uVar13 + 1, uVar13 - 0x5f < 0x20)" ( (comma_expression "uVar10 = uVar13 + 1, uVar13 - 0x5f < 0x20" (assignment_expression "uVar10 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) , (binary_expression "uVar13 - 0x5f < 0x20" (binary_expression "uVar13 - 0x5f" identifier - number_literal) < number_literal)) )) (compound_statement "{\n      *puVar7 = *(undefined4 *)(iVar12 + (uVar13 & 0x1f) * 4);\n      puVar7 = puVar7 + 1;\n      uVar13 = uVar10;\n    }" { (expression_statement "*puVar7 = *(undefined4 *)(iVar12 + (uVar13 & 0x1f) * 4);" (assignment_expression "*puVar7 = *(undefined4 *)(iVar12 + (uVar13 & 0x1f) * 4)" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*(undefined4 *)(iVar12 + (uVar13 & 0x1f) * 4)" * (cast_expression "(undefined4 *)(iVar12 + (uVar13 & 0x1f) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + (uVar13 & 0x1f) * 4)" ( (binary_expression "iVar12 + (uVar13 & 0x1f) * 4" identifier + (binary_expression "(uVar13 & 0x1f) * 4" (parenthesized_expression "(uVar13 & 0x1f)" ( (binary_expression "uVar13 & 0x1f" identifier & number_literal) )) * number_literal)) ))))) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar13 = uVar10;" (assignment_expression "uVar13 = uVar10" identifier = identifier) ;) })) (expression_statement "*puVar7 = puVar7[-0x200];" (assignment_expression "*puVar7 = puVar7[-0x200]" (pointer_expression "*puVar7" * identifier) = (subscript_expression "puVar7[-0x200]" identifier [ number_literal ])) ;) (if_statement "if (uVar10 == 0x100) break;" if (parenthesized_expression "(uVar10 == 0x100)" ( (binary_expression "uVar10 == 0x100" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar13 = uVar10;" (assignment_expression "uVar13 = uVar10" identifier = identifier) ;) })) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar14 = (uint *)(iVar8 + 0x10);" (assignment_expression "puVar14 = (uint *)(iVar8 + 0x10)" identifier = (cast_expression "(uint *)(iVar8 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) ;) (do_statement "do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar12;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar16 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar6 + -0x7b5c,0);\n      if (iVar4 != 1) break;\n      iVar12 = iVar12 + 1;\n      *puVar14 = uStack_ac;\n      puVar14 = puVar14 + 1;\n      if (iVar12 == 0x100) goto LAB_000ca778;\n    }\n    iVar12 = iVar12 + 1;\n    *puVar14 = 0xfffd;\n    puVar14 = puVar14 + 1;\n  } while (iVar12 != 0x100);" do (compound_statement "{\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar12;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar16 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar6 + -0x7b5c,0);\n      if (iVar4 != 1) break;\n      iVar12 = iVar12 + 1;\n      *puVar14 = uStack_ac;\n      puVar14 = puVar14 + 1;\n      if (iVar12 == 0x100) goto LAB_000ca778;\n    }\n    iVar12 = iVar12 + 1;\n    *puVar14 = 0xfffd;\n    puVar14 = puVar14 + 1;\n  }" { (while_statement "while( true ) {\n      auStack_a8[0] = (undefined1)iVar12;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar16 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar6 + -0x7b5c,0);\n      if (iVar4 != 1) break;\n      iVar12 = iVar12 + 1;\n      *puVar14 = uStack_ac;\n      puVar14 = puVar14 + 1;\n      if (iVar12 == 0x100) goto LAB_000ca778;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      auStack_a8[0] = (undefined1)iVar12;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar16 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar6 + -0x7b5c,0);\n      if (iVar4 != 1) break;\n      iVar12 = iVar12 + 1;\n      *puVar14 = uStack_ac;\n      puVar14 = puVar14 + 1;\n      if (iVar12 == 0x100) goto LAB_000ca778;\n    }" { (expression_statement "auStack_a8[0] = (undefined1)iVar12;" (assignment_expression "auStack_a8[0] = (undefined1)iVar12" (subscript_expression "auStack_a8[0]" identifier [ number_literal ]) = (cast_expression "(undefined1)iVar12" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uStack_b0 = 1;" (assignment_expression "uStack_b0 = 1" identifier = number_literal) ;) (expression_statement "puStack_b4 = auStack_a8;" (assignment_expression "puStack_b4 = auStack_a8" identifier = identifier) ;) (expression_statement "iVar4 = (**(code **)(puVar16 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar6 + -0x7b5c,0);" (assignment_expression "iVar4 = (**(code **)(puVar16 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar6 + -0x7b5c,0)" identifier = (call_expression "(**(code **)(puVar16 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar6 + -0x7b5c,0)" (parenthesized_expression "(**(code **)(puVar16 + 0x47970))" ( (pointer_expression "**(code **)(puVar16 + 0x47970)" * (pointer_expression "*(code **)(puVar16 + 0x47970)" * (cast_expression "(code **)(puVar16 + 0x47970)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x47970)" ( (binary_expression "puVar16 + 0x47970" identifier + number_literal) ))))) )) (argument_list "(&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar6 + -0x7b5c,0)" ( (pointer_expression "&puStack_b4" & identifier) , (pointer_expression "&uStack_b0" & identifier) , (pointer_expression "&uStack_ac" & identifier) , number_literal , number_literal , number_literal , (binary_expression "iVar6 + -0x7b5c" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar4 != 1) break;" if (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "*puVar14 = uStack_ac;" (assignment_expression "*puVar14 = uStack_ac" (pointer_expression "*puVar14" * identifier) = identifier) ;) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (if_statement "if (iVar12 == 0x100) goto LAB_000ca778;" if (parenthesized_expression "(iVar12 == 0x100)" ( (binary_expression "iVar12 == 0x100" identifier == number_literal) )) (goto_statement "goto LAB_000ca778;" goto statement_identifier ;)) })) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "*puVar14 = 0xfffd;" (assignment_expression "*puVar14 = 0xfffd" (pointer_expression "*puVar14" * identifier) = number_literal) ;) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar12 != 0x100)" ( (binary_expression "iVar12 != 0x100" identifier != number_literal) )) ;) (labeled_statement "LAB_000ca778:\n  iVar6 = 0;" statement_identifier : (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;)) (do_statement "do {\n    while( true ) {\n      uVar13 = *puVar15;\n      if ((((0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f)) && (0x1f < uVar13 - 0xd800)) &&\n         (iVar12 = iVar8 + iVar6, uVar13 != 0xd87f)) break;\n      iVar12 = iVar8 + iVar6;\n      uVar1 = (undefined1)iVar6;\n      iVar6 = iVar6 + 1;\n      puVar15 = puVar15 + 1;\n      *(undefined1 *)(iVar12 + 0x1410) = uVar1;\n      if (iVar6 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar6 = iVar6 + 1;\n    puVar15 = puVar15 + 1;\n    *(undefined1 *)(iVar12 + 0x1410) = 0xff;\n  } while (iVar6 != 0x100);" do (compound_statement "{\n    while( true ) {\n      uVar13 = *puVar15;\n      if ((((0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f)) && (0x1f < uVar13 - 0xd800)) &&\n         (iVar12 = iVar8 + iVar6, uVar13 != 0xd87f)) break;\n      iVar12 = iVar8 + iVar6;\n      uVar1 = (undefined1)iVar6;\n      iVar6 = iVar6 + 1;\n      puVar15 = puVar15 + 1;\n      *(undefined1 *)(iVar12 + 0x1410) = uVar1;\n      if (iVar6 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar6 = iVar6 + 1;\n    puVar15 = puVar15 + 1;\n    *(undefined1 *)(iVar12 + 0x1410) = 0xff;\n  }" { (while_statement "while( true ) {\n      uVar13 = *puVar15;\n      if ((((0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f)) && (0x1f < uVar13 - 0xd800)) &&\n         (iVar12 = iVar8 + iVar6, uVar13 != 0xd87f)) break;\n      iVar12 = iVar8 + iVar6;\n      uVar1 = (undefined1)iVar6;\n      iVar6 = iVar6 + 1;\n      puVar15 = puVar15 + 1;\n      *(undefined1 *)(iVar12 + 0x1410) = uVar1;\n      if (iVar6 == 0x100) goto LAB_000ca7ec;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar13 = *puVar15;\n      if ((((0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f)) && (0x1f < uVar13 - 0xd800)) &&\n         (iVar12 = iVar8 + iVar6, uVar13 != 0xd87f)) break;\n      iVar12 = iVar8 + iVar6;\n      uVar1 = (undefined1)iVar6;\n      iVar6 = iVar6 + 1;\n      puVar15 = puVar15 + 1;\n      *(undefined1 *)(iVar12 + 0x1410) = uVar1;\n      if (iVar6 == 0x100) goto LAB_000ca7ec;\n    }" { (expression_statement "uVar13 = *puVar15;" (assignment_expression "uVar13 = *puVar15" identifier = (pointer_expression "*puVar15" * identifier)) ;) (if_statement "if ((((0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f)) && (0x1f < uVar13 - 0xd800)) &&\n         (iVar12 = iVar8 + iVar6, uVar13 != 0xd87f)) break;" if (parenthesized_expression "((((0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f)) && (0x1f < uVar13 - 0xd800)) &&\n         (iVar12 = iVar8 + iVar6, uVar13 != 0xd87f))" ( (binary_expression "(((0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f)) && (0x1f < uVar13 - 0xd800)) &&\n         (iVar12 = iVar8 + iVar6, uVar13 != 0xd87f)" (parenthesized_expression "(((0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f)) && (0x1f < uVar13 - 0xd800))" ( (binary_expression "((0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f)) && (0x1f < uVar13 - 0xd800)" (parenthesized_expression "((0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f))" ( (binary_expression "(0x1f < (int)uVar13) && (0x20 < uVar13 - 0x7f)" (parenthesized_expression "(0x1f < (int)uVar13)" ( (binary_expression "0x1f < (int)uVar13" number_literal < (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(0x20 < uVar13 - 0x7f)" ( (binary_expression "0x20 < uVar13 - 0x7f" number_literal < (binary_expression "uVar13 - 0x7f" identifier - number_literal)) ))) )) && (parenthesized_expression "(0x1f < uVar13 - 0xd800)" ( (binary_expression "0x1f < uVar13 - 0xd800" number_literal < (binary_expression "uVar13 - 0xd800" identifier - number_literal)) ))) )) && (parenthesized_expression "(iVar12 = iVar8 + iVar6, uVar13 != 0xd87f)" ( (comma_expression "iVar12 = iVar8 + iVar6, uVar13 != 0xd87f" (assignment_expression "iVar12 = iVar8 + iVar6" identifier = (binary_expression "iVar8 + iVar6" identifier + identifier)) , (binary_expression "uVar13 != 0xd87f" identifier != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar12 = iVar8 + iVar6;" (assignment_expression "iVar12 = iVar8 + iVar6" identifier = (binary_expression "iVar8 + iVar6" identifier + identifier)) ;) (expression_statement "uVar1 = (undefined1)iVar6;" (assignment_expression "uVar1 = (undefined1)iVar6" identifier = (cast_expression "(undefined1)iVar6" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(iVar12 + 0x1410) = uVar1;" (assignment_expression "*(undefined1 *)(iVar12 + 0x1410) = uVar1" (pointer_expression "*(undefined1 *)(iVar12 + 0x1410)" * (cast_expression "(undefined1 *)(iVar12 + 0x1410)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x1410)" ( (binary_expression "iVar12 + 0x1410" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar6 == 0x100) goto LAB_000ca7ec;" if (parenthesized_expression "(iVar6 == 0x100)" ( (binary_expression "iVar6 == 0x100" identifier == number_literal) )) (goto_statement "goto LAB_000ca7ec;" goto statement_identifier ;)) })) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(iVar12 + 0x1410) = 0xff;" (assignment_expression "*(undefined1 *)(iVar12 + 0x1410) = 0xff" (pointer_expression "*(undefined1 *)(iVar12 + 0x1410)" * (cast_expression "(undefined1 *)(iVar12 + 0x1410)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x1410)" ( (binary_expression "iVar12 + 0x1410" identifier + number_literal) )))) = number_literal) ;) }) while (parenthesized_expression "(iVar6 != 0x100)" ( (binary_expression "iVar6 != 0x100" identifier != number_literal) )) ;) (labeled_statement "LAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }" statement_identifier : (if_statement "if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }" if (parenthesized_expression "(iStack_a4 == *piVar3)" ( (binary_expression "iStack_a4 == *piVar3" identifier == (pointer_expression "*piVar3" * identifier)) )) (compound_statement "{\n    return uStack_c0;\n  }" { (return_statement "return uStack_c0;" return identifier ;) }))) (expression_statement "pcVar17 = *(code **)(puVar16 + 0x47d98);" (assignment_expression "pcVar17 = *(code **)(puVar16 + 0x47d98)" identifier = (pointer_expression "*(code **)(puVar16 + 0x47d98)" * (cast_expression "(code **)(puVar16 + 0x47d98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x47d98)" ( (binary_expression "puVar16 + 0x47d98" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = iStack_a4;" (assignment_expression "iVar8 = iStack_a4" identifier = identifier) ;) (expression_statement "(*pcVar17)();" (call_expression "(*pcVar17)()" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar8 == 0) {\n    return *(int *)(pcVar17 + 0x469f0) + -0x5764;\n  }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    return *(int *)(pcVar17 + 0x469f0) + -0x5764;\n  }" { (return_statement "return *(int *)(pcVar17 + 0x469f0) + -0x5764;" return (binary_expression "*(int *)(pcVar17 + 0x469f0) + -0x5764" (pointer_expression "*(int *)(pcVar17 + 0x469f0)" * (cast_expression "(int *)(pcVar17 + 0x469f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x469f0)" ( (binary_expression "pcVar17 + 0x469f0" identifier + number_literal) )))) + number_literal) ;) })) comment comment (expression_statement "iVar8 = (**(code **)(pcVar17 + 0x475a4))();" (assignment_expression "iVar8 = (**(code **)(pcVar17 + 0x475a4))()" identifier = (call_expression "(**(code **)(pcVar17 + 0x475a4))()" (parenthesized_expression "(**(code **)(pcVar17 + 0x475a4))" ( (pointer_expression "**(code **)(pcVar17 + 0x475a4)" * (pointer_expression "*(code **)(pcVar17 + 0x475a4)" * (cast_expression "(code **)(pcVar17 + 0x475a4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x475a4)" ( (binary_expression "pcVar17 + 0x475a4" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar8;" return identifier ;) })))
(translation_unit "uint wc_to_mb(int param_1,int *param_2,undefined4 *param_3,int param_4,undefined4 *param_5,\n             int param_6,char *param_7,undefined4 *param_8)\n\n{\n  undefined1 uVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *unaff_s4;\n  undefined4 unaff_s5;\n  int *unaff_s6;\n  uint *puVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int local_resc;\n  uint uStack_c0;\n  undefined1 *puStack_b4;\n  undefined4 uStack_b0;\n  uint uStack_ac;\n  undefined1 auStack_a8 [4];\n  int iStack_a4;\n  uint uStack_a0;\n  undefined *puStack_9c;\n  int iStack_98;\n  undefined4 *puStack_94;\n  undefined4 *puStack_90;\n  undefined4 uStack_8c;\n  int *piStack_88;\n  undefined4 *puStack_84;\n  int local_68;\n  undefined4 *local_4c [2];\n  undefined4 local_44;\n  undefined4 local_40;\n  int aiStack_3c [4];\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  if (param_8 != (undefined4 *)0x0) {\n    *param_8 = 0;\n  }\n  puVar8 = param_3;\n  iVar7 = param_4;\n  local_resc = param_4;\n  local_4c[0] = param_3;\n  if (param_1 == 0xffff) {\n    local_44 = 0;\n    local_40 = 0;\n    if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }\n  if (local_2c == *(int *)puVar2) {\n    return uVar11;\n  }\n  iVar9 = local_2c;\n  puVar14 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar3 = *(int **)(puVar14 + 0x48100);\n  iStack_98 = param_6;\n  puStack_9c = puVar2;\n  puStack_94 = param_5;\n  *(undefined4 *)(iVar9 + 8) = 0xffffffff;\n  *(undefined4 *)(iVar9 + 0xc) = 0;\n  iStack_a4 = *piVar3;\n  uStack_a0 = uVar11;\n  puStack_90 = unaff_s4;\n  uStack_8c = unaff_s5;\n  piStack_88 = unaff_s6;\n  puStack_84 = &local_44;\n  if (puVar8 != (undefined4 *)0x0) {\n    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);\n    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar4 = *(int *)(iVar9 + 0xc);\n    if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }\n  iVar4 = 0x37;\n  if (param_2 != (int *)0x0) {\n    if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }\n  }\n  *(int *)(iVar9 + 0xc) = iVar4;\n  uStack_c0 = 0;\nLAB_000ca5d4:\n  puVar13 = (uint *)(iVar9 + 0x410);\n  uVar11 = 0;\n  iVar7 = *(int *)(puVar14 + 0x46dc4);\n  puVar12 = puVar13;\n  while( true ) {\n    auStack_a8[0] = (undefined1)uVar11;\n    uStack_b0 = 1;\n    if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }\n    if (uVar11 == 0xff) break;\n    puVar12 = puVar12 + 1;\n    uVar11 = uVar11 + 1;\n    iVar4 = *(int *)(iVar9 + 0xc);\n  }\n  puVar8 = (undefined4 *)(iVar9 + 0xc10);\n  uVar11 = 0;\n  iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750;\n  if (local_68 == 3) {\n    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;\n  }\n  while( true ) {\n    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }\n    *puVar8 = puVar8[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar8 = puVar8 + 1;\n    uVar11 = uVar10;\n  }\n  iVar4 = 0;\n  puVar12 = (uint *)(iVar9 + 0x10);\n  do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }\n    iVar4 = iVar4 + 1;\n    *puVar12 = 0xfffd;\n    puVar12 = puVar12 + 1;\n  } while (iVar4 != 0x100);\nLAB_000ca778:\n  iVar7 = 0;\n  do {\n    while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar7 = iVar7 + 1;\n    puVar13 = puVar13 + 1;\n    *(undefined1 *)(iVar4 + 0x1410) = 0xff;\n  } while (iVar7 != 0x100);\nLAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x47d98);\n  iVar7 = iStack_a4;\n  (*pcVar15)();\n  if (iVar7 == 0) {\n    return *(int *)(pcVar15 + 0x469f0) - 0x5764;\n  }\n                    \n                    \n  uVar11 = (**(code **)(pcVar15 + 0x475a4))();\n  return uVar11;\n}\n\n" (function_definition "uint wc_to_mb(int param_1,int *param_2,undefined4 *param_3,int param_4,undefined4 *param_5,\n             int param_6,char *param_7,undefined4 *param_8)\n\n{\n  undefined1 uVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *unaff_s4;\n  undefined4 unaff_s5;\n  int *unaff_s6;\n  uint *puVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int local_resc;\n  uint uStack_c0;\n  undefined1 *puStack_b4;\n  undefined4 uStack_b0;\n  uint uStack_ac;\n  undefined1 auStack_a8 [4];\n  int iStack_a4;\n  uint uStack_a0;\n  undefined *puStack_9c;\n  int iStack_98;\n  undefined4 *puStack_94;\n  undefined4 *puStack_90;\n  undefined4 uStack_8c;\n  int *piStack_88;\n  undefined4 *puStack_84;\n  int local_68;\n  undefined4 *local_4c [2];\n  undefined4 local_44;\n  undefined4 local_40;\n  int aiStack_3c [4];\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  if (param_8 != (undefined4 *)0x0) {\n    *param_8 = 0;\n  }\n  puVar8 = param_3;\n  iVar7 = param_4;\n  local_resc = param_4;\n  local_4c[0] = param_3;\n  if (param_1 == 0xffff) {\n    local_44 = 0;\n    local_40 = 0;\n    if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }\n  if (local_2c == *(int *)puVar2) {\n    return uVar11;\n  }\n  iVar9 = local_2c;\n  puVar14 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar3 = *(int **)(puVar14 + 0x48100);\n  iStack_98 = param_6;\n  puStack_9c = puVar2;\n  puStack_94 = param_5;\n  *(undefined4 *)(iVar9 + 8) = 0xffffffff;\n  *(undefined4 *)(iVar9 + 0xc) = 0;\n  iStack_a4 = *piVar3;\n  uStack_a0 = uVar11;\n  puStack_90 = unaff_s4;\n  uStack_8c = unaff_s5;\n  piStack_88 = unaff_s6;\n  puStack_84 = &local_44;\n  if (puVar8 != (undefined4 *)0x0) {\n    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);\n    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar4 = *(int *)(iVar9 + 0xc);\n    if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }\n  iVar4 = 0x37;\n  if (param_2 != (int *)0x0) {\n    if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }\n  }\n  *(int *)(iVar9 + 0xc) = iVar4;\n  uStack_c0 = 0;\nLAB_000ca5d4:\n  puVar13 = (uint *)(iVar9 + 0x410);\n  uVar11 = 0;\n  iVar7 = *(int *)(puVar14 + 0x46dc4);\n  puVar12 = puVar13;\n  while( true ) {\n    auStack_a8[0] = (undefined1)uVar11;\n    uStack_b0 = 1;\n    if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }\n    if (uVar11 == 0xff) break;\n    puVar12 = puVar12 + 1;\n    uVar11 = uVar11 + 1;\n    iVar4 = *(int *)(iVar9 + 0xc);\n  }\n  puVar8 = (undefined4 *)(iVar9 + 0xc10);\n  uVar11 = 0;\n  iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750;\n  if (local_68 == 3) {\n    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;\n  }\n  while( true ) {\n    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }\n    *puVar8 = puVar8[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar8 = puVar8 + 1;\n    uVar11 = uVar10;\n  }\n  iVar4 = 0;\n  puVar12 = (uint *)(iVar9 + 0x10);\n  do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }\n    iVar4 = iVar4 + 1;\n    *puVar12 = 0xfffd;\n    puVar12 = puVar12 + 1;\n  } while (iVar4 != 0x100);\nLAB_000ca778:\n  iVar7 = 0;\n  do {\n    while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar7 = iVar7 + 1;\n    puVar13 = puVar13 + 1;\n    *(undefined1 *)(iVar4 + 0x1410) = 0xff;\n  } while (iVar7 != 0x100);\nLAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x47d98);\n  iVar7 = iStack_a4;\n  (*pcVar15)();\n  if (iVar7 == 0) {\n    return *(int *)(pcVar15 + 0x469f0) - 0x5764;\n  }\n                    \n                    \n  uVar11 = (**(code **)(pcVar15 + 0x475a4))();\n  return uVar11;\n}" type_identifier (function_declarator "wc_to_mb(int param_1,int *param_2,undefined4 *param_3,int param_4,undefined4 *param_5,\n             int param_6,char *param_7,undefined4 *param_8)" identifier (parameter_list "(int param_1,int *param_2,undefined4 *param_3,int param_4,undefined4 *param_5,\n             int param_6,char *param_7,undefined4 *param_8)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "char *param_7" primitive_type (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "undefined4 *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) ))) (compound_statement "{\n  undefined1 uVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *unaff_s4;\n  undefined4 unaff_s5;\n  int *unaff_s6;\n  uint *puVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int local_resc;\n  uint uStack_c0;\n  undefined1 *puStack_b4;\n  undefined4 uStack_b0;\n  uint uStack_ac;\n  undefined1 auStack_a8 [4];\n  int iStack_a4;\n  uint uStack_a0;\n  undefined *puStack_9c;\n  int iStack_98;\n  undefined4 *puStack_94;\n  undefined4 *puStack_90;\n  undefined4 uStack_8c;\n  int *piStack_88;\n  undefined4 *puStack_84;\n  int local_68;\n  undefined4 *local_4c [2];\n  undefined4 local_44;\n  undefined4 local_40;\n  int aiStack_3c [4];\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  if (param_8 != (undefined4 *)0x0) {\n    *param_8 = 0;\n  }\n  puVar8 = param_3;\n  iVar7 = param_4;\n  local_resc = param_4;\n  local_4c[0] = param_3;\n  if (param_1 == 0xffff) {\n    local_44 = 0;\n    local_40 = 0;\n    if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }\n  if (local_2c == *(int *)puVar2) {\n    return uVar11;\n  }\n  iVar9 = local_2c;\n  puVar14 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar3 = *(int **)(puVar14 + 0x48100);\n  iStack_98 = param_6;\n  puStack_9c = puVar2;\n  puStack_94 = param_5;\n  *(undefined4 *)(iVar9 + 8) = 0xffffffff;\n  *(undefined4 *)(iVar9 + 0xc) = 0;\n  iStack_a4 = *piVar3;\n  uStack_a0 = uVar11;\n  puStack_90 = unaff_s4;\n  uStack_8c = unaff_s5;\n  piStack_88 = unaff_s6;\n  puStack_84 = &local_44;\n  if (puVar8 != (undefined4 *)0x0) {\n    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);\n    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar4 = *(int *)(iVar9 + 0xc);\n    if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }\n  iVar4 = 0x37;\n  if (param_2 != (int *)0x0) {\n    if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }\n  }\n  *(int *)(iVar9 + 0xc) = iVar4;\n  uStack_c0 = 0;\nLAB_000ca5d4:\n  puVar13 = (uint *)(iVar9 + 0x410);\n  uVar11 = 0;\n  iVar7 = *(int *)(puVar14 + 0x46dc4);\n  puVar12 = puVar13;\n  while( true ) {\n    auStack_a8[0] = (undefined1)uVar11;\n    uStack_b0 = 1;\n    if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }\n    if (uVar11 == 0xff) break;\n    puVar12 = puVar12 + 1;\n    uVar11 = uVar11 + 1;\n    iVar4 = *(int *)(iVar9 + 0xc);\n  }\n  puVar8 = (undefined4 *)(iVar9 + 0xc10);\n  uVar11 = 0;\n  iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750;\n  if (local_68 == 3) {\n    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;\n  }\n  while( true ) {\n    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }\n    *puVar8 = puVar8[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar8 = puVar8 + 1;\n    uVar11 = uVar10;\n  }\n  iVar4 = 0;\n  puVar12 = (uint *)(iVar9 + 0x10);\n  do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }\n    iVar4 = iVar4 + 1;\n    *puVar12 = 0xfffd;\n    puVar12 = puVar12 + 1;\n  } while (iVar4 != 0x100);\nLAB_000ca778:\n  iVar7 = 0;\n  do {\n    while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar7 = iVar7 + 1;\n    puVar13 = puVar13 + 1;\n    *(undefined1 *)(iVar4 + 0x1410) = 0xff;\n  } while (iVar7 != 0x100);\nLAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x47d98);\n  iVar7 = iStack_a4;\n  (*pcVar15)();\n  if (iVar7 == 0) {\n    return *(int *)(pcVar15 + 0x469f0) - 0x5764;\n  }\n                    \n                    \n  uVar11 = (**(code **)(pcVar15 + 0x475a4))();\n  return uVar11;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "int *unaff_s6;" primitive_type (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "int local_resc;" primitive_type identifier ;) (declaration "uint uStack_c0;" type_identifier identifier ;) (declaration "undefined1 *puStack_b4;" type_identifier (pointer_declarator "*puStack_b4" * identifier) ;) (declaration "undefined4 uStack_b0;" type_identifier identifier ;) (declaration "uint uStack_ac;" type_identifier identifier ;) (declaration "undefined1 auStack_a8 [4];" type_identifier (array_declarator "auStack_a8 [4]" identifier [ number_literal ]) ;) (declaration "int iStack_a4;" primitive_type identifier ;) (declaration "uint uStack_a0;" type_identifier identifier ;) (declaration "undefined *puStack_9c;" type_identifier (pointer_declarator "*puStack_9c" * identifier) ;) (declaration "int iStack_98;" primitive_type identifier ;) (declaration "undefined4 *puStack_94;" type_identifier (pointer_declarator "*puStack_94" * identifier) ;) (declaration "undefined4 *puStack_90;" type_identifier (pointer_declarator "*puStack_90" * identifier) ;) (declaration "undefined4 uStack_8c;" type_identifier identifier ;) (declaration "int *piStack_88;" primitive_type (pointer_declarator "*piStack_88" * identifier) ;) (declaration "undefined4 *puStack_84;" type_identifier (pointer_declarator "*puStack_84" * identifier) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined4 *local_4c [2];" type_identifier (pointer_declarator "*local_4c [2]" * (array_declarator "local_4c [2]" identifier [ number_literal ])) ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "int aiStack_3c [4];" primitive_type (array_declarator "aiStack_3c [4]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00112630;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00112630" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00112630;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00112630" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00112630" * (cast_expression "(int *)PTR___stack_chk_guard_00112630" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_8 != (undefined4 *)0x0) {\n    *param_8 = 0;\n  }" if (parenthesized_expression "(param_8 != (undefined4 *)0x0)" ( (binary_expression "param_8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_8 = 0;\n  }" { (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) })) (expression_statement "puVar8 = param_3;" (assignment_expression "puVar8 = param_3" identifier = identifier) ;) (expression_statement "iVar7 = param_4;" (assignment_expression "iVar7 = param_4" identifier = identifier) ;) (expression_statement "local_resc = param_4;" (assignment_expression "local_resc = param_4" identifier = identifier) ;) (expression_statement "local_4c[0] = param_3;" (assignment_expression "local_4c[0] = param_3" (subscript_expression "local_4c[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_1 == 0xffff) {\n    local_44 = 0;\n    local_40 = 0;\n    if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" if (parenthesized_expression "(param_1 == 0xffff)" ( (binary_expression "param_1 == 0xffff" identifier == number_literal) )) (compound_statement "{\n    local_44 = 0;\n    local_40 = 0;\n    if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }" { (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (if_statement "if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }" if (parenthesized_expression "(param_4 < 1)" ( (binary_expression "param_4 < 1" identifier < number_literal) )) (compound_statement "{\nLAB_000ca51c:\n      uVar11 = 0;\n    }" { (labeled_statement "LAB_000ca51c:\n      uVar11 = 0;" statement_identifier : (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }" else (compound_statement "{\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "unaff_s6 = aiStack_3c;" (assignment_expression "unaff_s6 = aiStack_3c" identifier = identifier) ;) (expression_statement "unaff_s5 = 0xffffffff;" (assignment_expression "unaff_s5 = 0xffffffff" identifier = number_literal) ;) (do_statement "do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);" do (compound_statement "{\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      }" { (expression_statement "param_2 = (int *)*local_4c[0];" (assignment_expression "param_2 = (int *)*local_4c[0]" identifier = (cast_expression "(int *)*local_4c[0]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_4c[0]" * (subscript_expression "local_4c[0]" identifier [ number_literal ])))) ;) (expression_statement "puVar8 = &local_44;" (assignment_expression "puVar8 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);" (assignment_expression "unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_wcrtomb_0011232c)(unaff_s6)" (parenthesized_expression "(*(code *)PTR_wcrtomb_0011232c)" ( (pointer_expression "*(code *)PTR_wcrtomb_0011232c" * (cast_expression "(code *)PTR_wcrtomb_0011232c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s6)" ( identifier ))))) ;) (if_statement "if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;" if (parenthesized_expression "((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))" ( (binary_expression "(unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4)" (parenthesized_expression "(unaff_s4 == (undefined4 *)0xffffffff)" ( (binary_expression "unaff_s4 == (undefined4 *)0xffffffff" identifier == (cast_expression "(undefined4 *)0xffffffff" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((int)(uVar11 - param_6) < (int)unaff_s4)" ( (binary_expression "(int)(uVar11 - param_6) < (int)unaff_s4" (cast_expression "(int)(uVar11 - param_6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar11 - param_6)" ( (binary_expression "uVar11 - param_6" identifier - identifier) ))) < (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (break_statement "break;" break ;)) (expression_statement "param_2 = unaff_s6;" (assignment_expression "param_2 = unaff_s6" identifier = identifier) ;) (expression_statement "puVar8 = unaff_s4;" (assignment_expression "puVar8 = unaff_s4" identifier = identifier) ;) (expression_statement "(*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);" (call_expression "(*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11)" (parenthesized_expression "(*(code *)PTR_memcpy_0011256c)" ( (pointer_expression "*(code *)PTR_memcpy_0011256c" * (cast_expression "(code *)PTR_memcpy_0011256c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((int)param_5 + uVar11)" ( (binary_expression "(int)param_5 + uVar11" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) ;) (expression_statement "uVar11 = uVar11 + (int)unaff_s4;" (assignment_expression "uVar11 = uVar11 + (int)unaff_s4" identifier = (binary_expression "uVar11 + (int)unaff_s4" identifier + (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_4c[0] = local_4c[0] + 1;" (assignment_expression "local_4c[0] = local_4c[0] + 1" (subscript_expression "local_4c[0]" identifier [ number_literal ]) = (binary_expression "local_4c[0] + 1" (subscript_expression "local_4c[0]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_resc = local_resc + -1;" (assignment_expression "local_resc = local_resc + -1" identifier = (binary_expression "local_resc + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(0 < local_resc)" ( (binary_expression "0 < local_resc" number_literal < identifier) )) ;) }))) }) (else_clause "else if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" else (if_statement "if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }" if (parenthesized_expression "(0 < param_4)" ( (binary_expression "0 < param_4" number_literal < identifier) )) (compound_statement "{\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }" { (if_statement "if (param_6 < 1) goto LAB_000ca51c;" if (parenthesized_expression "(param_6 < 1)" ( (binary_expression "param_6 < 1" identifier < number_literal) )) (goto_statement "goto LAB_000ca51c;" goto statement_identifier ;)) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);" do (compound_statement "{\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      }" { (expression_statement "param_2 = (int *)*param_3;" (assignment_expression "param_2 = (int *)*param_3" identifier = (cast_expression "(int *)*param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (expression_statement "pcVar6 = (char *)((int)param_5 + uVar11);" (assignment_expression "pcVar6 = (char *)((int)param_5 + uVar11)" identifier = (cast_expression "(char *)((int)param_5 + uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + uVar11)" ( (binary_expression "(int)param_5 + uVar11" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }" if (parenthesized_expression "(param_2 + -0x3600 < (int *)0x100)" ( (binary_expression "param_2 + -0x3600 < (int *)0x100" (binary_expression "param_2 + -0x3600" identifier + number_literal) < (cast_expression "(int *)0x100" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }" { (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar6 = (char)param_2;" (assignment_expression "*pcVar6 = (char)param_2" (pointer_expression "*pcVar6" * identifier) = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }" else (if_statement "if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }" if (parenthesized_expression "(param_7 != (char *)0x0)" ( (binary_expression "param_7 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }" { (expression_statement "param_2 = (int *)(int)*param_7;" (assignment_expression "param_2 = (int *)(int)*param_7" identifier = (cast_expression "(int *)(int)*param_7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*param_7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_7" * identifier)))) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar6 = *param_7;" (assignment_expression "*pcVar6 = *param_7" (pointer_expression "*pcVar6" * identifier) = (pointer_expression "*param_7" * identifier)) ;) })))) (expression_statement "puVar8 = (undefined4 *)0xffff2800;" (assignment_expression "puVar8 = (undefined4 *)0xffff2800" identifier = (cast_expression "(undefined4 *)0xffff2800" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_resc = param_4 + -1;" (assignment_expression "local_resc = param_4 + -1" identifier = (binary_expression "param_4 + -1" identifier + number_literal)) ;) (if_statement "if (param_4 + -1 == 0) break;" if (parenthesized_expression "(param_4 + -1 == 0)" ( (binary_expression "param_4 + -1 == 0" (binary_expression "param_4 + -1" identifier + number_literal) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_4 = param_4 + -1;" (assignment_expression "param_4 = param_4 + -1" identifier = (binary_expression "param_4 + -1" identifier + number_literal)) ;) (expression_statement "param_3 = param_3 + 1;" (assignment_expression "param_3 = param_3 + 1" identifier = (binary_expression "param_3 + 1" identifier + number_literal)) ;) (expression_statement "local_resc = param_4;" (assignment_expression "local_resc = param_4" identifier = identifier) ;) }) while (parenthesized_expression "((int)uVar11 < param_6)" ( (binary_expression "(int)uVar11 < param_6" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) })) }) (else_clause "else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" else (compound_statement "{\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" { (expression_statement "param_2 = &local_resc;" (assignment_expression "param_2 = &local_resc" identifier = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "puVar8 = param_5;" (assignment_expression "puVar8 = param_5" identifier = identifier) ;) (expression_statement "iVar7 = param_6;" (assignment_expression "iVar7 = param_6" identifier = identifier) ;) (expression_statement "uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);" (assignment_expression "uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c)" identifier = (call_expression "(*(code *)PTR_charset_from_unicode_00111d40)(local_4c)" (parenthesized_expression "(*(code *)PTR_charset_from_unicode_00111d40)" ( (pointer_expression "*(code *)PTR_charset_from_unicode_00111d40" * (cast_expression "(code *)PTR_charset_from_unicode_00111d40" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_4c)" ( identifier )))) ;) (expression_statement "local_68 = param_1;" (assignment_expression "local_68 = param_1" identifier = identifier) ;) }))))) (if_statement "if (local_2c == *(int *)puVar2) {\n    return uVar11;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar2)" ( (binary_expression "local_2c == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar11;\n  }" { (return_statement "return uVar11;" return identifier ;) })) (expression_statement "iVar9 = local_2c;" (assignment_expression "iVar9 = local_2c" identifier = identifier) ;) (expression_statement "puVar14 = PTR___stack_chk_fail_001122c8;" (assignment_expression "puVar14 = PTR___stack_chk_fail_001122c8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001122c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_001122c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001122c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001122c8" * (cast_expression "(code *)PTR___stack_chk_fail_001122c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar3 = *(int **)(puVar14 + 0x48100);" (assignment_expression "piVar3 = *(int **)(puVar14 + 0x48100)" identifier = (pointer_expression "*(int **)(puVar14 + 0x48100)" * (cast_expression "(int **)(puVar14 + 0x48100)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x48100)" ( (binary_expression "puVar14 + 0x48100" identifier + number_literal) ))))) ;) (expression_statement "iStack_98 = param_6;" (assignment_expression "iStack_98 = param_6" identifier = identifier) ;) (expression_statement "puStack_9c = puVar2;" (assignment_expression "puStack_9c = puVar2" identifier = identifier) ;) (expression_statement "puStack_94 = param_5;" (assignment_expression "puStack_94 = param_5" identifier = identifier) ;) (expression_statement "*(undefined4 *)(iVar9 + 8) = 0xffffffff;" (assignment_expression "*(undefined4 *)(iVar9 + 8) = 0xffffffff" (pointer_expression "*(undefined4 *)(iVar9 + 8)" * (cast_expression "(undefined4 *)(iVar9 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar9 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xc)" * (cast_expression "(undefined4 *)(iVar9 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iStack_a4 = *piVar3;" (assignment_expression "iStack_a4 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "uStack_a0 = uVar11;" (assignment_expression "uStack_a0 = uVar11" identifier = identifier) ;) (expression_statement "puStack_90 = unaff_s4;" (assignment_expression "puStack_90 = unaff_s4" identifier = identifier) ;) (expression_statement "uStack_8c = unaff_s5;" (assignment_expression "uStack_8c = unaff_s5" identifier = identifier) ;) (expression_statement "piStack_88 = unaff_s6;" (assignment_expression "piStack_88 = unaff_s6" identifier = identifier) ;) (expression_statement "puStack_84 = &local_44;" (assignment_expression "puStack_84 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (if_statement "if (puVar8 != (undefined4 *)0x0) {\n    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);\n    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar4 = *(int *)(iVar9 + 0xc);\n    if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }" if (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);\n    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar4 = *(int *)(iVar9 + 0xc);\n    if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }" { (expression_statement "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);" (assignment_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780)" identifier = (cast_expression "(char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780)" (parenthesized_expression "(**(code **)(puVar14 + 0x47e74))" ( (pointer_expression "**(code **)(puVar14 + 0x47e74)" * (pointer_expression "*(code **)(puVar14 + 0x47e74)" * (cast_expression "(code **)(puVar14 + 0x47e74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x47e74)" ( (binary_expression "puVar14 + 0x47e74" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar14 + 0x46dc4) + -0x5780)" ( (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x5780" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" * (cast_expression "(int *)(puVar14 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46dc4)" ( (binary_expression "puVar14 + 0x46dc4" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }" if (parenthesized_expression "(((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0))" ( (binary_expression "((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)" (parenthesized_expression "((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))))" ( (binary_expression "(((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))" (parenthesized_expression "(((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))))" ( (binary_expression "((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))" (parenthesized_expression "((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))" ( (binary_expression "(pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (parenthesized_expression "(pcVar6 != (char *)0x0)" ( (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" ( (comma_expression "iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46db8)" identifier = (pointer_expression "*(int *)(puVar14 + 0x46db8)" * (cast_expression "(int *)(puVar14 + 0x46db8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46db8)" ( (binary_expression "puVar14 + 0x46db8" identifier + number_literal) ))))) , (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence '))) ))) )) || (parenthesized_expression "((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))" ( (parenthesized_expression "(pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))" ( (comma_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (assignment_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778)" identifier = (cast_expression "(char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778)" (parenthesized_expression "(**(code **)(puVar14 + 0x47e74))" ( (pointer_expression "**(code **)(puVar14 + 0x47e74)" * (pointer_expression "*(code **)(puVar14 + 0x47e74)" * (cast_expression "(code **)(puVar14 + 0x47e74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x47e74)" ( (binary_expression "puVar14 + 0x47e74" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar14 + 0x46dc4) + -0x5778)" ( (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x5778" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" * (cast_expression "(int *)(puVar14 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46dc4)" ( (binary_expression "puVar14 + 0x46dc4" identifier + number_literal) )))) + number_literal) ))))) , (binary_expression "pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" ( (comma_expression "iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46db8)" identifier = (pointer_expression "*(int *)(puVar14 + 0x46db8)" * (cast_expression "(int *)(puVar14 + 0x46db8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46db8)" ( (binary_expression "puVar14 + 0x46db8" identifier + number_literal) ))))) , (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence '))) )))) )) ))) )) || (parenthesized_expression "((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))" ( (parenthesized_expression "(pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))" ( (comma_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (assignment_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c)" identifier = (cast_expression "(char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c)" (parenthesized_expression "(**(code **)(puVar14 + 0x47e74))" ( (pointer_expression "**(code **)(puVar14 + 0x47e74)" * (pointer_expression "*(code **)(puVar14 + 0x47e74)" * (cast_expression "(code **)(puVar14 + 0x47e74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x47e74)" ( (binary_expression "puVar14 + 0x47e74" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar14 + 0x46dc4) + -0x576c)" ( (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x576c" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" * (cast_expression "(int *)(puVar14 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46dc4)" ( (binary_expression "puVar14 + 0x46dc4" identifier + number_literal) )))) + number_literal) ))))) , (binary_expression "pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" ( (comma_expression "iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46db8)" identifier = (pointer_expression "*(int *)(puVar14 + 0x46db8)" * (cast_expression "(int *)(puVar14 + 0x46db8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46db8)" ( (binary_expression "puVar14 + 0x46db8" identifier + number_literal) ))))) , (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence '))) )))) )) ))) )) && (parenthesized_expression "(iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)" ( (comma_expression "iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0" (assignment_expression "iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484)" identifier = (call_expression "(**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484)" (parenthesized_expression "(**(code **)(puVar14 + 0x48150))" ( (pointer_expression "**(code **)(puVar14 + 0x48150)" * (pointer_expression "*(code **)(puVar14 + 0x48150)" * (cast_expression "(code **)(puVar14 + 0x48150)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x48150)" ( (binary_expression "puVar14 + 0x48150" identifier + number_literal) ))))) )) (argument_list "(pcVar6,iVar4 + -0x484)" ( identifier , (binary_expression "iVar4 + -0x484" identifier + number_literal) )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }" { (expression_statement "uStack_c0 = 0;" (assignment_expression "uStack_c0 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = 0x37;" (assignment_expression "iVar4 = 0x37" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(iVar9 + 0xc) = 0x37;" (assignment_expression "*(undefined4 *)(iVar9 + 0xc) = 0x37" (pointer_expression "*(undefined4 *)(iVar9 + 0xc)" * (cast_expression "(undefined4 *)(iVar9 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_000ca5d4;" goto statement_identifier ;) })) (expression_statement "iVar4 = *(int *)(iVar9 + 0xc);" (assignment_expression "iVar4 = *(int *)(iVar9 + 0xc)" identifier = (pointer_expression "*(int *)(iVar9 + 0xc)" * (cast_expression "(int *)(iVar9 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }" { (expression_statement "uStack_c0 = 0;" (assignment_expression "uStack_c0 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000ca5d4;" goto statement_identifier ;) })) })) (expression_statement "iVar4 = 0x37;" (assignment_expression "iVar4 = 0x37" identifier = number_literal) ;) (if_statement "if (param_2 != (int *)0x0) {\n    if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }\n  }" if (parenthesized_expression "(param_2 != (int *)0x0)" ( (binary_expression "param_2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }\n  }" { (if_statement "if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }" if (parenthesized_expression "(*(char *)param_2 == '\0')" ( (binary_expression "*(char *)param_2 == '\0'" (pointer_expression "*(char *)param_2" * (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar4 = 0x37;\n    }" { (expression_statement "iVar4 = 0x37;" (assignment_expression "iVar4 = 0x37" identifier = number_literal) ;) }) (else_clause "else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }" else (compound_statement "{\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }" { (expression_statement "iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);" (assignment_expression "iVar4 = (**(code **)(puVar14 + 0x47974))(param_2)" identifier = (call_expression "(**(code **)(puVar14 + 0x47974))(param_2)" (parenthesized_expression "(**(code **)(puVar14 + 0x47974))" ( (pointer_expression "**(code **)(puVar14 + 0x47974)" * (pointer_expression "*(code **)(puVar14 + 0x47974)" * (cast_expression "(code **)(puVar14 + 0x47974)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x47974)" ( (binary_expression "puVar14 + 0x47974" identifier + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }" { (expression_statement "uStack_c0 = (uint)(iVar7 == 0);" (assignment_expression "uStack_c0 = (uint)(iVar7 == 0)" identifier = (call_expression "(uint)(iVar7 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )))) ;) (expression_statement "*(int *)(iVar9 + 0xc) = iVar7;" (assignment_expression "*(int *)(iVar9 + 0xc) = iVar7" (pointer_expression "*(int *)(iVar9 + 0xc)" * (cast_expression "(int *)(iVar9 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar4 = iVar7;" (assignment_expression "iVar4 = iVar7" identifier = identifier) ;) (goto_statement "goto LAB_000ca5d4;" goto statement_identifier ;) })) }))) })) (expression_statement "*(int *)(iVar9 + 0xc) = iVar4;" (assignment_expression "*(int *)(iVar9 + 0xc) = iVar4" (pointer_expression "*(int *)(iVar9 + 0xc)" * (cast_expression "(int *)(iVar9 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "uStack_c0 = 0;" (assignment_expression "uStack_c0 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000ca5d4:\n  puVar13 = (uint *)(iVar9 + 0x410);" statement_identifier : (expression_statement "puVar13 = (uint *)(iVar9 + 0x410);" (assignment_expression "puVar13 = (uint *)(iVar9 + 0x410)" identifier = (cast_expression "(uint *)(iVar9 + 0x410)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x410)" ( (binary_expression "iVar9 + 0x410" identifier + number_literal) )))) ;)) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = *(int *)(puVar14 + 0x46dc4);" (assignment_expression "iVar7 = *(int *)(puVar14 + 0x46dc4)" identifier = (pointer_expression "*(int *)(puVar14 + 0x46dc4)" * (cast_expression "(int *)(puVar14 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46dc4)" ( (binary_expression "puVar14 + 0x46dc4" identifier + number_literal) ))))) ;) (expression_statement "puVar12 = puVar13;" (assignment_expression "puVar12 = puVar13" identifier = identifier) ;) (while_statement "while( true ) {\n    auStack_a8[0] = (undefined1)uVar11;\n    uStack_b0 = 1;\n    if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }\n    if (uVar11 == 0xff) break;\n    puVar12 = puVar12 + 1;\n    uVar11 = uVar11 + 1;\n    iVar4 = *(int *)(iVar9 + 0xc);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    auStack_a8[0] = (undefined1)uVar11;\n    uStack_b0 = 1;\n    if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }\n    if (uVar11 == 0xff) break;\n    puVar12 = puVar12 + 1;\n    uVar11 = uVar11 + 1;\n    iVar4 = *(int *)(iVar9 + 0xc);\n  }" { (expression_statement "auStack_a8[0] = (undefined1)uVar11;" (assignment_expression "auStack_a8[0] = (undefined1)uVar11" (subscript_expression "auStack_a8[0]" identifier [ number_literal ]) = (cast_expression "(undefined1)uVar11" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uStack_b0 = 1;" (assignment_expression "uStack_b0 = 1" identifier = number_literal) ;) (if_statement "if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      *puVar12 = uVar11 | 0xd800;\n    }" { (expression_statement "*puVar12 = uVar11 | 0xd800;" (assignment_expression "*puVar12 = uVar11 | 0xd800" (pointer_expression "*puVar12" * identifier) = (binary_expression "uVar11 | 0xd800" identifier | number_literal)) ;) }) (else_clause "else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }" else (compound_statement "{\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }" { (expression_statement "puStack_b4 = auStack_a8;" (assignment_expression "puStack_b4 = auStack_a8" identifier = identifier) ;) (expression_statement "iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);" (assignment_expression "iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0)" identifier = (call_expression "(**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0)" (parenthesized_expression "(**(code **)(puVar14 + 0x47970))" ( (pointer_expression "**(code **)(puVar14 + 0x47970)" * (pointer_expression "*(code **)(puVar14 + 0x47970)" * (cast_expression "(code **)(puVar14 + 0x47970)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x47970)" ( (binary_expression "puVar14 + 0x47970" identifier + number_literal) ))))) )) (argument_list "(&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0)" ( (pointer_expression "&puStack_b4" & identifier) , (pointer_expression "&uStack_b0" & identifier) , (pointer_expression "&uStack_ac" & identifier) , number_literal , identifier , number_literal , (binary_expression "iVar7 + -0x7b5c" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }" if (parenthesized_expression "(iVar4 == 1)" ( (binary_expression "iVar4 == 1" identifier == number_literal) )) (compound_statement "{\n        *puVar12 = uStack_ac;\n      }" { (expression_statement "*puVar12 = uStack_ac;" (assignment_expression "*puVar12 = uStack_ac" (pointer_expression "*puVar12" * identifier) = identifier) ;) }) (else_clause "else {\n        *puVar12 = 0xfffd;\n      }" else (compound_statement "{\n        *puVar12 = 0xfffd;\n      }" { (expression_statement "*puVar12 = 0xfffd;" (assignment_expression "*puVar12 = 0xfffd" (pointer_expression "*puVar12" * identifier) = number_literal) ;) }))) }))) (if_statement "if (uVar11 == 0xff) break;" if (parenthesized_expression "(uVar11 == 0xff)" ( (binary_expression "uVar11 == 0xff" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = *(int *)(iVar9 + 0xc);" (assignment_expression "iVar4 = *(int *)(iVar9 + 0xc)" identifier = (pointer_expression "*(int *)(iVar9 + 0xc)" * (cast_expression "(int *)(iVar9 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) ))))) ;) })) (expression_statement "puVar8 = (undefined4 *)(iVar9 + 0xc10);" (assignment_expression "puVar8 = (undefined4 *)(iVar9 + 0xc10)" identifier = (cast_expression "(undefined4 *)(iVar9 + 0xc10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc10)" ( (binary_expression "iVar9 + 0xc10" identifier + number_literal) )))) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750;" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750" identifier = (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x5750" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" * (cast_expression "(int *)(puVar14 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46dc4)" ( (binary_expression "puVar14 + 0x46dc4" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (local_68 == 3) {\n    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;\n  }" if (parenthesized_expression "(local_68 == 3)" ( (binary_expression "local_68 == 3" identifier == number_literal) )) (compound_statement "{\n    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;\n  }" { (expression_statement "iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0" identifier = (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x56d0" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" * (cast_expression "(int *)(puVar14 + 0x46dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x46dc4)" ( (binary_expression "puVar14 + 0x46dc4" identifier + number_literal) )))) + number_literal)) ;) })) (while_statement "while( true ) {\n    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }\n    *puVar8 = puVar8[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar8 = puVar8 + 1;\n    uVar11 = uVar10;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }\n    *puVar8 = puVar8[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar8 = puVar8 + 1;\n    uVar11 = uVar10;\n  }" { (while_statement "while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }" while (parenthesized_expression "(uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20)" ( (comma_expression "uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20" (assignment_expression "uVar10 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) , (binary_expression "uVar11 - 0x5f < 0x20" (binary_expression "uVar11 - 0x5f" identifier - number_literal) < number_literal)) )) (compound_statement "{\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }" { (expression_statement "*puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);" (assignment_expression "*puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4)" (pointer_expression "*puVar8" * identifier) = (pointer_expression "*(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4)" * (cast_expression "(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + (uVar11 & 0x1f) * 4)" ( (binary_expression "iVar4 + (uVar11 & 0x1f) * 4" identifier + (binary_expression "(uVar11 & 0x1f) * 4" (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) )) * number_literal)) ))))) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) })) (expression_statement "*puVar8 = puVar8[-0x200];" (assignment_expression "*puVar8 = puVar8[-0x200]" (pointer_expression "*puVar8" * identifier) = (subscript_expression "puVar8[-0x200]" identifier [ number_literal ])) ;) (if_statement "if (uVar10 == 0x100) break;" if (parenthesized_expression "(uVar10 == 0x100)" ( (binary_expression "uVar10 == 0x100" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) })) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "puVar12 = (uint *)(iVar9 + 0x10);" (assignment_expression "puVar12 = (uint *)(iVar9 + 0x10)" identifier = (cast_expression "(uint *)(iVar9 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x10)" ( (binary_expression "iVar9 + 0x10" identifier + number_literal) )))) ;) (do_statement "do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }\n    iVar4 = iVar4 + 1;\n    *puVar12 = 0xfffd;\n    puVar12 = puVar12 + 1;\n  } while (iVar4 != 0x100);" do (compound_statement "{\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }\n    iVar4 = iVar4 + 1;\n    *puVar12 = 0xfffd;\n    puVar12 = puVar12 + 1;\n  }" { (while_statement "while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }" { (expression_statement "auStack_a8[0] = (undefined1)iVar4;" (assignment_expression "auStack_a8[0] = (undefined1)iVar4" (subscript_expression "auStack_a8[0]" identifier [ number_literal ]) = (cast_expression "(undefined1)iVar4" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uStack_b0 = 1;" (assignment_expression "uStack_b0 = 1" identifier = number_literal) ;) (expression_statement "puStack_b4 = auStack_a8;" (assignment_expression "puStack_b4 = auStack_a8" identifier = identifier) ;) (expression_statement "iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);" (assignment_expression "iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0)" identifier = (call_expression "(**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0)" (parenthesized_expression "(**(code **)(puVar14 + 0x47970))" ( (pointer_expression "**(code **)(puVar14 + 0x47970)" * (pointer_expression "*(code **)(puVar14 + 0x47970)" * (cast_expression "(code **)(puVar14 + 0x47970)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x47970)" ( (binary_expression "puVar14 + 0x47970" identifier + number_literal) ))))) )) (argument_list "(&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0)" ( (pointer_expression "&puStack_b4" & identifier) , (pointer_expression "&uStack_b0" & identifier) , (pointer_expression "&uStack_ac" & identifier) , number_literal , number_literal , number_literal , (binary_expression "iVar7 + -0x7b5c" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar5 != 1) break;" if (parenthesized_expression "(iVar5 != 1)" ( (binary_expression "iVar5 != 1" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar12 = uStack_ac;" (assignment_expression "*puVar12 = uStack_ac" (pointer_expression "*puVar12" * identifier) = identifier) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (if_statement "if (iVar4 == 0x100) goto LAB_000ca778;" if (parenthesized_expression "(iVar4 == 0x100)" ( (binary_expression "iVar4 == 0x100" identifier == number_literal) )) (goto_statement "goto LAB_000ca778;" goto statement_identifier ;)) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar12 = 0xfffd;" (assignment_expression "*puVar12 = 0xfffd" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0x100)" ( (binary_expression "iVar4 != 0x100" identifier != number_literal) )) ;) (labeled_statement "LAB_000ca778:\n  iVar7 = 0;" statement_identifier : (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;)) (do_statement "do {\n    while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar7 = iVar7 + 1;\n    puVar13 = puVar13 + 1;\n    *(undefined1 *)(iVar4 + 0x1410) = 0xff;\n  } while (iVar7 != 0x100);" do (compound_statement "{\n    while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar7 = iVar7 + 1;\n    puVar13 = puVar13 + 1;\n    *(undefined1 *)(iVar4 + 0x1410) = 0xff;\n  }" { (while_statement "while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }" { (expression_statement "uVar11 = *puVar13;" (assignment_expression "uVar11 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (if_statement "if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;" if (parenthesized_expression "((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f))" ( (binary_expression "(((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)" (parenthesized_expression "(((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800))" ( (binary_expression "((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)" (parenthesized_expression "((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f))" ( (binary_expression "(0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)" (parenthesized_expression "(0x1f < (int)uVar11)" ( (binary_expression "0x1f < (int)uVar11" number_literal < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(0x20 < uVar11 - 0x7f)" ( (binary_expression "0x20 < uVar11 - 0x7f" number_literal < (binary_expression "uVar11 - 0x7f" identifier - number_literal)) ))) )) && (parenthesized_expression "(0x1f < uVar11 - 0xd800)" ( (binary_expression "0x1f < uVar11 - 0xd800" number_literal < (binary_expression "uVar11 - 0xd800" identifier - number_literal)) ))) )) && (parenthesized_expression "(iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)" ( (comma_expression "iVar4 = iVar9 + iVar7, uVar11 != 0xd87f" (assignment_expression "iVar4 = iVar9 + iVar7" identifier = (binary_expression "iVar9 + iVar7" identifier + identifier)) , (binary_expression "uVar11 != 0xd87f" identifier != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar9 + iVar7;" (assignment_expression "iVar4 = iVar9 + iVar7" identifier = (binary_expression "iVar9 + iVar7" identifier + identifier)) ;) (expression_statement "uVar1 = (undefined1)iVar7;" (assignment_expression "uVar1 = (undefined1)iVar7" identifier = (cast_expression "(undefined1)iVar7" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(iVar4 + 0x1410) = uVar1;" (assignment_expression "*(undefined1 *)(iVar4 + 0x1410) = uVar1" (pointer_expression "*(undefined1 *)(iVar4 + 0x1410)" * (cast_expression "(undefined1 *)(iVar4 + 0x1410)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1410)" ( (binary_expression "iVar4 + 0x1410" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar7 == 0x100) goto LAB_000ca7ec;" if (parenthesized_expression "(iVar7 == 0x100)" ( (binary_expression "iVar7 == 0x100" identifier == number_literal) )) (goto_statement "goto LAB_000ca7ec;" goto statement_identifier ;)) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(iVar4 + 0x1410) = 0xff;" (assignment_expression "*(undefined1 *)(iVar4 + 0x1410) = 0xff" (pointer_expression "*(undefined1 *)(iVar4 + 0x1410)" * (cast_expression "(undefined1 *)(iVar4 + 0x1410)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1410)" ( (binary_expression "iVar4 + 0x1410" identifier + number_literal) )))) = number_literal) ;) }) while (parenthesized_expression "(iVar7 != 0x100)" ( (binary_expression "iVar7 != 0x100" identifier != number_literal) )) ;) (labeled_statement "LAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }" statement_identifier : (if_statement "if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }" if (parenthesized_expression "(iStack_a4 == *piVar3)" ( (binary_expression "iStack_a4 == *piVar3" identifier == (pointer_expression "*piVar3" * identifier)) )) (compound_statement "{\n    return uStack_c0;\n  }" { (return_statement "return uStack_c0;" return identifier ;) }))) (expression_statement "pcVar15 = *(code **)(puVar14 + 0x47d98);" (assignment_expression "pcVar15 = *(code **)(puVar14 + 0x47d98)" identifier = (pointer_expression "*(code **)(puVar14 + 0x47d98)" * (cast_expression "(code **)(puVar14 + 0x47d98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x47d98)" ( (binary_expression "puVar14 + 0x47d98" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = iStack_a4;" (assignment_expression "iVar7 = iStack_a4" identifier = identifier) ;) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar7 == 0) {\n    return *(int *)(pcVar15 + 0x469f0) - 0x5764;\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    return *(int *)(pcVar15 + 0x469f0) - 0x5764;\n  }" { (return_statement "return *(int *)(pcVar15 + 0x469f0) - 0x5764;" return (binary_expression "*(int *)(pcVar15 + 0x469f0) - 0x5764" (pointer_expression "*(int *)(pcVar15 + 0x469f0)" * (cast_expression "(int *)(pcVar15 + 0x469f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x469f0)" ( (binary_expression "pcVar15 + 0x469f0" identifier + number_literal) )))) - number_literal) ;) })) (expression_statement "uVar11 = (**(code **)(pcVar15 + 0x475a4))();" (assignment_expression "uVar11 = (**(code **)(pcVar15 + 0x475a4))()" identifier = (call_expression "(**(code **)(pcVar15 + 0x475a4))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x475a4))" ( (pointer_expression "**(code **)(pcVar15 + 0x475a4)" * (pointer_expression "*(code **)(pcVar15 + 0x475a4)" * (cast_expression "(code **)(pcVar15 + 0x475a4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x475a4)" ( (binary_expression "pcVar15 + 0x475a4" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar11;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (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 (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (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 *)) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) })))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))))) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & 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 * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence '))) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) , (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence '))) )))) )) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) , (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence '))) )))) )) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }))) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement 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 = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT | LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT , IDENT , LIT , (binary_expression IDENT + LIT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) })) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression IDENT - LIT) < LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT , LIT , LIT , (binary_expression IDENT + LIT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) ))) )) && (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + IDENT)) , (binary_expression IDENT != LIT)) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })))
(function_definition "uint wc_to_mb(int param_1,int *param_2,undefined4 *param_3,int param_4,undefined4 *param_5,\n             int param_6,char *param_7,undefined4 *param_8)\n\n{\n  undefined1 uVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *unaff_s4;\n  undefined4 unaff_s5;\n  int *unaff_s6;\n  uint *puVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int local_resc;\n  uint uStack_c0;\n  undefined1 *puStack_b4;\n  undefined4 uStack_b0;\n  uint uStack_ac;\n  undefined1 auStack_a8 [4];\n  int iStack_a4;\n  uint uStack_a0;\n  undefined *puStack_9c;\n  int iStack_98;\n  undefined4 *puStack_94;\n  undefined4 *puStack_90;\n  undefined4 uStack_8c;\n  int *piStack_88;\n  undefined4 *puStack_84;\n  int local_68;\n  undefined4 *local_4c [2];\n  undefined4 local_44;\n  undefined4 local_40;\n  int aiStack_3c [4];\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  if (param_8 != (undefined4 *)0x0) {\n    *param_8 = 0;\n  }\n  puVar8 = param_3;\n  iVar7 = param_4;\n  local_resc = param_4;\n  local_4c[0] = param_3;\n  if (param_1 == 0xffff) {\n    local_44 = 0;\n    local_40 = 0;\n    if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }\n  if (local_2c == *(int *)puVar2) {\n    return uVar11;\n  }\n  iVar9 = local_2c;\n  puVar14 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar3 = *(int **)(puVar14 + 0x48100);\n  iStack_98 = param_6;\n  puStack_9c = puVar2;\n  puStack_94 = param_5;\n  *(undefined4 *)(iVar9 + 8) = 0xffffffff;\n  *(undefined4 *)(iVar9 + 0xc) = 0;\n  iStack_a4 = *piVar3;\n  uStack_a0 = uVar11;\n  puStack_90 = unaff_s4;\n  uStack_8c = unaff_s5;\n  piStack_88 = unaff_s6;\n  puStack_84 = &local_44;\n  if (puVar8 != (undefined4 *)0x0) {\n    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);\n    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar4 = *(int *)(iVar9 + 0xc);\n    if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }\n  iVar4 = 0x37;\n  if (param_2 != (int *)0x0) {\n    if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }\n  }\n  *(int *)(iVar9 + 0xc) = iVar4;\n  uStack_c0 = 0;\nLAB_000ca5d4:\n  puVar13 = (uint *)(iVar9 + 0x410);\n  uVar11 = 0;\n  iVar7 = *(int *)(puVar14 + 0x46dc4);\n  puVar12 = puVar13;\n  while( true ) {\n    auStack_a8[0] = (undefined1)uVar11;\n    uStack_b0 = 1;\n    if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }\n    if (uVar11 == 0xff) break;\n    puVar12 = puVar12 + 1;\n    uVar11 = uVar11 + 1;\n    iVar4 = *(int *)(iVar9 + 0xc);\n  }\n  puVar8 = (undefined4 *)(iVar9 + 0xc10);\n  uVar11 = 0;\n  iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750;\n  if (local_68 == 3) {\n    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;\n  }\n  while( true ) {\n    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }\n    *puVar8 = puVar8[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar8 = puVar8 + 1;\n    uVar11 = uVar10;\n  }\n  iVar4 = 0;\n  puVar12 = (uint *)(iVar9 + 0x10);\n  do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }\n    iVar4 = iVar4 + 1;\n    *puVar12 = 0xfffd;\n    puVar12 = puVar12 + 1;\n  } while (iVar4 != 0x100);\nLAB_000ca778:\n  iVar7 = 0;\n  do {\n    while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar7 = iVar7 + 1;\n    puVar13 = puVar13 + 1;\n    *(undefined1 *)(iVar4 + 0x1410) = 0xff;\n  } while (iVar7 != 0x100);\nLAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x47d98);\n  iVar7 = iStack_a4;\n  (*pcVar15)();\n  if (iVar7 == 0) {\n    return *(int *)(pcVar15 + 0x469f0) - 0x5764;\n  }\n                    \n                    \n  uVar11 = (**(code **)(pcVar15 + 0x475a4))();\n  return uVar11;\n}" (type_identifier "uint") (function_declarator "wc_to_mb(int param_1,int *param_2,undefined4 *param_3,int param_4,undefined4 *param_5,\n             int param_6,char *param_7,undefined4 *param_8)" (identifier "wc_to_mb") (parameter_list "(int param_1,int *param_2,undefined4 *param_3,int param_4,undefined4 *param_5,\n             int param_6,char *param_7,undefined4 *param_8)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 *param_5" (type_identifier "undefined4") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "char *param_7" (primitive_type "char") (pointer_declarator "*param_7" (* "*") (identifier "param_7"))) (, ",") (parameter_declaration "undefined4 *param_8" (type_identifier "undefined4") (pointer_declarator "*param_8" (* "*") (identifier "param_8"))) () ")"))) (compound_statement "{\n  undefined1 uVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *unaff_s4;\n  undefined4 unaff_s5;\n  int *unaff_s6;\n  uint *puVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int local_resc;\n  uint uStack_c0;\n  undefined1 *puStack_b4;\n  undefined4 uStack_b0;\n  uint uStack_ac;\n  undefined1 auStack_a8 [4];\n  int iStack_a4;\n  uint uStack_a0;\n  undefined *puStack_9c;\n  int iStack_98;\n  undefined4 *puStack_94;\n  undefined4 *puStack_90;\n  undefined4 uStack_8c;\n  int *piStack_88;\n  undefined4 *puStack_84;\n  int local_68;\n  undefined4 *local_4c [2];\n  undefined4 local_44;\n  undefined4 local_40;\n  int aiStack_3c [4];\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  if (param_8 != (undefined4 *)0x0) {\n    *param_8 = 0;\n  }\n  puVar8 = param_3;\n  iVar7 = param_4;\n  local_resc = param_4;\n  local_4c[0] = param_3;\n  if (param_1 == 0xffff) {\n    local_44 = 0;\n    local_40 = 0;\n    if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }\n  if (local_2c == *(int *)puVar2) {\n    return uVar11;\n  }\n  iVar9 = local_2c;\n  puVar14 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  piVar3 = *(int **)(puVar14 + 0x48100);\n  iStack_98 = param_6;\n  puStack_9c = puVar2;\n  puStack_94 = param_5;\n  *(undefined4 *)(iVar9 + 8) = 0xffffffff;\n  *(undefined4 *)(iVar9 + 0xc) = 0;\n  iStack_a4 = *piVar3;\n  uStack_a0 = uVar11;\n  puStack_90 = unaff_s4;\n  uStack_8c = unaff_s5;\n  piStack_88 = unaff_s6;\n  puStack_84 = &local_44;\n  if (puVar8 != (undefined4 *)0x0) {\n    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);\n    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar4 = *(int *)(iVar9 + 0xc);\n    if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }\n  iVar4 = 0x37;\n  if (param_2 != (int *)0x0) {\n    if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }\n  }\n  *(int *)(iVar9 + 0xc) = iVar4;\n  uStack_c0 = 0;\nLAB_000ca5d4:\n  puVar13 = (uint *)(iVar9 + 0x410);\n  uVar11 = 0;\n  iVar7 = *(int *)(puVar14 + 0x46dc4);\n  puVar12 = puVar13;\n  while( true ) {\n    auStack_a8[0] = (undefined1)uVar11;\n    uStack_b0 = 1;\n    if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }\n    if (uVar11 == 0xff) break;\n    puVar12 = puVar12 + 1;\n    uVar11 = uVar11 + 1;\n    iVar4 = *(int *)(iVar9 + 0xc);\n  }\n  puVar8 = (undefined4 *)(iVar9 + 0xc10);\n  uVar11 = 0;\n  iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750;\n  if (local_68 == 3) {\n    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;\n  }\n  while( true ) {\n    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }\n    *puVar8 = puVar8[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar8 = puVar8 + 1;\n    uVar11 = uVar10;\n  }\n  iVar4 = 0;\n  puVar12 = (uint *)(iVar9 + 0x10);\n  do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }\n    iVar4 = iVar4 + 1;\n    *puVar12 = 0xfffd;\n    puVar12 = puVar12 + 1;\n  } while (iVar4 != 0x100);\nLAB_000ca778:\n  iVar7 = 0;\n  do {\n    while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar7 = iVar7 + 1;\n    puVar13 = puVar13 + 1;\n    *(undefined1 *)(iVar4 + 0x1410) = 0xff;\n  } while (iVar7 != 0x100);\nLAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x47d98);\n  iVar7 = iStack_a4;\n  (*pcVar15)();\n  if (iVar7 == 0) {\n    return *(int *)(pcVar15 + 0x469f0) - 0x5764;\n  }\n                    \n                    \n  uVar11 = (**(code **)(pcVar15 + 0x475a4))();\n  return uVar11;\n}" ({ "{") (declaration "undefined1 uVar1;" (type_identifier "undefined1") (identifier "uVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint *puVar12;" (type_identifier "uint") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "undefined4 *unaff_s4;" (type_identifier "undefined4") (pointer_declarator "*unaff_s4" (* "*") (identifier "unaff_s4")) (; ";")) (declaration "undefined4 unaff_s5;" (type_identifier "undefined4") (identifier "unaff_s5") (; ";")) (declaration "int *unaff_s6;" (primitive_type "int") (pointer_declarator "*unaff_s6" (* "*") (identifier "unaff_s6")) (; ";")) (declaration "uint *puVar13;" (type_identifier "uint") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "undefined *puVar14;" (type_identifier "undefined") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "code *pcVar15;" (type_identifier "code") (pointer_declarator "*pcVar15" (* "*") (identifier "pcVar15")) (; ";")) (declaration "int local_resc;" (primitive_type "int") (identifier "local_resc") (; ";")) (declaration "uint uStack_c0;" (type_identifier "uint") (identifier "uStack_c0") (; ";")) (declaration "undefined1 *puStack_b4;" (type_identifier "undefined1") (pointer_declarator "*puStack_b4" (* "*") (identifier "puStack_b4")) (; ";")) (declaration "undefined4 uStack_b0;" (type_identifier "undefined4") (identifier "uStack_b0") (; ";")) (declaration "uint uStack_ac;" (type_identifier "uint") (identifier "uStack_ac") (; ";")) (declaration "undefined1 auStack_a8 [4];" (type_identifier "undefined1") (array_declarator "auStack_a8 [4]" (identifier "auStack_a8") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int iStack_a4;" (primitive_type "int") (identifier "iStack_a4") (; ";")) (declaration "uint uStack_a0;" (type_identifier "uint") (identifier "uStack_a0") (; ";")) (declaration "undefined *puStack_9c;" (type_identifier "undefined") (pointer_declarator "*puStack_9c" (* "*") (identifier "puStack_9c")) (; ";")) (declaration "int iStack_98;" (primitive_type "int") (identifier "iStack_98") (; ";")) (declaration "undefined4 *puStack_94;" (type_identifier "undefined4") (pointer_declarator "*puStack_94" (* "*") (identifier "puStack_94")) (; ";")) (declaration "undefined4 *puStack_90;" (type_identifier "undefined4") (pointer_declarator "*puStack_90" (* "*") (identifier "puStack_90")) (; ";")) (declaration "undefined4 uStack_8c;" (type_identifier "undefined4") (identifier "uStack_8c") (; ";")) (declaration "int *piStack_88;" (primitive_type "int") (pointer_declarator "*piStack_88" (* "*") (identifier "piStack_88")) (; ";")) (declaration "undefined4 *puStack_84;" (type_identifier "undefined4") (pointer_declarator "*puStack_84" (* "*") (identifier "puStack_84")) (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "undefined4 *local_4c [2];" (type_identifier "undefined4") (pointer_declarator "*local_4c [2]" (* "*") (array_declarator "local_4c [2]" (identifier "local_4c") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "undefined4 local_40;" (type_identifier "undefined4") (identifier "local_40") (; ";")) (declaration "int aiStack_3c [4];" (primitive_type "int") (array_declarator "aiStack_3c [4]" (identifier "aiStack_3c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar2 = PTR___stack_chk_guard_00112630;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00112630" (identifier "puVar2") (= "=") (identifier "PTR___stack_chk_guard_00112630")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00112630;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00112630" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00112630" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00112630" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00112630")))) (; ";")) (if_statement "if (param_8 != (undefined4 *)0x0) {\n    *param_8 = 0;\n  }" (if "if") (parenthesized_expression "(param_8 != (undefined4 *)0x0)" (( "(") (binary_expression "param_8 != (undefined4 *)0x0" (identifier "param_8") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *param_8 = 0;\n  }" ({ "{") (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar8 = param_3;" (assignment_expression "puVar8 = param_3" (identifier "puVar8") (= "=") (identifier "param_3")) (; ";")) (expression_statement "iVar7 = param_4;" (assignment_expression "iVar7 = param_4" (identifier "iVar7") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_resc = param_4;" (assignment_expression "local_resc = param_4" (identifier "local_resc") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_4c[0] = param_3;" (assignment_expression "local_4c[0] = param_3" (subscript_expression "local_4c[0]" (identifier "local_4c") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "param_3")) (; ";")) (if_statement "if (param_1 == 0xffff) {\n    local_44 = 0;\n    local_40 = 0;\n    if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }\n  else if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" (if "if") (parenthesized_expression "(param_1 == 0xffff)" (( "(") (binary_expression "param_1 == 0xffff" (identifier "param_1") (== "==") (number_literal "0xffff")) () ")")) (compound_statement "{\n    local_44 = 0;\n    local_40 = 0;\n    if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }\n  }" ({ "{") (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_4 < 1) {\nLAB_000ca51c:\n      uVar11 = 0;\n    }\n    else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }" (if "if") (parenthesized_expression "(param_4 < 1)" (( "(") (binary_expression "param_4 < 1" (identifier "param_4") (< "<") (number_literal "1")) () ")")) (compound_statement "{\nLAB_000ca51c:\n      uVar11 = 0;\n    }" ({ "{") (labeled_statement "LAB_000ca51c:\n      uVar11 = 0;" (statement_identifier "LAB_000ca51c") (: ":") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }" (else "else") (compound_statement "{\n      uVar11 = 0;\n      unaff_s6 = aiStack_3c;\n      unaff_s5 = 0xffffffff;\n      do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);\n    }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "unaff_s6 = aiStack_3c;" (assignment_expression "unaff_s6 = aiStack_3c" (identifier "unaff_s6") (= "=") (identifier "aiStack_3c")) (; ";")) (expression_statement "unaff_s5 = 0xffffffff;" (assignment_expression "unaff_s5 = 0xffffffff" (identifier "unaff_s5") (= "=") (number_literal "0xffffffff")) (; ";")) (do_statement "do {\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      } while (0 < local_resc);" (do "do") (compound_statement "{\n        param_2 = (int *)*local_4c[0];\n        puVar8 = &local_44;\n        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);\n        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;\n        param_2 = unaff_s6;\n        puVar8 = unaff_s4;\n        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);\n        uVar11 = uVar11 + (int)unaff_s4;\n        local_4c[0] = local_4c[0] + 1;\n        local_resc = local_resc + -1;\n      }" ({ "{") (expression_statement "param_2 = (int *)*local_4c[0];" (assignment_expression "param_2 = (int *)*local_4c[0]" (identifier "param_2") (= "=") (cast_expression "(int *)*local_4c[0]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_4c[0]" (* "*") (subscript_expression "local_4c[0]" (identifier "local_4c") ([ "[") (number_literal "0") (] "]"))))) (; ";")) (expression_statement "puVar8 = &local_44;" (assignment_expression "puVar8 = &local_44" (identifier "puVar8") (= "=") (pointer_expression "&local_44" (& "&") (identifier "local_44"))) (; ";")) (expression_statement "unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);" (assignment_expression "unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6)" (identifier "unaff_s4") (= "=") (cast_expression "(undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_wcrtomb_0011232c)(unaff_s6)" (parenthesized_expression "(*(code *)PTR_wcrtomb_0011232c)" (( "(") (pointer_expression "*(code *)PTR_wcrtomb_0011232c" (* "*") (cast_expression "(code *)PTR_wcrtomb_0011232c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wcrtomb_0011232c"))) () ")")) (argument_list "(unaff_s6)" (( "(") (identifier "unaff_s6") () ")"))))) (; ";")) (if_statement "if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))\n        break;" (if "if") (parenthesized_expression "((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))" (( "(") (binary_expression "(unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4)" (parenthesized_expression "(unaff_s4 == (undefined4 *)0xffffffff)" (( "(") (binary_expression "unaff_s4 == (undefined4 *)0xffffffff" (identifier "unaff_s4") (== "==") (cast_expression "(undefined4 *)0xffffffff" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (|| "||") (parenthesized_expression "((int)(uVar11 - param_6) < (int)unaff_s4)" (( "(") (binary_expression "(int)(uVar11 - param_6) < (int)unaff_s4" (cast_expression "(int)(uVar11 - param_6)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar11 - param_6)" (( "(") (binary_expression "uVar11 - param_6" (identifier "uVar11") (- "-") (identifier "param_6")) () ")"))) (< "<") (cast_expression "(int)unaff_s4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s4"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_2 = unaff_s6;" (assignment_expression "param_2 = unaff_s6" (identifier "param_2") (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "puVar8 = unaff_s4;" (assignment_expression "puVar8 = unaff_s4" (identifier "puVar8") (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "(*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);" (call_expression "(*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11)" (parenthesized_expression "(*(code *)PTR_memcpy_0011256c)" (( "(") (pointer_expression "*(code *)PTR_memcpy_0011256c" (* "*") (cast_expression "(code *)PTR_memcpy_0011256c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_0011256c"))) () ")")) (argument_list "((int)param_5 + uVar11)" (( "(") (binary_expression "(int)param_5 + uVar11" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (identifier "uVar11")) () ")"))) (; ";")) (expression_statement "uVar11 = uVar11 + (int)unaff_s4;" (assignment_expression "uVar11 = uVar11 + (int)unaff_s4" (identifier "uVar11") (= "=") (binary_expression "uVar11 + (int)unaff_s4" (identifier "uVar11") (+ "+") (cast_expression "(int)unaff_s4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s4")))) (; ";")) (expression_statement "local_4c[0] = local_4c[0] + 1;" (assignment_expression "local_4c[0] = local_4c[0] + 1" (subscript_expression "local_4c[0]" (identifier "local_4c") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_4c[0] + 1" (subscript_expression "local_4c[0]" (identifier "local_4c") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_resc = local_resc + -1;" (assignment_expression "local_resc = local_resc + -1" (identifier "local_resc") (= "=") (binary_expression "local_resc + -1" (identifier "local_resc") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < local_resc)" (( "(") (binary_expression "0 < local_resc" (number_literal "0") (< "<") (identifier "local_resc")) () ")")) (; ";")) (} "}")))) (} "}")) (else_clause "else if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" (else "else") (if_statement "if (param_1 == 0) {\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }\n  else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar11 = 0;\n    if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }\n  }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < param_4) {\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }" (if "if") (parenthesized_expression "(0 < param_4)" (( "(") (binary_expression "0 < param_4" (number_literal "0") (< "<") (identifier "param_4")) () ")")) (compound_statement "{\n      if (param_6 < 1) goto LAB_000ca51c;\n      uVar11 = 0;\n      do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);\n    }" ({ "{") (if_statement "if (param_6 < 1) goto LAB_000ca51c;" (if "if") (parenthesized_expression "(param_6 < 1)" (( "(") (binary_expression "param_6 < 1" (identifier "param_6") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_000ca51c;" (goto "goto") (statement_identifier "LAB_000ca51c") (; ";"))) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      } while ((int)uVar11 < param_6);" (do "do") (compound_statement "{\n        param_2 = (int *)*param_3;\n        pcVar6 = (char *)((int)param_5 + uVar11);\n        if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }\n        puVar8 = (undefined4 *)0xffff2800;\n        local_resc = param_4 + -1;\n        if (param_4 + -1 == 0) break;\n        param_4 = param_4 + -1;\n        param_3 = param_3 + 1;\n        local_resc = param_4;\n      }" ({ "{") (expression_statement "param_2 = (int *)*param_3;" (assignment_expression "param_2 = (int *)*param_3" (identifier "param_2") (= "=") (cast_expression "(int *)*param_3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (; ";")) (expression_statement "pcVar6 = (char *)((int)param_5 + uVar11);" (assignment_expression "pcVar6 = (char *)((int)param_5 + uVar11)" (identifier "pcVar6") (= "=") (cast_expression "(char *)((int)param_5 + uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + uVar11)" (( "(") (binary_expression "(int)param_5 + uVar11" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (identifier "uVar11")) () ")")))) (; ";")) (if_statement "if (param_2 + -0x3600 < (int *)0x100) {\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }\n        else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }" (if "if") (parenthesized_expression "(param_2 + -0x3600 < (int *)0x100)" (( "(") (binary_expression "param_2 + -0x3600 < (int *)0x100" (binary_expression "param_2 + -0x3600" (identifier "param_2") (+ "+") (number_literal "-0x3600")) (< "<") (cast_expression "(int *)0x100" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x100"))) () ")")) (compound_statement "{\n          uVar11 = uVar11 + 1;\n          *pcVar6 = (char)param_2;\n        }" ({ "{") (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pcVar6 = (char)param_2;" (assignment_expression "*pcVar6 = (char)param_2" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (= "=") (cast_expression "(char)param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_2"))) (; ";")) (} "}")) (else_clause "else if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }" (else "else") (if_statement "if (param_7 != (char *)0x0) {\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }" (if "if") (parenthesized_expression "(param_7 != (char *)0x0)" (( "(") (binary_expression "param_7 != (char *)0x0" (identifier "param_7") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          param_2 = (int *)(int)*param_7;\n          uVar11 = uVar11 + 1;\n          *pcVar6 = *param_7;\n        }" ({ "{") (expression_statement "param_2 = (int *)(int)*param_7;" (assignment_expression "param_2 = (int *)(int)*param_7" (identifier "param_2") (= "=") (cast_expression "(int *)(int)*param_7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)*param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*param_7" (* "*") (identifier "param_7"))))) (; ";")) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pcVar6 = *param_7;" (assignment_expression "*pcVar6 = *param_7" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (= "=") (pointer_expression "*param_7" (* "*") (identifier "param_7"))) (; ";")) (} "}"))))) (expression_statement "puVar8 = (undefined4 *)0xffff2800;" (assignment_expression "puVar8 = (undefined4 *)0xffff2800" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)0xffff2800" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffff2800"))) (; ";")) (expression_statement "local_resc = param_4 + -1;" (assignment_expression "local_resc = param_4 + -1" (identifier "local_resc") (= "=") (binary_expression "param_4 + -1" (identifier "param_4") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (param_4 + -1 == 0) break;" (if "if") (parenthesized_expression "(param_4 + -1 == 0)" (( "(") (binary_expression "param_4 + -1 == 0" (binary_expression "param_4 + -1" (identifier "param_4") (+ "+") (number_literal "-1")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_4 = param_4 + -1;" (assignment_expression "param_4 = param_4 + -1" (identifier "param_4") (= "=") (binary_expression "param_4 + -1" (identifier "param_4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_3 = param_3 + 1;" (assignment_expression "param_3 = param_3 + 1" (identifier "param_3") (= "=") (binary_expression "param_3 + 1" (identifier "param_3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_resc = param_4;" (assignment_expression "local_resc = param_4" (identifier "local_resc") (= "=") (identifier "param_4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)uVar11 < param_6)" (( "(") (binary_expression "(int)uVar11 < param_6" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (< "<") (identifier "param_6")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" (else "else") (compound_statement "{\n    param_2 = &local_resc;\n    puVar8 = param_5;\n    iVar7 = param_6;\n    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);\n    local_68 = param_1;\n  }" ({ "{") (expression_statement "param_2 = &local_resc;" (assignment_expression "param_2 = &local_resc" (identifier "param_2") (= "=") (pointer_expression "&local_resc" (& "&") (identifier "local_resc"))) (; ";")) (expression_statement "puVar8 = param_5;" (assignment_expression "puVar8 = param_5" (identifier "puVar8") (= "=") (identifier "param_5")) (; ";")) (expression_statement "iVar7 = param_6;" (assignment_expression "iVar7 = param_6" (identifier "iVar7") (= "=") (identifier "param_6")) (; ";")) (expression_statement "uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);" (assignment_expression "uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c)" (identifier "uVar11") (= "=") (call_expression "(*(code *)PTR_charset_from_unicode_00111d40)(local_4c)" (parenthesized_expression "(*(code *)PTR_charset_from_unicode_00111d40)" (( "(") (pointer_expression "*(code *)PTR_charset_from_unicode_00111d40" (* "*") (cast_expression "(code *)PTR_charset_from_unicode_00111d40" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_charset_from_unicode_00111d40"))) () ")")) (argument_list "(local_4c)" (( "(") (identifier "local_4c") () ")")))) (; ";")) (expression_statement "local_68 = param_1;" (assignment_expression "local_68 = param_1" (identifier "local_68") (= "=") (identifier "param_1")) (; ";")) (} "}")))))) (if_statement "if (local_2c == *(int *)puVar2) {\n    return uVar11;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar2)" (( "(") (binary_expression "local_2c == *(int *)puVar2" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2")))) () ")")) (compound_statement "{\n    return uVar11;\n  }" ({ "{") (return_statement "return uVar11;" (return "return") (identifier "uVar11") (; ";")) (} "}"))) (expression_statement "iVar9 = local_2c;" (assignment_expression "iVar9 = local_2c" (identifier "iVar9") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "puVar14 = PTR___stack_chk_fail_001122c8;" (assignment_expression "puVar14 = PTR___stack_chk_fail_001122c8" (identifier "puVar14") (= "=") (identifier "PTR___stack_chk_fail_001122c8")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_001122c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_001122c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001122c8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_001122c8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_001122c8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_001122c8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar3 = *(int **)(puVar14 + 0x48100);" (assignment_expression "piVar3 = *(int **)(puVar14 + 0x48100)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(puVar14 + 0x48100)" (* "*") (cast_expression "(int **)(puVar14 + 0x48100)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x48100)" (( "(") (binary_expression "puVar14 + 0x48100" (identifier "puVar14") (+ "+") (number_literal "0x48100")) () ")"))))) (; ";")) (expression_statement "iStack_98 = param_6;" (assignment_expression "iStack_98 = param_6" (identifier "iStack_98") (= "=") (identifier "param_6")) (; ";")) (expression_statement "puStack_9c = puVar2;" (assignment_expression "puStack_9c = puVar2" (identifier "puStack_9c") (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puStack_94 = param_5;" (assignment_expression "puStack_94 = param_5" (identifier "puStack_94") (= "=") (identifier "param_5")) (; ";")) (expression_statement "*(undefined4 *)(iVar9 + 8) = 0xffffffff;" (assignment_expression "*(undefined4 *)(iVar9 + 8) = 0xffffffff" (pointer_expression "*(undefined4 *)(iVar9 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 8)" (( "(") (binary_expression "iVar9 + 8" (identifier "iVar9") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "*(undefined4 *)(iVar9 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xc)" (( "(") (binary_expression "iVar9 + 0xc" (identifier "iVar9") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_a4 = *piVar3;" (assignment_expression "iStack_a4 = *piVar3" (identifier "iStack_a4") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "uStack_a0 = uVar11;" (assignment_expression "uStack_a0 = uVar11" (identifier "uStack_a0") (= "=") (identifier "uVar11")) (; ";")) (expression_statement "puStack_90 = unaff_s4;" (assignment_expression "puStack_90 = unaff_s4" (identifier "puStack_90") (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "uStack_8c = unaff_s5;" (assignment_expression "uStack_8c = unaff_s5" (identifier "uStack_8c") (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "piStack_88 = unaff_s6;" (assignment_expression "piStack_88 = unaff_s6" (identifier "piStack_88") (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "puStack_84 = &local_44;" (assignment_expression "puStack_84 = &local_44" (identifier "puStack_84") (= "=") (pointer_expression "&local_44" (& "&") (identifier "local_44"))) (; ";")) (if_statement "if (puVar8 != (undefined4 *)0x0) {\n    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);\n    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar4 = *(int *)(iVar9 + 0xc);\n    if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }" (if "if") (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar8 != (undefined4 *)0x0" (identifier "puVar8") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);\n    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }\n    iVar4 = *(int *)(iVar9 + 0xc);\n    if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }\n  }" ({ "{") (expression_statement "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);" (assignment_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780)" (identifier "pcVar6") (= "=") (cast_expression "(char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780)" (parenthesized_expression "(**(code **)(puVar14 + 0x47e74))" (( "(") (pointer_expression "**(code **)(puVar14 + 0x47e74)" (* "*") (pointer_expression "*(code **)(puVar14 + 0x47e74)" (* "*") (cast_expression "(code **)(puVar14 + 0x47e74)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x47e74)" (( "(") (binary_expression "puVar14 + 0x47e74" (identifier "puVar14") (+ "+") (number_literal "0x47e74")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar14 + 0x46dc4) + -0x5780)" (( "(") (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x5780" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" (* "*") (cast_expression "(int *)(puVar14 + 0x46dc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 0x46dc4)" (( "(") (binary_expression "puVar14 + 0x46dc4" (identifier "puVar14") (+ "+") (number_literal "0x46dc4")) () ")")))) (+ "+") (number_literal "-0x5780")) () ")"))))) (; ";")) (if_statement "if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }" (if "if") (parenthesized_expression "(((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0))" (( "(") (binary_expression "((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&\n       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)" (parenthesized_expression "((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))))" (( "(") (binary_expression "(((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||\n        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))" (parenthesized_expression "(((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))))" (( "(") (binary_expression "((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||\n         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))" (parenthesized_expression "((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))" (( "(") (binary_expression "(pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (parenthesized_expression "(pcVar6 != (char *)0x0)" (( "(") (binary_expression "pcVar6 != (char *)0x0" (identifier "pcVar6") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (( "(") (comma_expression "iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46db8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar14 + 0x46db8)" (* "*") (cast_expression "(int *)(puVar14 + 0x46db8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 0x46db8)" (( "(") (binary_expression "puVar14 + 0x46db8" (identifier "puVar14") (+ "+") (number_literal "0x46db8")) () ")"))))) (, ",") (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))" (( "(") (parenthesized_expression "(pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))" (( "(") (comma_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),\n          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (assignment_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778)" (identifier "pcVar6") (= "=") (cast_expression "(char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778)" (parenthesized_expression "(**(code **)(puVar14 + 0x47e74))" (( "(") (pointer_expression "**(code **)(puVar14 + 0x47e74)" (* "*") (pointer_expression "*(code **)(puVar14 + 0x47e74)" (* "*") (cast_expression "(code **)(puVar14 + 0x47e74)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x47e74)" (( "(") (binary_expression "puVar14 + 0x47e74" (identifier "puVar14") (+ "+") (number_literal "0x47e74")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar14 + 0x46dc4) + -0x5778)" (( "(") (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x5778" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" (* "*") (cast_expression "(int *)(puVar14 + 0x46dc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 0x46dc4)" (( "(") (binary_expression "puVar14 + 0x46dc4" (identifier "puVar14") (+ "+") (number_literal "0x46dc4")) () ")")))) (+ "+") (number_literal "-0x5778")) () ")"))))) (, ",") (binary_expression "pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (binary_expression "pcVar6 != (char *)0x0" (identifier "pcVar6") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (parenthesized_expression "(iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (( "(") (comma_expression "iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46db8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar14 + 0x46db8)" (* "*") (cast_expression "(int *)(puVar14 + 0x46db8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 0x46db8)" (( "(") (binary_expression "puVar14 + 0x46db8" (identifier "puVar14") (+ "+") (number_literal "0x46db8")) () ")"))))) (, ",") (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")")))) () ")")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))" (( "(") (parenthesized_expression "(pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'))" (( "(") (comma_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),\n         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (assignment_expression "pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c)" (identifier "pcVar6") (= "=") (cast_expression "(char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c)" (parenthesized_expression "(**(code **)(puVar14 + 0x47e74))" (( "(") (pointer_expression "**(code **)(puVar14 + 0x47e74)" (* "*") (pointer_expression "*(code **)(puVar14 + 0x47e74)" (* "*") (cast_expression "(code **)(puVar14 + 0x47e74)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x47e74)" (( "(") (binary_expression "puVar14 + 0x47e74" (identifier "puVar14") (+ "+") (number_literal "0x47e74")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar14 + 0x46dc4) + -0x576c)" (( "(") (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x576c" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" (* "*") (cast_expression "(int *)(puVar14 + 0x46dc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 0x46dc4)" (( "(") (binary_expression "puVar14 + 0x46dc4" (identifier "puVar14") (+ "+") (number_literal "0x46dc4")) () ")")))) (+ "+") (number_literal "-0x576c")) () ")"))))) (, ",") (binary_expression "pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (binary_expression "pcVar6 != (char *)0x0" (identifier "pcVar6") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (parenthesized_expression "(iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')" (( "(") (comma_expression "iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0'" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46db8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar14 + 0x46db8)" (* "*") (cast_expression "(int *)(puVar14 + 0x46db8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 0x46db8)" (( "(") (binary_expression "puVar14 + 0x46db8" (identifier "puVar14") (+ "+") (number_literal "0x46db8")) () ")"))))) (, ",") (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")")))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)" (( "(") (comma_expression "iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0" (assignment_expression "iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484)" (identifier "iVar4") (= "=") (call_expression "(**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484)" (parenthesized_expression "(**(code **)(puVar14 + 0x48150))" (( "(") (pointer_expression "**(code **)(puVar14 + 0x48150)" (* "*") (pointer_expression "*(code **)(puVar14 + 0x48150)" (* "*") (cast_expression "(code **)(puVar14 + 0x48150)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x48150)" (( "(") (binary_expression "puVar14 + 0x48150" (identifier "puVar14") (+ "+") (number_literal "0x48150")) () ")"))))) () ")")) (argument_list "(pcVar6,iVar4 + -0x484)" (( "(") (identifier "pcVar6") (, ",") (binary_expression "iVar4 + -0x484" (identifier "iVar4") (+ "+") (number_literal "-0x484")) () ")")))) (, ",") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      uStack_c0 = 0;\n      iVar4 = 0x37;\n      *(undefined4 *)(iVar9 + 0xc) = 0x37;\n      goto LAB_000ca5d4;\n    }" ({ "{") (expression_statement "uStack_c0 = 0;" (assignment_expression "uStack_c0 = 0" (identifier "uStack_c0") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar4 = 0x37;" (assignment_expression "iVar4 = 0x37" (identifier "iVar4") (= "=") (number_literal "0x37")) (; ";")) (expression_statement "*(undefined4 *)(iVar9 + 0xc) = 0x37;" (assignment_expression "*(undefined4 *)(iVar9 + 0xc) = 0x37" (pointer_expression "*(undefined4 *)(iVar9 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xc)" (( "(") (binary_expression "iVar9 + 0xc" (identifier "iVar9") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0x37")) (; ";")) (goto_statement "goto LAB_000ca5d4;" (goto "goto") (statement_identifier "LAB_000ca5d4") (; ";")) (} "}"))) (expression_statement "iVar4 = *(int *)(iVar9 + 0xc);" (assignment_expression "iVar4 = *(int *)(iVar9 + 0xc)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar9 + 0xc)" (* "*") (cast_expression "(int *)(iVar9 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xc)" (( "(") (binary_expression "iVar9 + 0xc" (identifier "iVar9") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (iVar4 != 0) {\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uStack_c0 = 0;\n      goto LAB_000ca5d4;\n    }" ({ "{") (expression_statement "uStack_c0 = 0;" (assignment_expression "uStack_c0 = 0" (identifier "uStack_c0") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_000ca5d4;" (goto "goto") (statement_identifier "LAB_000ca5d4") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar4 = 0x37;" (assignment_expression "iVar4 = 0x37" (identifier "iVar4") (= "=") (number_literal "0x37")) (; ";")) (if_statement "if (param_2 != (int *)0x0) {\n    if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(param_2 != (int *)0x0)" (( "(") (binary_expression "param_2 != (int *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }\n  }" ({ "{") (if_statement "if (*(char *)param_2 == '\0') {\n      iVar4 = 0x37;\n    }\n    else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }" (if "if") (parenthesized_expression "(*(char *)param_2 == '\0')" (( "(") (binary_expression "*(char *)param_2 == '\0'" (pointer_expression "*(char *)param_2" (* "*") (cast_expression "(char *)param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar4 = 0x37;\n    }" ({ "{") (expression_statement "iVar4 = 0x37;" (assignment_expression "iVar4 = 0x37" (identifier "iVar4") (= "=") (number_literal "0x37")) (; ";")) (} "}")) (else_clause "else {\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }" (else "else") (compound_statement "{\n      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);\n      if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }\n    }" ({ "{") (expression_statement "iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);" (assignment_expression "iVar4 = (**(code **)(puVar14 + 0x47974))(param_2)" (identifier "iVar4") (= "=") (call_expression "(**(code **)(puVar14 + 0x47974))(param_2)" (parenthesized_expression "(**(code **)(puVar14 + 0x47974))" (( "(") (pointer_expression "**(code **)(puVar14 + 0x47974)" (* "*") (pointer_expression "*(code **)(puVar14 + 0x47974)" (* "*") (cast_expression "(code **)(puVar14 + 0x47974)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x47974)" (( "(") (binary_expression "puVar14 + 0x47974" (identifier "puVar14") (+ "+") (number_literal "0x47974")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uStack_c0 = (uint)(iVar7 == 0);\n        *(int *)(iVar9 + 0xc) = iVar7;\n        iVar4 = iVar7;\n        goto LAB_000ca5d4;\n      }" ({ "{") (expression_statement "uStack_c0 = (uint)(iVar7 == 0);" (assignment_expression "uStack_c0 = (uint)(iVar7 == 0)" (identifier "uStack_c0") (= "=") (call_expression "(uint)(iVar7 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")))) (; ";")) (expression_statement "*(int *)(iVar9 + 0xc) = iVar7;" (assignment_expression "*(int *)(iVar9 + 0xc) = iVar7" (pointer_expression "*(int *)(iVar9 + 0xc)" (* "*") (cast_expression "(int *)(iVar9 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xc)" (( "(") (binary_expression "iVar9 + 0xc" (identifier "iVar9") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "iVar4 = iVar7;" (assignment_expression "iVar4 = iVar7" (identifier "iVar4") (= "=") (identifier "iVar7")) (; ";")) (goto_statement "goto LAB_000ca5d4;" (goto "goto") (statement_identifier "LAB_000ca5d4") (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "*(int *)(iVar9 + 0xc) = iVar4;" (assignment_expression "*(int *)(iVar9 + 0xc) = iVar4" (pointer_expression "*(int *)(iVar9 + 0xc)" (* "*") (cast_expression "(int *)(iVar9 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xc)" (( "(") (binary_expression "iVar9 + 0xc" (identifier "iVar9") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "uStack_c0 = 0;" (assignment_expression "uStack_c0 = 0" (identifier "uStack_c0") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000ca5d4:\n  puVar13 = (uint *)(iVar9 + 0x410);" (statement_identifier "LAB_000ca5d4") (: ":") (expression_statement "puVar13 = (uint *)(iVar9 + 0x410);" (assignment_expression "puVar13 = (uint *)(iVar9 + 0x410)" (identifier "puVar13") (= "=") (cast_expression "(uint *)(iVar9 + 0x410)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x410)" (( "(") (binary_expression "iVar9 + 0x410" (identifier "iVar9") (+ "+") (number_literal "0x410")) () ")")))) (; ";"))) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar7 = *(int *)(puVar14 + 0x46dc4);" (assignment_expression "iVar7 = *(int *)(puVar14 + 0x46dc4)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(puVar14 + 0x46dc4)" (* "*") (cast_expression "(int *)(puVar14 + 0x46dc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 0x46dc4)" (( "(") (binary_expression "puVar14 + 0x46dc4" (identifier "puVar14") (+ "+") (number_literal "0x46dc4")) () ")"))))) (; ";")) (expression_statement "puVar12 = puVar13;" (assignment_expression "puVar12 = puVar13" (identifier "puVar12") (= "=") (identifier "puVar13")) (; ";")) (while_statement "while( true ) {\n    auStack_a8[0] = (undefined1)uVar11;\n    uStack_b0 = 1;\n    if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }\n    if (uVar11 == 0xff) break;\n    puVar12 = puVar12 + 1;\n    uVar11 = uVar11 + 1;\n    iVar4 = *(int *)(iVar9 + 0xc);\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    auStack_a8[0] = (undefined1)uVar11;\n    uStack_b0 = 1;\n    if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }\n    if (uVar11 == 0xff) break;\n    puVar12 = puVar12 + 1;\n    uVar11 = uVar11 + 1;\n    iVar4 = *(int *)(iVar9 + 0xc);\n  }" ({ "{") (expression_statement "auStack_a8[0] = (undefined1)uVar11;" (assignment_expression "auStack_a8[0] = (undefined1)uVar11" (subscript_expression "auStack_a8[0]" (identifier "auStack_a8") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(undefined1)uVar11" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (identifier "uVar11"))) (; ";")) (expression_statement "uStack_b0 = 1;" (assignment_expression "uStack_b0 = 1" (identifier "uStack_b0") (= "=") (number_literal "1")) (; ";")) (if_statement "if (iVar4 == 0) {\n      *puVar12 = uVar11 | 0xd800;\n    }\n    else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *puVar12 = uVar11 | 0xd800;\n    }" ({ "{") (expression_statement "*puVar12 = uVar11 | 0xd800;" (assignment_expression "*puVar12 = uVar11 | 0xd800" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (= "=") (binary_expression "uVar11 | 0xd800" (identifier "uVar11") (| "|") (number_literal "0xd800"))) (; ";")) (} "}")) (else_clause "else {\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }" (else "else") (compound_statement "{\n      puStack_b4 = auStack_a8;\n      iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);\n      if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }\n    }" ({ "{") (expression_statement "puStack_b4 = auStack_a8;" (assignment_expression "puStack_b4 = auStack_a8" (identifier "puStack_b4") (= "=") (identifier "auStack_a8")) (; ";")) (expression_statement "iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);" (assignment_expression "iVar4 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0)" (identifier "iVar4") (= "=") (call_expression "(**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0)" (parenthesized_expression "(**(code **)(puVar14 + 0x47970))" (( "(") (pointer_expression "**(code **)(puVar14 + 0x47970)" (* "*") (pointer_expression "*(code **)(puVar14 + 0x47970)" (* "*") (cast_expression "(code **)(puVar14 + 0x47970)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x47970)" (( "(") (binary_expression "puVar14 + 0x47970" (identifier "puVar14") (+ "+") (number_literal "0x47970")) () ")"))))) () ")")) (argument_list "(&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0)" (( "(") (pointer_expression "&puStack_b4" (& "&") (identifier "puStack_b4")) (, ",") (pointer_expression "&uStack_b0" (& "&") (identifier "uStack_b0")) (, ",") (pointer_expression "&uStack_ac" (& "&") (identifier "uStack_ac")) (, ",") (number_literal "1") (, ",") (identifier "iVar4") (, ",") (number_literal "0") (, ",") (binary_expression "iVar7 + -0x7b5c" (identifier "iVar7") (+ "+") (number_literal "-0x7b5c")) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar4 == 1) {\n        *puVar12 = uStack_ac;\n      }\n      else {\n        *puVar12 = 0xfffd;\n      }" (if "if") (parenthesized_expression "(iVar4 == 1)" (( "(") (binary_expression "iVar4 == 1" (identifier "iVar4") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        *puVar12 = uStack_ac;\n      }" ({ "{") (expression_statement "*puVar12 = uStack_ac;" (assignment_expression "*puVar12 = uStack_ac" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (= "=") (identifier "uStack_ac")) (; ";")) (} "}")) (else_clause "else {\n        *puVar12 = 0xfffd;\n      }" (else "else") (compound_statement "{\n        *puVar12 = 0xfffd;\n      }" ({ "{") (expression_statement "*puVar12 = 0xfffd;" (assignment_expression "*puVar12 = 0xfffd" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (= "=") (number_literal "0xfffd")) (; ";")) (} "}")))) (} "}")))) (if_statement "if (uVar11 == 0xff) break;" (if "if") (parenthesized_expression "(uVar11 == 0xff)" (( "(") (binary_expression "uVar11 == 0xff" (identifier "uVar11") (== "==") (number_literal "0xff")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" (identifier "puVar12") (= "=") (binary_expression "puVar12 + 1" (identifier "puVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = *(int *)(iVar9 + 0xc);" (assignment_expression "iVar4 = *(int *)(iVar9 + 0xc)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar9 + 0xc)" (* "*") (cast_expression "(int *)(iVar9 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xc)" (( "(") (binary_expression "iVar9 + 0xc" (identifier "iVar9") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}"))) (expression_statement "puVar8 = (undefined4 *)(iVar9 + 0xc10);" (assignment_expression "puVar8 = (undefined4 *)(iVar9 + 0xc10)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)(iVar9 + 0xc10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xc10)" (( "(") (binary_expression "iVar9 + 0xc10" (identifier "iVar9") (+ "+") (number_literal "0xc10")) () ")")))) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750;" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750" (identifier "iVar4") (= "=") (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x5750" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" (* "*") (cast_expression "(int *)(puVar14 + 0x46dc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 0x46dc4)" (( "(") (binary_expression "puVar14 + 0x46dc4" (identifier "puVar14") (+ "+") (number_literal "0x46dc4")) () ")")))) (+ "+") (number_literal "-0x5750"))) (; ";")) (if_statement "if (local_68 == 3) {\n    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;\n  }" (if "if") (parenthesized_expression "(local_68 == 3)" (( "(") (binary_expression "local_68 == 3" (identifier "local_68") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;\n  }" ({ "{") (expression_statement "iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;" (assignment_expression "iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0" (identifier "iVar4") (= "=") (binary_expression "*(int *)(puVar14 + 0x46dc4) + -0x56d0" (pointer_expression "*(int *)(puVar14 + 0x46dc4)" (* "*") (cast_expression "(int *)(puVar14 + 0x46dc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 0x46dc4)" (( "(") (binary_expression "puVar14 + 0x46dc4" (identifier "puVar14") (+ "+") (number_literal "0x46dc4")) () ")")))) (+ "+") (number_literal "-0x56d0"))) (; ";")) (} "}"))) (while_statement "while( true ) {\n    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }\n    *puVar8 = puVar8[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar8 = puVar8 + 1;\n    uVar11 = uVar10;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }\n    *puVar8 = puVar8[-0x200];\n    if (uVar10 == 0x100) break;\n    puVar8 = puVar8 + 1;\n    uVar11 = uVar10;\n  }" ({ "{") (while_statement "while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }" (while "while") (parenthesized_expression "(uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20)" (( "(") (comma_expression "uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20" (assignment_expression "uVar10 = uVar11 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (, ",") (binary_expression "uVar11 - 0x5f < 0x20" (binary_expression "uVar11 - 0x5f" (identifier "uVar11") (- "-") (number_literal "0x5f")) (< "<") (number_literal "0x20"))) () ")")) (compound_statement "{\n      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);\n      puVar8 = puVar8 + 1;\n      uVar11 = uVar10;\n    }" ({ "{") (expression_statement "*puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);" (assignment_expression "*puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4)" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (pointer_expression "*(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4)" (* "*") (cast_expression "(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + (uVar11 & 0x1f) * 4)" (( "(") (binary_expression "iVar4 + (uVar11 & 0x1f) * 4" (identifier "iVar4") (+ "+") (binary_expression "(uVar11 & 0x1f) * 4" (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" (identifier "uVar11") (= "=") (identifier "uVar10")) (; ";")) (} "}"))) (expression_statement "*puVar8 = puVar8[-0x200];" (assignment_expression "*puVar8 = puVar8[-0x200]" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (subscript_expression "puVar8[-0x200]" (identifier "puVar8") ([ "[") (number_literal "-0x200") (] "]"))) (; ";")) (if_statement "if (uVar10 == 0x100) break;" (if "if") (parenthesized_expression "(uVar10 == 0x100)" (( "(") (binary_expression "uVar10 == 0x100" (identifier "uVar10") (== "==") (number_literal "0x100")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" (identifier "uVar11") (= "=") (identifier "uVar10")) (; ";")) (} "}"))) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar12 = (uint *)(iVar9 + 0x10);" (assignment_expression "puVar12 = (uint *)(iVar9 + 0x10)" (identifier "puVar12") (= "=") (cast_expression "(uint *)(iVar9 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x10)" (( "(") (binary_expression "iVar9 + 0x10" (identifier "iVar9") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (do_statement "do {\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }\n    iVar4 = iVar4 + 1;\n    *puVar12 = 0xfffd;\n    puVar12 = puVar12 + 1;\n  } while (iVar4 != 0x100);" (do "do") (compound_statement "{\n    while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }\n    iVar4 = iVar4 + 1;\n    *puVar12 = 0xfffd;\n    puVar12 = puVar12 + 1;\n  }" ({ "{") (while_statement "while( true ) {\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      auStack_a8[0] = (undefined1)iVar4;\n      uStack_b0 = 1;\n      puStack_b4 = auStack_a8;\n      iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);\n      if (iVar5 != 1) break;\n      iVar4 = iVar4 + 1;\n      *puVar12 = uStack_ac;\n      puVar12 = puVar12 + 1;\n      if (iVar4 == 0x100) goto LAB_000ca778;\n    }" ({ "{") (expression_statement "auStack_a8[0] = (undefined1)iVar4;" (assignment_expression "auStack_a8[0] = (undefined1)iVar4" (subscript_expression "auStack_a8[0]" (identifier "auStack_a8") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(undefined1)iVar4" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (identifier "iVar4"))) (; ";")) (expression_statement "uStack_b0 = 1;" (assignment_expression "uStack_b0 = 1" (identifier "uStack_b0") (= "=") (number_literal "1")) (; ";")) (expression_statement "puStack_b4 = auStack_a8;" (assignment_expression "puStack_b4 = auStack_a8" (identifier "puStack_b4") (= "=") (identifier "auStack_a8")) (; ";")) (expression_statement "iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);" (assignment_expression "iVar5 = (**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0)" (identifier "iVar5") (= "=") (call_expression "(**(code **)(puVar14 + 0x47970))\n                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0)" (parenthesized_expression "(**(code **)(puVar14 + 0x47970))" (( "(") (pointer_expression "**(code **)(puVar14 + 0x47970)" (* "*") (pointer_expression "*(code **)(puVar14 + 0x47970)" (* "*") (cast_expression "(code **)(puVar14 + 0x47970)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x47970)" (( "(") (binary_expression "puVar14 + 0x47970" (identifier "puVar14") (+ "+") (number_literal "0x47970")) () ")"))))) () ")")) (argument_list "(&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0)" (( "(") (pointer_expression "&puStack_b4" (& "&") (identifier "puStack_b4")) (, ",") (pointer_expression "&uStack_b0" (& "&") (identifier "uStack_b0")) (, ",") (pointer_expression "&uStack_ac" (& "&") (identifier "uStack_ac")) (, ",") (number_literal "1") (, ",") (number_literal "0x11") (, ",") (number_literal "0") (, ",") (binary_expression "iVar7 + -0x7b5c" (identifier "iVar7") (+ "+") (number_literal "-0x7b5c")) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar5 != 1) break;" (if "if") (parenthesized_expression "(iVar5 != 1)" (( "(") (binary_expression "iVar5 != 1" (identifier "iVar5") (!= "!=") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar12 = uStack_ac;" (assignment_expression "*puVar12 = uStack_ac" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (= "=") (identifier "uStack_ac")) (; ";")) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" (identifier "puVar12") (= "=") (binary_expression "puVar12 + 1" (identifier "puVar12") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar4 == 0x100) goto LAB_000ca778;" (if "if") (parenthesized_expression "(iVar4 == 0x100)" (( "(") (binary_expression "iVar4 == 0x100" (identifier "iVar4") (== "==") (number_literal "0x100")) () ")")) (goto_statement "goto LAB_000ca778;" (goto "goto") (statement_identifier "LAB_000ca778") (; ";"))) (} "}"))) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar12 = 0xfffd;" (assignment_expression "*puVar12 = 0xfffd" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (= "=") (number_literal "0xfffd")) (; ";")) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" (identifier "puVar12") (= "=") (binary_expression "puVar12 + 1" (identifier "puVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0x100)" (( "(") (binary_expression "iVar4 != 0x100" (identifier "iVar4") (!= "!=") (number_literal "0x100")) () ")")) (; ";")) (labeled_statement "LAB_000ca778:\n  iVar7 = 0;" (statement_identifier "LAB_000ca778") (: ":") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";"))) (do_statement "do {\n    while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar7 = iVar7 + 1;\n    puVar13 = puVar13 + 1;\n    *(undefined1 *)(iVar4 + 0x1410) = 0xff;\n  } while (iVar7 != 0x100);" (do "do") (compound_statement "{\n    while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }\n    iVar7 = iVar7 + 1;\n    puVar13 = puVar13 + 1;\n    *(undefined1 *)(iVar4 + 0x1410) = 0xff;\n  }" ({ "{") (while_statement "while( true ) {\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar11 = *puVar13;\n      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;\n      iVar4 = iVar9 + iVar7;\n      uVar1 = (undefined1)iVar7;\n      iVar7 = iVar7 + 1;\n      puVar13 = puVar13 + 1;\n      *(undefined1 *)(iVar4 + 0x1410) = uVar1;\n      if (iVar7 == 0x100) goto LAB_000ca7ec;\n    }" ({ "{") (expression_statement "uVar11 = *puVar13;" (assignment_expression "uVar11 = *puVar13" (identifier "uVar11") (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (if_statement "if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;" (if "if") (parenthesized_expression "((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f))" (( "(") (binary_expression "(((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&\n         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)" (parenthesized_expression "(((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800))" (( "(") (binary_expression "((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)" (parenthesized_expression "((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f))" (( "(") (binary_expression "(0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)" (parenthesized_expression "(0x1f < (int)uVar11)" (( "(") (binary_expression "0x1f < (int)uVar11" (number_literal "0x1f") (< "<") (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11"))) () ")")) (&& "&&") (parenthesized_expression "(0x20 < uVar11 - 0x7f)" (( "(") (binary_expression "0x20 < uVar11 - 0x7f" (number_literal "0x20") (< "<") (binary_expression "uVar11 - 0x7f" (identifier "uVar11") (- "-") (number_literal "0x7f"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(0x1f < uVar11 - 0xd800)" (( "(") (binary_expression "0x1f < uVar11 - 0xd800" (number_literal "0x1f") (< "<") (binary_expression "uVar11 - 0xd800" (identifier "uVar11") (- "-") (number_literal "0xd800"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)" (( "(") (comma_expression "iVar4 = iVar9 + iVar7, uVar11 != 0xd87f" (assignment_expression "iVar4 = iVar9 + iVar7" (identifier "iVar4") (= "=") (binary_expression "iVar9 + iVar7" (identifier "iVar9") (+ "+") (identifier "iVar7"))) (, ",") (binary_expression "uVar11 != 0xd87f" (identifier "uVar11") (!= "!=") (number_literal "0xd87f"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar9 + iVar7;" (assignment_expression "iVar4 = iVar9 + iVar7" (identifier "iVar4") (= "=") (binary_expression "iVar9 + iVar7" (identifier "iVar9") (+ "+") (identifier "iVar7"))) (; ";")) (expression_statement "uVar1 = (undefined1)iVar7;" (assignment_expression "uVar1 = (undefined1)iVar7" (identifier "uVar1") (= "=") (cast_expression "(undefined1)iVar7" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (identifier "iVar7"))) (; ";")) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 1" (identifier "puVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)(iVar4 + 0x1410) = uVar1;" (assignment_expression "*(undefined1 *)(iVar4 + 0x1410) = uVar1" (pointer_expression "*(undefined1 *)(iVar4 + 0x1410)" (* "*") (cast_expression "(undefined1 *)(iVar4 + 0x1410)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x1410)" (( "(") (binary_expression "iVar4 + 0x1410" (identifier "iVar4") (+ "+") (number_literal "0x1410")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (iVar7 == 0x100) goto LAB_000ca7ec;" (if "if") (parenthesized_expression "(iVar7 == 0x100)" (( "(") (binary_expression "iVar7 == 0x100" (identifier "iVar7") (== "==") (number_literal "0x100")) () ")")) (goto_statement "goto LAB_000ca7ec;" (goto "goto") (statement_identifier "LAB_000ca7ec") (; ";"))) (} "}"))) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 1" (identifier "puVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)(iVar4 + 0x1410) = 0xff;" (assignment_expression "*(undefined1 *)(iVar4 + 0x1410) = 0xff" (pointer_expression "*(undefined1 *)(iVar4 + 0x1410)" (* "*") (cast_expression "(undefined1 *)(iVar4 + 0x1410)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x1410)" (( "(") (binary_expression "iVar4 + 0x1410" (identifier "iVar4") (+ "+") (number_literal "0x1410")) () ")")))) (= "=") (number_literal "0xff")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar7 != 0x100)" (( "(") (binary_expression "iVar7 != 0x100" (identifier "iVar7") (!= "!=") (number_literal "0x100")) () ")")) (; ";")) (labeled_statement "LAB_000ca7ec:\n  if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }" (statement_identifier "LAB_000ca7ec") (: ":") (if_statement "if (iStack_a4 == *piVar3) {\n    return uStack_c0;\n  }" (if "if") (parenthesized_expression "(iStack_a4 == *piVar3)" (( "(") (binary_expression "iStack_a4 == *piVar3" (identifier "iStack_a4") (== "==") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) () ")")) (compound_statement "{\n    return uStack_c0;\n  }" ({ "{") (return_statement "return uStack_c0;" (return "return") (identifier "uStack_c0") (; ";")) (} "}")))) (expression_statement "pcVar15 = *(code **)(puVar14 + 0x47d98);" (assignment_expression "pcVar15 = *(code **)(puVar14 + 0x47d98)" (identifier "pcVar15") (= "=") (pointer_expression "*(code **)(puVar14 + 0x47d98)" (* "*") (cast_expression "(code **)(puVar14 + 0x47d98)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x47d98)" (( "(") (binary_expression "puVar14 + 0x47d98" (identifier "puVar14") (+ "+") (number_literal "0x47d98")) () ")"))))) (; ";")) (expression_statement "iVar7 = iStack_a4;" (assignment_expression "iVar7 = iStack_a4" (identifier "iVar7") (= "=") (identifier "iStack_a4")) (; ";")) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (iVar7 == 0) {\n    return *(int *)(pcVar15 + 0x469f0) - 0x5764;\n  }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return *(int *)(pcVar15 + 0x469f0) - 0x5764;\n  }" ({ "{") (return_statement "return *(int *)(pcVar15 + 0x469f0) - 0x5764;" (return "return") (binary_expression "*(int *)(pcVar15 + 0x469f0) - 0x5764" (pointer_expression "*(int *)(pcVar15 + 0x469f0)" (* "*") (cast_expression "(int *)(pcVar15 + 0x469f0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar15 + 0x469f0)" (( "(") (binary_expression "pcVar15 + 0x469f0" (identifier "pcVar15") (+ "+") (number_literal "0x469f0")) () ")")))) (- "-") (number_literal "0x5764")) (; ";")) (} "}"))) (expression_statement "uVar11 = (**(code **)(pcVar15 + 0x475a4))();" (assignment_expression "uVar11 = (**(code **)(pcVar15 + 0x475a4))()" (identifier "uVar11") (= "=") (call_expression "(**(code **)(pcVar15 + 0x475a4))()" (parenthesized_expression "(**(code **)(pcVar15 + 0x475a4))" (( "(") (pointer_expression "**(code **)(pcVar15 + 0x475a4)" (* "*") (pointer_expression "*(code **)(pcVar15 + 0x475a4)" (* "*") (cast_expression "(code **)(pcVar15 + 0x475a4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar15 + 0x475a4)" (( "(") (binary_expression "pcVar15 + 0x475a4" (identifier "pcVar15") (+ "+") (number_literal "0x475a4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar11;" (return "return") (identifier "uVar11") (; ";")) (} "}")))

int function_1(int var_2,int var_9,type_1 *wcstr,int var_3,char *var_7,int var_6,char *var_10,
            int *var_1,type_2 *ucsdata)

{
  type_3 uVar1;
  type_4 *puVar2;
  int *piVar3;
  int var_11;
  char *var_16;
  int var_17;
  type_5 *var_21;
  int var_13;
  type_1 *var_12;
  type_6 var_22;
  type_7 *var_15;
  int var_5;
  type_6 var_18;
  type_6 *var_19;
  type_7 *var_4;
  type_5 unaff_s5;
  int *unaff_s6;
  type_6 *var_23;
  type_4 *var_14;
  type_8 *var_25;
  int var_8;
  type_6 uStack_c0;
  type_3 *puStack_b4;
  type_5 uStack_b0;
  type_6 uStack_ac;
  type_3 auStack_a8 [4];
  int var_24;
  int iStack_a0;
  type_4 *puStack_9c;
  int iStack_98;
  char *pcStack_94;
  type_7 *pmStack_90;
  type_5 uStack_8c;
  int *piStack_88;
  type_7 *pmStack_84;
  int var_20;
  type_1 *local_4c [2];
  type_7 state;
  char output [16];
  
  puVar2 = PTR___stack_chk_guard_00112630;
  var_13 = *(int *)PTR___stack_chk_guard_00112630;
  if (var_1 != (int *)0x0) {
    *var_1 = 0;
  }
  var_15 = (type_7 *)wcstr;
  var_17 = var_3;
  var_8 = var_3;
  local_4c[0] = wcstr;
  if (var_2 == 0xffff) {
    state.__count = 0;
    state.__value.__wch = 0;
    if (var_3 < 1) {
LAB_000ca51c:
      var_5 = 0;
    }
    else {
      var_5 = 0;
      unaff_s6 = (int *)output;
      unaff_s5 = 0xffffffff;
      do {
        var_9 = *local_4c[0];
        var_15 = &state;
        var_4 = (type_7 *)(*(type_8 *)PTR_wcrtomb_0011232c)(unaff_s6);
        if ((var_4 == (type_7 *)0xffffffff) || (var_5 - var_6 < (int)var_4)) break;
        var_9 = (int)unaff_s6;
        var_15 = var_4;
        (*(type_8 *)PTR_memcpy_0011256c)(var_7 + var_5);
        var_5 = (int)&var_4->__count + var_5;
        local_4c[0] = local_4c[0] + 1;
        var_8 = var_8 + -1;
      } while (0 < var_8);
    }
  }
  else if (var_2 == 0) {
    var_5 = 0;
    if (0 < var_3) {
      if (var_6 < 1) goto LAB_000ca51c;
      var_5 = 0;
      var_11 = var_3;
      var_12 = wcstr;
      do {
        var_9 = *var_12;
        var_16 = var_7 + var_5;
        if ((int *)(var_9 + -0xd800) < (int *)0x100) {
          var_5 = var_5 + 1;
          *var_16 = (char)var_9;
        }
        else if (var_10 != (char *)0x0) {
          var_9 = (int)*var_10;
          var_5 = var_5 + 1;
          *var_16 = *var_10;
        }
        var_15 = (type_7 *)0xffff2800;
        var_8 = var_11 + -1;
        if (var_11 + -1 == 0) break;
        var_11 = var_11 + -1;
        var_12 = var_12 + 1;
        var_8 = var_11;
      } while (var_5 < var_6);
    }
  }
  else {
    var_9 = (int)&var_8;
    var_15 = (type_7 *)var_7;
    var_17 = var_6;
    var_5 = (*(type_8 *)PTR_charset_from_unicode_00111d40)(local_4c);
    var_20 = var_2;
  }
  if (var_13 == *(int *)puVar2) {
    return var_5;
  }
  var_14 = PTR___stack_chk_fail_001122c8;
  (*(type_8 *)PTR___stack_chk_fail_001122c8)();
  piVar3 = *(int **)(var_14 + 0x48100);
  iStack_98 = var_6;
  puStack_9c = puVar2;
  pcStack_94 = var_7;
  *(type_5 *)(var_13 + 8) = 0xffffffff;
  *(type_5 *)(var_13 + 0xc) = 0;
  var_24 = *piVar3;
  iStack_a0 = var_5;
  pmStack_90 = var_4;
  uStack_8c = unaff_s5;
  piStack_88 = unaff_s6;
  pmStack_84 = &state;
  if (var_15 != (type_7 *)0x0) {
    var_16 = (char *)(**(type_8 **)(var_14 + 0x47e74))(*(int *)(var_14 + 0x46dc4) + -0x5780);
    if (((((var_16 != (char *)0x0) && (var_5 = *(int *)(var_14 + 0x46db8), *var_16 != '\0')) ||
         ((var_16 = (char *)(**(type_8 **)(var_14 + 0x47e74))(*(int *)(var_14 + 0x46dc4) + -0x5778),
          var_16 != (char *)0x0 && (var_5 = *(int *)(var_14 + 0x46db8), *var_16 != '\0')))) ||
        ((var_16 = (char *)(**(type_8 **)(var_14 + 0x47e74))(*(int *)(var_14 + 0x46dc4) + -0x576c),
         var_16 != (char *)0x0 && (var_5 = *(int *)(var_14 + 0x46db8), *var_16 != '\0')))) &&
       (var_5 = (**(type_8 **)(var_14 + 0x48150))(var_16,var_5 + -0x484), var_5 != 0)) {
      uStack_c0 = 0;
      var_5 = 0x37;
      *(type_5 *)(var_13 + 0xc) = 0x37;
      goto LAB_000ca5d4;
    }
    var_5 = *(int *)(var_13 + 0xc);
    if (var_5 != 0) {
      uStack_c0 = 0;
      goto LAB_000ca5d4;
    }
  }
  var_5 = 0x37;
  if ((int *)var_9 != (int *)0x0) {
    if (*(char *)var_9 == '\0') {
      var_5 = 0x37;
    }
    else {
      var_5 = (**(type_8 **)(var_14 + 0x47974))(var_9);
      if (var_5 == 0) {
        uStack_c0 = (type_6)(var_17 == 0);
        *(int *)(var_13 + 0xc) = var_17;
        var_5 = var_17;
        goto LAB_000ca5d4;
      }
    }
  }
  *(int *)(var_13 + 0xc) = var_5;
  uStack_c0 = 0;
LAB_000ca5d4:
  var_23 = (type_6 *)(var_13 + 0x410);
  var_18 = 0;
  var_17 = *(int *)(var_14 + 0x46dc4);
  var_19 = var_23;
  while( true ) {
    auStack_a8[0] = (type_3)var_18;
    uStack_b0 = 1;
    if (var_5 == 0) {
      *var_19 = var_18 | 0xd800;
    }
    else {
      puStack_b4 = auStack_a8;
      var_5 = (**(type_8 **)(var_14 + 0x47970))
                         (&puStack_b4,&uStack_b0,&uStack_ac,1,var_5,0,var_17 + -0x7b5c,0);
      if (var_5 == 1) {
        *var_19 = uStack_ac;
      }
      else {
        *var_19 = 0xfffd;
      }
    }
    if (var_18 == 0xff) break;
    var_19 = var_19 + 1;
    var_18 = var_18 + 1;
    var_5 = *(int *)(var_13 + 0xc);
  }
  var_21 = (type_5 *)(var_13 + 0xc10);
  var_18 = 0;
  var_5 = *(int *)(var_14 + 0x46dc4) + -0x5750;
  if (var_20 == 3) {
    var_5 = *(int *)(var_14 + 0x46dc4) + -0x56d0;
  }
  while( true ) {
    while (var_22 = var_18 + 1, var_18 - 0x5f < 0x20) {
      *var_21 = *(type_5 *)(var_5 + (var_18 & 0x1f) * 4);
      var_21 = var_21 + 1;
      var_18 = var_22;
    }
    *var_21 = var_21[-0x200];
    if (var_22 == 0x100) break;
    var_21 = var_21 + 1;
    var_18 = var_22;
  }
  var_5 = 0;
  var_19 = (type_6 *)(var_13 + 0x10);
  do {
    while( true ) {
      auStack_a8[0] = (type_3)var_5;
      uStack_b0 = 1;
      puStack_b4 = auStack_a8;
      var_11 = (**(type_8 **)(var_14 + 0x47970))
                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,var_17 + -0x7b5c,0);
      if (var_11 != 1) break;
      var_5 = var_5 + 1;
      *var_19 = uStack_ac;
      var_19 = var_19 + 1;
      if (var_5 == 0x100) goto LAB_000ca778;
    }
    var_5 = var_5 + 1;
    *var_19 = 0xfffd;
    var_19 = var_19 + 1;
  } while (var_5 != 0x100);
LAB_000ca778:
  var_17 = 0;
  do {
    while( true ) {
      var_18 = *var_23;
      if ((((0x1f < (int)var_18) && (0x20 < var_18 - 0x7f)) && (0x1f < var_18 - 0xd800)) &&
         (var_5 = var_13 + var_17, var_18 != 0xd87f)) break;
      var_5 = var_13 + var_17;
      uVar1 = (type_3)var_17;
      var_17 = var_17 + 1;
      var_23 = var_23 + 1;
      *(type_3 *)(var_5 + 0x1410) = uVar1;
      if (var_17 == 0x100) goto LAB_000ca7ec;
    }
    var_17 = var_17 + 1;
    var_23 = var_23 + 1;
    *(type_3 *)(var_5 + 0x1410) = 0xff;
  } while (var_17 != 0x100);
LAB_000ca7ec:
  if (var_24 == *piVar3) {
    return uStack_c0;
  }
  var_25 = *(type_8 **)(var_14 + 0x47d98);
  var_13 = var_24;
  (*var_25)();
  if (var_13 == 0) {
    return *(int *)(var_25 + 0x469f0) + -0x5764;
  }
                    /* WARNING: Could not recover jumptable at 0x000ca924. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  var_13 = (**(type_8 **)(var_25 + 0x475a4))();
  return var_13;
}


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

uint MASKED(int param_1,int *param_2,undefined4 *param_3,int param_4,undefined4 *param_5,
             int param_6,char *param_7,undefined4 *param_8)

{
  undefined1 uVar1;
  undefined *puVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  char *pcVar6;
  int iVar7;
  undefined4 *puVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  uint *puVar12;
  undefined4 *unaff_s4;
  undefined4 unaff_s5;
  int *unaff_s6;
  uint *puVar13;
  undefined *puVar14;
  code *pcVar15;
  int local_resc;
  uint uStack_c0;
  undefined1 *puStack_b4;
  undefined4 uStack_b0;
  uint uStack_ac;
  undefined1 auStack_a8 [4];
  int iStack_a4;
  uint uStack_a0;
  undefined *puStack_9c;
  int iStack_98;
  undefined4 *puStack_94;
  undefined4 *puStack_90;
  undefined4 uStack_8c;
  int *piStack_88;
  undefined4 *puStack_84;
  int local_68;
  undefined4 *local_4c [2];
  undefined4 local_44;
  undefined4 local_40;
  int aiStack_3c [4];
  int local_2c;
  
  puVar2 = PTR___stack_chk_guard_00112630;
  local_2c = *(int *)PTR___stack_chk_guard_00112630;
  if (param_8 != (undefined4 *)0x0) {
    *param_8 = 0;
  }
  puVar8 = param_3;
  iVar7 = param_4;
  local_resc = param_4;
  local_4c[0] = param_3;
  if (param_1 == 0xffff) {
    local_44 = 0;
    local_40 = 0;
    if (param_4 < 1) {
LAB_000ca51c:
      uVar11 = 0;
    }
    else {
      uVar11 = 0;
      unaff_s6 = aiStack_3c;
      unaff_s5 = 0xffffffff;
      do {
        param_2 = (int *)*local_4c[0];
        puVar8 = &local_44;
        unaff_s4 = (undefined4 *)(*(code *)PTR_wcrtomb_0011232c)(unaff_s6);
        if ((unaff_s4 == (undefined4 *)0xffffffff) || ((int)(uVar11 - param_6) < (int)unaff_s4))
        break;
        param_2 = unaff_s6;
        puVar8 = unaff_s4;
        (*(code *)PTR_memcpy_0011256c)((int)param_5 + uVar11);
        uVar11 = uVar11 + (int)unaff_s4;
        local_4c[0] = local_4c[0] + 1;
        local_resc = local_resc + -1;
      } while (0 < local_resc);
    }
  }
  else if (param_1 == 0) {
    uVar11 = 0;
    if (0 < param_4) {
      if (param_6 < 1) goto LAB_000ca51c;
      uVar11 = 0;
      do {
        param_2 = (int *)*param_3;
        pcVar6 = (char *)((int)param_5 + uVar11);
        if (param_2 + -0x3600 < (int *)0x100) {
          uVar11 = uVar11 + 1;
          *pcVar6 = (char)param_2;
        }
        else if (param_7 != (char *)0x0) {
          param_2 = (int *)(int)*param_7;
          uVar11 = uVar11 + 1;
          *pcVar6 = *param_7;
        }
        puVar8 = (undefined4 *)0xffff2800;
        local_resc = param_4 + -1;
        if (param_4 + -1 == 0) break;
        param_4 = param_4 + -1;
        param_3 = param_3 + 1;
        local_resc = param_4;
      } while ((int)uVar11 < param_6);
    }
  }
  else {
    param_2 = &local_resc;
    puVar8 = param_5;
    iVar7 = param_6;
    uVar11 = (*(code *)PTR_charset_from_unicode_00111d40)(local_4c);
    local_68 = param_1;
  }
  if (local_2c == *(int *)puVar2) {
    return uVar11;
  }
  iVar9 = local_2c;
  puVar14 = PTR___stack_chk_fail_001122c8;
  (*(code *)PTR___stack_chk_fail_001122c8)();
  piVar3 = *(int **)(puVar14 + 0x48100);
  iStack_98 = param_6;
  puStack_9c = puVar2;
  puStack_94 = param_5;
  *(undefined4 *)(iVar9 + 8) = 0xffffffff;
  *(undefined4 *)(iVar9 + 0xc) = 0;
  iStack_a4 = *piVar3;
  uStack_a0 = uVar11;
  puStack_90 = unaff_s4;
  uStack_8c = unaff_s5;
  piStack_88 = unaff_s6;
  puStack_84 = &local_44;
  if (puVar8 != (undefined4 *)0x0) {
    pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5780);
    if (((((pcVar6 != (char *)0x0) && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')) ||
         ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x5778),
          pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) ||
        ((pcVar6 = (char *)(**(code **)(puVar14 + 0x47e74))(*(int *)(puVar14 + 0x46dc4) + -0x576c),
         pcVar6 != (char *)0x0 && (iVar4 = *(int *)(puVar14 + 0x46db8), *pcVar6 != '\0')))) &&
       (iVar4 = (**(code **)(puVar14 + 0x48150))(pcVar6,iVar4 + -0x484), iVar4 != 0)) {
      uStack_c0 = 0;
      iVar4 = 0x37;
      *(undefined4 *)(iVar9 + 0xc) = 0x37;
      goto LAB_000ca5d4;
    }
    iVar4 = *(int *)(iVar9 + 0xc);
    if (iVar4 != 0) {
      uStack_c0 = 0;
      goto LAB_000ca5d4;
    }
  }
  iVar4 = 0x37;
  if (param_2 != (int *)0x0) {
    if (*(char *)param_2 == '\0') {
      iVar4 = 0x37;
    }
    else {
      iVar4 = (**(code **)(puVar14 + 0x47974))(param_2);
      if (iVar4 == 0) {
        uStack_c0 = (uint)(iVar7 == 0);
        *(int *)(iVar9 + 0xc) = iVar7;
        iVar4 = iVar7;
        goto LAB_000ca5d4;
      }
    }
  }
  *(int *)(iVar9 + 0xc) = iVar4;
  uStack_c0 = 0;
LAB_000ca5d4:
  puVar13 = (uint *)(iVar9 + 0x410);
  uVar11 = 0;
  iVar7 = *(int *)(puVar14 + 0x46dc4);
  puVar12 = puVar13;
  while( true ) {
    auStack_a8[0] = (undefined1)uVar11;
    uStack_b0 = 1;
    if (iVar4 == 0) {
      *puVar12 = uVar11 | 0xd800;
    }
    else {
      puStack_b4 = auStack_a8;
      iVar4 = (**(code **)(puVar14 + 0x47970))
                        (&puStack_b4,&uStack_b0,&uStack_ac,1,iVar4,0,iVar7 + -0x7b5c,0);
      if (iVar4 == 1) {
        *puVar12 = uStack_ac;
      }
      else {
        *puVar12 = 0xfffd;
      }
    }
    if (uVar11 == 0xff) break;
    puVar12 = puVar12 + 1;
    uVar11 = uVar11 + 1;
    iVar4 = *(int *)(iVar9 + 0xc);
  }
  puVar8 = (undefined4 *)(iVar9 + 0xc10);
  uVar11 = 0;
  iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x5750;
  if (local_68 == 3) {
    iVar4 = *(int *)(puVar14 + 0x46dc4) + -0x56d0;
  }
  while( true ) {
    while (uVar10 = uVar11 + 1, uVar11 - 0x5f < 0x20) {
      *puVar8 = *(undefined4 *)(iVar4 + (uVar11 & 0x1f) * 4);
      puVar8 = puVar8 + 1;
      uVar11 = uVar10;
    }
    *puVar8 = puVar8[-0x200];
    if (uVar10 == 0x100) break;
    puVar8 = puVar8 + 1;
    uVar11 = uVar10;
  }
  iVar4 = 0;
  puVar12 = (uint *)(iVar9 + 0x10);
  do {
    while( true ) {
      auStack_a8[0] = (undefined1)iVar4;
      uStack_b0 = 1;
      puStack_b4 = auStack_a8;
      iVar5 = (**(code **)(puVar14 + 0x47970))
                        (&puStack_b4,&uStack_b0,&uStack_ac,1,0x11,0,iVar7 + -0x7b5c,0);
      if (iVar5 != 1) break;
      iVar4 = iVar4 + 1;
      *puVar12 = uStack_ac;
      puVar12 = puVar12 + 1;
      if (iVar4 == 0x100) goto LAB_000ca778;
    }
    iVar4 = iVar4 + 1;
    *puVar12 = 0xfffd;
    puVar12 = puVar12 + 1;
  } while (iVar4 != 0x100);
LAB_000ca778:
  iVar7 = 0;
  do {
    while( true ) {
      uVar11 = *puVar13;
      if ((((0x1f < (int)uVar11) && (0x20 < uVar11 - 0x7f)) && (0x1f < uVar11 - 0xd800)) &&
         (iVar4 = iVar9 + iVar7, uVar11 != 0xd87f)) break;
      iVar4 = iVar9 + iVar7;
      uVar1 = (undefined1)iVar7;
      iVar7 = iVar7 + 1;
      puVar13 = puVar13 + 1;
      *(undefined1 *)(iVar4 + 0x1410) = uVar1;
      if (iVar7 == 0x100) goto LAB_000ca7ec;
    }
    iVar7 = iVar7 + 1;
    puVar13 = puVar13 + 1;
    *(undefined1 *)(iVar4 + 0x1410) = 0xff;
  } while (iVar7 != 0x100);
LAB_000ca7ec:
  if (iStack_a4 == *piVar3) {
    return uStack_c0;
  }
  pcVar15 = *(code **)(puVar14 + 0x47d98);
  iVar7 = iStack_a4;
  (*pcVar15)();
  if (iVar7 == 0) {
    return *(int *)(pcVar15 + 0x469f0) - 0x5764;
  }
                    /* WARNING: Could not recover jumptable at 0x000ca924. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  uVar11 = (**(code **)(pcVar15 + 0x475a4))();
  return uVar11;
}

