
int conf_deserialise(Conf *conf,void *vdata,int maxsize)

{
  Conf *pCVar1;
  uint *ptr;
  int iVar2;
  char *pcVar3;
  int iVar4;
  int *piVar5;
  Conf *pCVar6;
  int in_a3;
  int iVar7;
  uint uVar8;
  byte *pbVar9;
  byte *pbVar10;
  Conf *pCVar11;
  byte *s;
  undefined *puVar12;
  code *pcVar13;
  int used;
  int iStack_2c;
  
  puVar12 = PTR_shapetypes_57__type_000bd268;
  iStack_2c = *(int *)PTR___stack_chk_guard_000be114;
  ptr = (uint *)vdata;
  pbVar10 = (byte *)vdata;
  if (3 < maxsize) {
                    /* WARNING: Load size is inaccurate */
    uVar8 = (uint)*vdata << 0x18 | (uint)*(byte *)((int)vdata + 1) << 0x10 |
            (uint)*(byte *)((int)vdata + 3) | (uint)*(byte *)((int)vdata + 2) << 8;
    s = (byte *)((int)vdata + 4);
    pbVar10 = s;
    if (uVar8 < 0xb8) {
      pcVar13 = (code *)(PTR_LAB_000bd204 + 0x218c);
      pCVar6 = (Conf *)maxsize;
      pbVar9 = (byte *)vdata;
      pCVar11 = (Conf *)maxsize;
      pCVar1 = (Conf *)(maxsize + -4);
      do {
        maxsize = (int)pCVar1;
        ptr = (uint *)safemalloc(1,0xc);
        *ptr = uVar8;
        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x5d4c);
        if (iVar2 == 1) {
          if (maxsize < 4) {
                    /* WARNING: Subroutine does not return */
            safefree(ptr);
          }
          uVar8 = toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |
                        (uint)pbVar9[6] << 8);
          ptr[1] = uVar8;
          s = pbVar9 + 8;
          maxsize = (int)pCVar6;
          pCVar11 = pCVar11 + -2;
        }
        else {
          pCVar11 = (Conf *)maxsize;
          if (iVar2 == 2) {
            pCVar6 = (Conf *)maxsize;
            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);
            if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
              safefree(ptr);
            }
            pcVar3 = dupstr((char *)s);
            ptr[1] = (uint)pcVar3;
            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));
            maxsize = (int)pCVar6;
            s = (byte *)(iVar2 + 1);
          }
        }
        uVar8 = *ptr;
        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x602c);
        if (iVar2 == 2) {
          maxsize = (int)pCVar11;
          iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);
          if (iVar2 == 0) {
            if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {
                    /* WARNING: Subroutine does not return */
              safefree(ptr);
            }
                    /* WARNING: Subroutine does not return */
            safefree((void *)ptr[1]);
          }
          pcVar3 = dupstr((char *)s);
          ptr[2] = (uint)pcVar3;
          pbVar9 = (byte *)(iVar2 + 1);
          pCVar11 = (Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s));
        }
        else {
          pbVar9 = s;
          if (iVar2 < 3) {
            if (iVar2 == 1) {
              if ((int)pCVar11 < 4) {
                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {
                    /* WARNING: Subroutine does not return */
                  safefree(ptr);
                }
                    /* WARNING: Subroutine does not return */
                safefree((void *)ptr[1]);
              }
              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);
              ptr[2] = uVar8;
              pbVar9 = s + 4;
              pCVar11 = pCVar11 + -1;
            }
          }
          else if (iVar2 == 3) {
            maxsize = (int)&used;
            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);
            ptr[2] = uVar8;
            if (uVar8 == 0) {
              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {
                    /* WARNING: Subroutine does not return */
                safefree(ptr);
              }
                    /* WARNING: Subroutine does not return */
              safefree((void *)ptr[1]);
            }
            pCVar11 = (Conf *)((int)pCVar11 - used);
            pbVar9 = s + used;
          }
          else {
            maxsize = (int)&used;
            if (iVar2 == 4) {
              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);
              ptr[2] = uVar8;
              if (uVar8 == 0) {
                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {
                    /* WARNING: Subroutine does not return */
                  safefree(ptr);
                }
                    /* WARNING: Subroutine does not return */
                safefree((void *)ptr[1]);
              }
              pCVar11 = (Conf *)((int)pCVar11 - used);
              pbVar9 = s + used;
            }
          }
        }
        (*pcVar13)(conf);
        s = pbVar9 + 4;
        pbVar10 = pbVar9;
        if ((int)pCVar11 < 4) break;
        uVar8 = (uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10 | (uint)pbVar9[3] |
                (uint)pbVar9[2] << 8;
        pCVar6 = (Conf *)maxsize;
        pbVar10 = s;
        pCVar1 = pCVar11 + -1;
      } while (uVar8 < 0xb8);
    }
  }
  if (iStack_2c == *(int *)PTR___stack_chk_guard_000be114) {
    return (int)pbVar10 - (int)vdata;
  }
  iVar2 = iStack_2c;
  puVar12 = PTR___stack_chk_fail_000bddb4;
  (*(code *)PTR___stack_chk_fail_000bddb4)();
  if (in_a3 == 0) {
    iVar4 = conf_get_int((Conf *)maxsize,*(int *)(iVar2 + 0x14));
    iVar7 = *(int *)(puVar12 + 0x99188);
    if (0 < *(int *)(iVar2 + 0x24)) {
      piVar5 = *(int **)(iVar2 + 0x30);
      iVar7 = 0;
      if (iVar4 != *piVar5) {
        iVar7 = 0;
        do {
          iVar7 = iVar7 + 1;
          piVar5 = piVar5 + 1;
          if (iVar7 == *(int *)(iVar2 + 0x24)) goto LAB_0002422c;
        } while (*piVar5 != iVar4);
      }
      iVar2 = (**(code **)(puVar12 + 0x99230))(iVar2,ptr,iVar7);
      return iVar2;
    }
  }
  else {
    if (in_a3 != 2) {
      return 2;
    }
    iVar4 = (**(code **)(puVar12 + 0x99234))();
    if ((-1 < iVar4) && (iVar4 < *(int *)(iVar2 + 0x24))) {
      piVar5 = (int *)(*(int *)(iVar2 + 0x30) + iVar4 * 4);
      conf_set_int((Conf *)maxsize,*(int *)(iVar2 + 0x14),*piVar5);
      return (int)piVar5;
    }
    (**(code **)(puVar12 + 0x9997c))
              (*(int *)(puVar12 + 0x99188) + -0x5a54,*(int *)(puVar12 + 0x99188) + -0x5a60,0x28,
               *(int *)(puVar12 + 0x99188) + -0x2fac);
LAB_0002422c:
    iVar7 = *(int *)(puVar12 + 0x99188);
  }
  iVar7 = iVar7 + -0x2fac;
  pCVar6 = (Conf *)0x24;
  iVar4 = *(int *)(puVar12 + 0x99188) + -0x5a60;
  iVar2 = *(int *)(puVar12 + 0x99188) + -0x5a24;
  pcVar13 = *(code **)(puVar12 + 0x9997c);
  (*pcVar13)(iVar2,iVar4);
  if (iVar7 == 0) {
    iVar7 = conf_get_int(pCVar6,0x4e);
    if (iVar7 == 0) {
      iVar7 = conf_get_int(pCVar6,0x4d);
      uVar8 = (uint)(iVar7 != 0);
    }
    else {
      uVar8 = 2;
    }
    if ((int)uVar8 < *(int *)(iVar2 + 0x24)) {
      iVar2 = (**(code **)(pcVar13 + 0x990bc))(iVar2,iVar4);
      return iVar2;
    }
    (**(code **)(pcVar13 + 0x99808))
              (*(int *)(pcVar13 + 0x99014) + -0x5a24,*(int *)(pcVar13 + 0x99014) + -0x5a60,0x151,
               *(int *)(pcVar13 + 0x99014) + -0x3008);
  }
  else if (iVar7 != 2) {
    return 2;
  }
  iVar4 = (**(code **)(pcVar13 + 0x990c0))();
  if ((iVar4 < 0) || (*(int *)(iVar2 + 0x24) <= iVar4)) {
    iVar4 = (**(code **)(pcVar13 + 0x99808))
                      (*(int *)(pcVar13 + 0x99014) + -0x5a54,*(int *)(pcVar13 + 0x99014) + -0x5a60,
                       0x155,*(int *)(pcVar13 + 0x99014) + -0x3008);
  }
  else if (iVar4 != 2) {
    conf_set_int(pCVar6,0x4d,(uint)(iVar4 != 0));
    conf_set_int(pCVar6,0x4e,0);
    return iVar4;
  }
  conf_set_int(pCVar6,0x4d,0);
  conf_set_int(pCVar6,0x4e,1);
  return iVar4;
}



int conf_deserialise(undefined4 param_1,uint *param_2,uint *param_3,int param_4)

{
  uint *puVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  uint *puVar5;
  uint *puVar6;
  int iVar7;
  uint uVar8;
  uint *puVar9;
  uint *puVar10;
  uint *puVar11;
  uint *puVar12;
  undefined *puVar13;
  code *pcVar14;
  uint local_30;
  int local_2c;
  
  puVar13 = PTR_shapetypes_456__000bd268;
  local_2c = *(int *)PTR___stack_chk_guard_000be114;
  puVar1 = param_2;
  puVar10 = param_2;
  if (3 < (int)param_3) {
    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |
            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;
    puVar9 = param_2 + 1;
    puVar10 = puVar9;
    if (uVar8 < 0xb8) {
      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);
      puVar6 = param_2;
      puVar11 = param_3;
      puVar12 = param_3 + -1;
      do {
        puVar5 = (uint *)0xc;
        puVar1 = (uint *)safemalloc(1,0xc);
        *puVar1 = uVar8;
        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);
        puVar10 = puVar9;
        if (iVar2 == 1) {
          if ((int)puVar12 < 4) {
            safefree(puVar1);
            puVar1 = puVar5;
            break;
          }
          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |
                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)
                        | (uint)*(byte *)((int)puVar6 + 6) << 8);
          puVar1[1] = uVar8;
          puVar9 = puVar6 + 2;
          puVar12 = puVar11 + -2;
        }
        else {
          param_3 = puVar12;
          if (iVar2 == 2) {
            puVar5 = (uint *)0x0;
            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);
            if (iVar2 == 0) {
              safefree(puVar1);
              puVar1 = puVar5;
              break;
            }
            uVar8 = dupstr(puVar9);
            puVar1[1] = uVar8;
            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));
            puVar9 = (uint *)(iVar2 + 1);
          }
        }
        uVar8 = *puVar1;
        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);
        puVar10 = puVar9;
        if (iVar2 == 2) {
          puVar6 = (uint *)0x0;
          param_3 = puVar12;
          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);
          if (iVar2 == 0) {
            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {
              safefree(puVar1[1]);
            }
            safefree(puVar1);
            puVar1 = puVar6;
            break;
          }
          uVar8 = dupstr(puVar9);
          puVar1[2] = uVar8;
          puVar6 = (uint *)(iVar2 + 1);
          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));
        }
        else {
          puVar6 = puVar9;
          if (iVar2 < 3) {
            if (iVar2 == 1) {
              if ((int)puVar12 < 4) {
                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {
                  safefree(puVar1[1]);
                }
                safefree(puVar1);
                puVar1 = puVar5;
                break;
              }
              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10
                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);
              puVar1[2] = uVar8;
              puVar6 = puVar9 + 1;
              puVar12 = puVar12 + -1;
            }
          }
          else if (iVar2 == 3) {
            param_3 = &local_30;
            puVar6 = puVar12;
            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);
            puVar1[2] = uVar8;
            if (uVar8 == 0) {
              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {
                safefree(puVar1[1]);
              }
              safefree(puVar1);
              puVar1 = puVar6;
              break;
            }
            puVar12 = (uint *)((int)puVar12 - local_30);
            puVar6 = (uint *)((int)puVar9 + local_30);
          }
          else {
            param_3 = &local_30;
            if (iVar2 == 4) {
              puVar6 = puVar12;
              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);
              puVar1[2] = uVar8;
              if (uVar8 == 0) {
                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {
                  safefree(puVar1[1]);
                }
                safefree(puVar1);
                puVar1 = puVar6;
                break;
              }
              puVar12 = (uint *)((int)puVar12 - local_30);
              puVar6 = (uint *)((int)puVar9 + local_30);
            }
          }
        }
        (*pcVar14)(param_1,puVar1);
        puVar9 = puVar6 + 1;
        puVar10 = puVar6;
        if ((int)puVar12 < 4) break;
        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |
                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;
        puVar10 = puVar9;
        puVar11 = puVar12;
        puVar12 = puVar12 + -1;
      } while (uVar8 < 0xb8);
    }
  }
  if (local_2c == *(int *)PTR___stack_chk_guard_000be114) {
    return (int)puVar10 - (int)param_2;
  }
  iVar2 = local_2c;
  puVar13 = PTR___stack_chk_fail_000bddb4;
  (*(code *)PTR___stack_chk_fail_000bddb4)();
  if (param_4 == 0) {
    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));
    iVar7 = *(int *)(puVar13 + 0x99188);
    if (*(int *)(iVar2 + 0x24) < 1) {
LAB_00024230:
      iVar2 = (**(code **)(puVar13 + 0x9997c))
                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60
                         ,0x24,iVar7 + -0x2fac);
      return iVar2;
    }
    piVar4 = *(int **)(iVar2 + 0x30);
    iVar7 = 0;
    if (iVar3 != *piVar4) {
      iVar7 = 0;
      do {
        iVar7 = iVar7 + 1;
        piVar4 = piVar4 + 1;
        if (iVar7 == *(int *)(iVar2 + 0x24)) {
          iVar7 = *(int *)(puVar13 + 0x99188);
          goto LAB_00024230;
        }
      } while (*piVar4 != iVar3);
    }
    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);
  }
  else {
    iVar3 = 2;
    if (param_4 == 2) {
      iVar3 = (**(code **)(puVar13 + 0x99234))();
      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {
        iVar2 = (**(code **)(puVar13 + 0x9997c))
                          (*(int *)(puVar13 + 0x99188) + -0x5a54,
                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,
                           *(int *)(puVar13 + 0x99188) + -0x2fac);
        return iVar2;
      }
      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),
                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));
    }
  }
  return iVar3;
}


lui gp,0xa
addiu gp,gp,0x1614
addu gp,gp,t9
addiu sp,sp,-0x50
sw ra,0x4c(sp)
sw s8,0x48(sp)
sw s7,0x44(sp)
sw s6,0x40(sp)
sw s5,0x3c(sp)
sw s4,0x38(sp)
sw s3,0x34(sp)
sw s2,0x30(sp)
sw s1,0x2c(sp)
sw s0,0x28(sp)
sw gp,0x10(sp)
sw a0,0x18(sp)
sw a1,0x1c(sp)
lw v0,-0x70bc(gp)
lw v0,0x0(v0)
sw v0,0x24(sp)
slti v0,a2,0x4
bne v0,zero,0x00024074
_or s2,a2,zero
lbu s0,0x0(a1)
sll s0,s0,0x18
lbu v0,0x1(a1)
sll v0,v0,0x10
or s0,s0,v0
lbu v0,0x3(a1)
or s0,s0,v0
lbu v0,0x2(a1)
sll v0,v0,0x8
or s0,s0,v0
addiu s4,a1,0x4
sltiu v0,s0,0xb8
beq v0,zero,0x0002407c
_addiu s5,a2,-0x4
or s1,a1,zero
lw s6,-0x7f68(gp)
addiu s6,s6,-0x5d4c
lw s7,-0x7f68(gp)
addiu s7,s7,-0x602c
lw v0,-0x7fcc(gp)
b 0x00023dec
_addiu s8,v0,0x218c
slti s5,s5,0x4
bne s5,zero,0x00023cc0
_lw t9,-0x7ecc(gp)
lbu v0,0x4(s1)
sll v0,v0,0x18
lbu a0,0x5(s1)
sll a0,a0,0x10
or v0,v0,a0
lbu a0,0x7(s1)
or v0,v0,a0
lbu a0,0x6(s1)
sll a0,a0,0x8
or a0,v0,a0
bal 0x00036de4
_nop
lw gp,0x10(sp)
sw v0,0x4(s3)
addiu s1,s1,0x8
b 0x00023e34
_addiu s2,s2,-0x8
or a0,s3,zero
lw t9,-0x7fac(gp)
bal 0x00037d68
_nop
lw gp,0x10(sp)
b 0x00024088
_or s1,s4,zero
or a1,zero,zero
or a0,s4,zero
lw t9,-0x726c(gp)
jalr t9
_nop
lw gp,0x10(sp)
beq v0,zero,0x00023d24
_or s1,v0,zero
or a0,s4,zero
lw t9,-0x7f60(gp)
bal 0x000373a4
_nop
lw gp,0x10(sp)
sw v0,0x4(s3)
addiu s1,s1,0x1
subu s2,s1,s4
b 0x00023e34
_subu s2,s5,s2
or a0,s3,zero
lw t9,-0x7fac(gp)
bal 0x00037d68
_nop
lw gp,0x10(sp)
b 0x00024088
_or s1,s4,zero
li v1,0x1
bne v0,v1,0x00023d94
_slti v0,s2,0x4
bne v0,zero,0x00023e98
_lw t9,-0x7ecc(gp)
lbu v0,0x0(s1)
sll v0,v0,0x18
lbu a0,0x1(s1)
sll a0,a0,0x10
or v0,v0,a0
lbu a0,0x3(s1)
or v0,v0,a0
lbu a0,0x2(s1)
sll a0,a0,0x8
or a0,v0,a0
bal 0x00036de4
_nop
lw gp,0x10(sp)
sw v0,0x8(s3)
addiu s1,s1,0x4
addiu s2,s2,-0x4
or a1,s3,zero
lw a0,0x18(sp)
or t9,s8,zero
jalr t9
_nop
lw gp,0x10(sp)
slti v0,s2,0x4
bne v0,zero,0x00024088
_addiu s4,s1,0x4
lbu s0,0x0(s1)
sll s0,s0,0x18
lbu v0,0x1(s1)
sll v0,v0,0x10
or s0,s0,v0
lbu v0,0x3(s1)
or s0,s0,v0
lbu v0,0x2(s1)
sll v0,v0,0x8
or s0,s0,v0
sltiu v0,s0,0xb8
beq v0,zero,0x00024084
_addiu s5,s2,-0x4
li a1,0xc
li a0,0x1
lw t9,-0x7f9c(gp)
bal 0x00037258
_nop
lw gp,0x10(sp)
or s3,v0,zero
sw s0,0x0(v0)
sll s0,s0,0x2
addu s0,s0,s6
lw v0,0x0(s0)
li v1,0x1
beq v0,v1,0x00023c70
_li v1,0x2
beq v0,v1,0x00023cdc
_or a2,s5,zero
or s1,s4,zero
or s2,s5,zero
lw s0,0x0(s3)
sll v0,s0,0x2
addu v0,v0,s7
lw v0,0x0(v0)
li v1,0x2
beq v0,v1,0x00023eec
_slti v1,v0,0x3
bne v1,zero,0x00023d40
_li v1,0x3
beq v0,v1,0x00023f90
_li v1,0x4
bne v0,v1,0x00023d94
_addiu a2,sp,0x20
or a1,s2,zero
or a0,s1,zero
lw t9,-0x7ec8(gp)
jalr t9
_nop
lw gp,0x10(sp)
beq v0,zero,0x0002401c
_sw v0,0x8(s3)
lw v0,0x20(sp)
addu s1,s1,v0
b 0x00023d94
_subu s2,s2,v0
sll v0,s0,0x2
lw v1,-0x7f68(gp)
addiu v1,v1,-0x5d4c
addu v0,v0,v1
lw v1,0x0(v0)
li v0,0x2
beq v1,v0,0x00023ed4
_lw t9,-0x7fac(gp)
or a0,s3,zero
lw t9,-0x7fac(gp)
bal 0x00037d68
_nop
lw gp,0x10(sp)
b 0x0002408c
_lw v0,0x1c(sp)
lw a0,0x4(s3)
bal 0x00037d68
_nop
lw gp,0x10(sp)
b 0x00023ebc
_or a0,s3,zero
or a2,s2,zero
or a1,zero,zero
or a0,s1,zero
lw t9,-0x726c(gp)
jalr t9
_nop
lw gp,0x10(sp)
beq v0,zero,0x00023f3c
_or s4,v0,zero
or a0,s1,zero
lw t9,-0x7f60(gp)
bal 0x000373a4
_nop
lw gp,0x10(sp)
sw v0,0x8(s3)
addiu s4,s4,0x1
subu s1,s4,s1
subu s2,s2,s1
b 0x00023d94
_or s1,s4,zero
sll v0,s0,0x2
lw v1,-0x7f68(gp)
addiu v1,v1,-0x5d4c
addu v0,v0,v1
lw v1,0x0(v0)
li v0,0x2
beq v1,v0,0x00023f78
_lw t9,-0x7fac(gp)
or a0,s3,zero
lw t9,-0x7fac(gp)
bal 0x00037d68
_nop
lw gp,0x10(sp)
b 0x0002408c
_lw v0,0x1c(sp)
lw a0,0x4(s3)
bal 0x00037d68
_nop
lw gp,0x10(sp)
b 0x00023f60
_or a0,s3,zero
addiu a2,sp,0x20
or a1,s2,zero
or a0,s1,zero
lw t9,-0x7ec4(gp)
jalr t9
_nop
lw gp,0x10(sp)
beq v0,zero,0x00023fc4
_sw v0,0x8(s3)
lw v0,0x20(sp)
addu s1,s1,v0
b 0x00023d94
_subu s2,s2,v0
lw v0,0x0(s3)
sll v0,v0,0x2
lw v1,-0x7f68(gp)
addiu v1,v1,-0x5d4c
addu v0,v0,v1
lw v1,0x0(v0)
li v0,0x2
beq v1,v0,0x00024004
_lw t9,-0x7fac(gp)
or a0,s3,zero
lw t9,-0x7fac(gp)
bal 0x00037d68
_nop
lw gp,0x10(sp)
b 0x0002408c
_lw v0,0x1c(sp)
lw a0,0x4(s3)
bal 0x00037d68
_nop
lw gp,0x10(sp)
b 0x00023fec
_or a0,s3,zero
lw v0,0x0(s3)
sll v0,v0,0x2
lw v1,-0x7f68(gp)
addiu v1,v1,-0x5d4c
addu v0,v0,v1
lw v1,0x0(v0)
li v0,0x2
beq v1,v0,0x0002405c
_lw t9,-0x7fac(gp)
or a0,s3,zero
lw t9,-0x7fac(gp)
bal 0x00037d68
_nop
lw gp,0x10(sp)
b 0x0002408c
_lw v0,0x1c(sp)
lw a0,0x4(s3)
bal 0x00037d68
_nop
lw gp,0x10(sp)
b 0x00024044
_or a0,s3,zero
b 0x00024088
_lw s1,0x1c(sp)
b 0x00024088
_or s1,s4,zero
or s1,s4,zero
lw v0,0x1c(sp)
subu v0,s1,v0
lw a0,0x24(sp)
lw v1,-0x70bc(gp)
lw v1,0x0(v1)
bne a0,v1,0x000240d0
_lw ra,0x4c(sp)
lw s8,0x48(sp)
lw s7,0x44(sp)
lw s6,0x40(sp)
lw s5,0x3c(sp)
lw s4,0x38(sp)
lw s3,0x34(sp)
lw s2,0x30(sp)
lw s1,0x2c(sp)
lw s0,0x28(sp)
jr ra
_addiu sp,sp,0x50
lw t9,-0x741c(gp)
jalr t9
_nop
nop
(translation_unit "int conf_deserialise(undefined4 param_1,uint *param_2,uint *param_3,int param_4)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  uint *puVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  uint local_30;\n  int local_2c;\n  \n  puVar13 = PTR_shapetypes_456__000bd268;\n  local_2c = *(int *)PTR___stack_chk_guard_000be114;\n  puVar1 = param_2;\n  puVar10 = param_2;\n  if (3 < (int)param_3) {\n    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;\n    puVar9 = param_2 + 1;\n    puVar10 = puVar9;\n    if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)puVar10 - (int)param_2;\n  }\n  iVar2 = local_2c;\n  puVar13 = PTR___stack_chk_fail_000bddb4;\n  (*(code *)PTR___stack_chk_fail_000bddb4)();\n  if (param_4 == 0) {\n    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar13 + 0x99188);\n    if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }\n    piVar4 = *(int **)(iVar2 + 0x30);\n    iVar7 = 0;\n    if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }\n    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);\n  }\n  else {\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }\n  return iVar3;\n}\n\n" (function_definition "int conf_deserialise(undefined4 param_1,uint *param_2,uint *param_3,int param_4)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  uint *puVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  uint local_30;\n  int local_2c;\n  \n  puVar13 = PTR_shapetypes_456__000bd268;\n  local_2c = *(int *)PTR___stack_chk_guard_000be114;\n  puVar1 = param_2;\n  puVar10 = param_2;\n  if (3 < (int)param_3) {\n    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;\n    puVar9 = param_2 + 1;\n    puVar10 = puVar9;\n    if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)puVar10 - (int)param_2;\n  }\n  iVar2 = local_2c;\n  puVar13 = PTR___stack_chk_fail_000bddb4;\n  (*(code *)PTR___stack_chk_fail_000bddb4)();\n  if (param_4 == 0) {\n    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar13 + 0x99188);\n    if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }\n    piVar4 = *(int **)(iVar2 + 0x30);\n    iVar7 = 0;\n    if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }\n    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);\n  }\n  else {\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }\n  return iVar3;\n}" primitive_type (function_declarator "conf_deserialise(undefined4 param_1,uint *param_2,uint *param_3,int param_4)" identifier (parameter_list "(undefined4 param_1,uint *param_2,uint *param_3,int param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  uint *puVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  uint local_30;\n  int local_2c;\n  \n  puVar13 = PTR_shapetypes_456__000bd268;\n  local_2c = *(int *)PTR___stack_chk_guard_000be114;\n  puVar1 = param_2;\n  puVar10 = param_2;\n  if (3 < (int)param_3) {\n    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;\n    puVar9 = param_2 + 1;\n    puVar10 = puVar9;\n    if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)puVar10 - (int)param_2;\n  }\n  iVar2 = local_2c;\n  puVar13 = PTR___stack_chk_fail_000bddb4;\n  (*(code *)PTR___stack_chk_fail_000bddb4)();\n  if (param_4 == 0) {\n    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar13 + 0x99188);\n    if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }\n    piVar4 = *(int **)(iVar2 + 0x30);\n    iVar7 = 0;\n    if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }\n    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);\n  }\n  else {\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }\n  return iVar3;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar13 = PTR_shapetypes_456__000bd268;" (assignment_expression "puVar13 = PTR_shapetypes_456__000bd268" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000be114;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000be114" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000be114" * (cast_expression "(int *)PTR___stack_chk_guard_000be114" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar1 = param_2;" (assignment_expression "puVar1 = param_2" identifier = identifier) ;) (expression_statement "puVar10 = param_2;" (assignment_expression "puVar10 = param_2" identifier = identifier) ;) (if_statement "if (3 < (int)param_3) {\n    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;\n    puVar9 = param_2 + 1;\n    puVar10 = puVar9;\n    if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }" if (parenthesized_expression "(3 < (int)param_3)" ( (binary_expression "3 < (int)param_3" number_literal < (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;\n    puVar9 = param_2 + 1;\n    puVar10 = puVar9;\n    if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }" { (expression_statement "uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;" (assignment_expression "uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8" identifier = (binary_expression "(uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8" (binary_expression "(uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2" (binary_expression "(uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10" (binary_expression "(uint)*(byte *)param_2 << 0x18" (binary_expression "(uint)*(byte *)param_2" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) << number_literal) | (binary_expression "(uint)*(byte *)((int)param_2 + 1) << 0x10" (binary_expression "(uint)*(byte *)((int)param_2 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 1)" ( (binary_expression "(int)param_2 + 1" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)(byte)*param_2" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) | (binary_expression "(uint)*(byte *)((int)param_2 + 2) << 8" (binary_expression "(uint)*(byte *)((int)param_2 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 2)" ( (binary_expression "(int)param_2 + 2" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal))) ;) (expression_statement "puVar9 = param_2 + 1;" (assignment_expression "puVar9 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (if_statement "if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }" if (parenthesized_expression "(uVar8 < 0xb8)" ( (binary_expression "uVar8 < 0xb8" identifier < number_literal) )) (compound_statement "{\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }" { (expression_statement "pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c)" identifier = (cast_expression "(code *)(PTR_LAB_000bd204 + 0x218c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000bd204 + 0x218c)" ( (binary_expression "PTR_LAB_000bd204 + 0x218c" identifier + number_literal) )))) ;) (expression_statement "puVar6 = param_2;" (assignment_expression "puVar6 = param_2" identifier = identifier) ;) (expression_statement "puVar11 = param_3;" (assignment_expression "puVar11 = param_3" identifier = identifier) ;) (expression_statement "puVar12 = param_3 + -1;" (assignment_expression "puVar12 = param_3 + -1" identifier = (binary_expression "param_3 + -1" identifier + number_literal)) ;) (do_statement "do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);" do (compound_statement "{\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      }" { (expression_statement "puVar5 = (uint *)0xc;" (assignment_expression "puVar5 = (uint *)0xc" identifier = (cast_expression "(uint *)0xc" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar1 = (uint *)safemalloc(1,0xc);" (assignment_expression "puVar1 = (uint *)safemalloc(1,0xc)" identifier = (cast_expression "(uint *)safemalloc(1,0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(1,0xc)" identifier (argument_list "(1,0xc)" ( number_literal , number_literal ))))) ;) (expression_statement "*puVar1 = uVar8;" (assignment_expression "*puVar1 = uVar8" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);" (assignment_expression "iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c)" identifier = (pointer_expression "*(int *)(puVar13 + uVar8 * 4 + -0x5d4c)" * (cast_expression "(int *)(puVar13 + uVar8 * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + uVar8 * 4 + -0x5d4c)" ( (binary_expression "puVar13 + uVar8 * 4 + -0x5d4c" (binary_expression "puVar13 + uVar8 * 4" identifier + (binary_expression "uVar8 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (if_statement "if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }" { (if_statement "if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }" if (parenthesized_expression "((int)puVar12 < 4)" ( (binary_expression "(int)puVar12 < 4" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }" { (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "puVar1 = puVar5;" (assignment_expression "puVar1 = puVar5" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);" (assignment_expression "uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8)" identifier = (call_expression "toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8)" identifier (argument_list "((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8)" ( (binary_expression "(uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8" (binary_expression "(uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)" (binary_expression "(uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10" (binary_expression "(uint)*(byte *)(puVar6 + 1) << 0x18" (binary_expression "(uint)*(byte *)(puVar6 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(puVar6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 1)" ( (binary_expression "puVar6 + 1" identifier + number_literal) )))) << number_literal) | (binary_expression "(uint)*(byte *)((int)puVar6 + 5) << 0x10" (binary_expression "(uint)*(byte *)((int)puVar6 + 5)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar6 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 5)" ( (binary_expression "(int)puVar6 + 5" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)*(byte *)((int)puVar6 + 7)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar6 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 7)" ( (binary_expression "(int)puVar6 + 7" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) | (binary_expression "(uint)*(byte *)((int)puVar6 + 6) << 8" (binary_expression "(uint)*(byte *)((int)puVar6 + 6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar6 + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 6)" ( (binary_expression "(int)puVar6 + 6" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) )))) ;) (expression_statement "puVar1[1] = uVar8;" (assignment_expression "puVar1[1] = uVar8" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9 = puVar6 + 2;" (assignment_expression "puVar9 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar11 + -2;" (assignment_expression "puVar12 = puVar11 + -2" identifier = (binary_expression "puVar11 + -2" identifier + number_literal)) ;) }) (else_clause "else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }" else (compound_statement "{\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }" { (expression_statement "param_3 = puVar12;" (assignment_expression "param_3 = puVar12" identifier = identifier) ;) (if_statement "if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }" if (parenthesized_expression "(iVar2 == 2)" ( (binary_expression "iVar2 == 2" identifier == number_literal) )) (compound_statement "{\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }" { (expression_statement "puVar5 = (uint *)0x0;" (assignment_expression "puVar5 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);" (assignment_expression "iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12)" identifier = (call_expression "(*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12)" (parenthesized_expression "(*(code *)PTR_memchr_000bdf64)" ( (pointer_expression "*(code *)PTR_memchr_000bdf64" * (cast_expression "(code *)PTR_memchr_000bdf64" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9,0,puVar12)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }" { (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "puVar1 = puVar5;" (assignment_expression "puVar1 = puVar5" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "uVar8 = dupstr(puVar9);" (assignment_expression "uVar8 = dupstr(puVar9)" identifier = (call_expression "dupstr(puVar9)" identifier (argument_list "(puVar9)" ( identifier )))) ;) (expression_statement "puVar1[1] = uVar8;" (assignment_expression "puVar1[1] = uVar8" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));" (assignment_expression "puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9))" identifier = (cast_expression "(uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 - ((iVar2 + 1) - (int)puVar9))" ( (binary_expression "(int)puVar12 - ((iVar2 + 1) - (int)puVar9)" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "((iVar2 + 1) - (int)puVar9)" ( (binary_expression "(iVar2 + 1) - (int)puVar9" (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )) - (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "puVar9 = (uint *)(iVar2 + 1);" (assignment_expression "puVar9 = (uint *)(iVar2 + 1)" identifier = (cast_expression "(uint *)(iVar2 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) ;) })) }))) (expression_statement "uVar8 = *puVar1;" (assignment_expression "uVar8 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);" (assignment_expression "iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c)" identifier = (pointer_expression "*(int *)(puVar13 + uVar8 * 4 + -0x602c)" * (cast_expression "(int *)(puVar13 + uVar8 * 4 + -0x602c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + uVar8 * 4 + -0x602c)" ( (binary_expression "puVar13 + uVar8 * 4 + -0x602c" (binary_expression "puVar13 + uVar8 * 4" identifier + (binary_expression "uVar8 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (if_statement "if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }" if (parenthesized_expression "(iVar2 == 2)" ( (binary_expression "iVar2 == 2" identifier == number_literal) )) (compound_statement "{\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }" { (expression_statement "puVar6 = (uint *)0x0;" (assignment_expression "puVar6 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_3 = puVar12;" (assignment_expression "param_3 = puVar12" identifier = identifier) ;) (expression_statement "iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);" (assignment_expression "iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12)" identifier = (call_expression "(*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12)" (parenthesized_expression "(*(code *)PTR_memchr_000bdf64)" ( (pointer_expression "*(code *)PTR_memchr_000bdf64" * (cast_expression "(code *)PTR_memchr_000bdf64" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9,0,puVar12)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }" { (if_statement "if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }" if (parenthesized_expression "(*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2)" ( (binary_expression "*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2" (pointer_expression "*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" * (cast_expression "(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" ( (binary_expression "PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_456__000bd268 + uVar8 * 4" identifier + (binary_expression "uVar8 * 4" identifier * number_literal)) + number_literal) )))) == number_literal) )) (compound_statement "{\n              safefree(puVar1[1]);\n            }" { (expression_statement "safefree(puVar1[1]);" (call_expression "safefree(puVar1[1])" identifier (argument_list "(puVar1[1])" ( (subscript_expression "puVar1[1]" identifier [ number_literal ]) ))) ;) })) (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "uVar8 = dupstr(puVar9);" (assignment_expression "uVar8 = dupstr(puVar9)" identifier = (call_expression "dupstr(puVar9)" identifier (argument_list "(puVar9)" ( identifier )))) ;) (expression_statement "puVar1[2] = uVar8;" (assignment_expression "puVar1[2] = uVar8" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6 = (uint *)(iVar2 + 1);" (assignment_expression "puVar6 = (uint *)(iVar2 + 1)" identifier = (cast_expression "(uint *)(iVar2 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));" (assignment_expression "puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9))" identifier = (cast_expression "(uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 - ((int)puVar6 - (int)puVar9))" ( (binary_expression "(int)puVar12 - ((int)puVar6 - (int)puVar9)" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "((int)puVar6 - (int)puVar9)" ( (binary_expression "(int)puVar6 - (int)puVar9" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) }) (else_clause "else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }" else (compound_statement "{\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }" { (expression_statement "puVar6 = puVar9;" (assignment_expression "puVar6 = puVar9" identifier = identifier) ;) (if_statement "if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" if (parenthesized_expression "(iVar2 < 3)" ( (binary_expression "iVar2 < 3" identifier < number_literal) )) (compound_statement "{\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }" { (if_statement "if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }" { (if_statement "if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }" if (parenthesized_expression "((int)puVar12 < 4)" ( (binary_expression "(int)puVar12 < 4" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }" { (if_statement "if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }" if (parenthesized_expression "(*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2)" ( (binary_expression "*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2" (pointer_expression "*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" * (cast_expression "(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" ( (binary_expression "PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_456__000bd268 + uVar8 * 4" identifier + (binary_expression "uVar8 * 4" identifier * number_literal)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                  safefree(puVar1[1]);\n                }" { (expression_statement "safefree(puVar1[1]);" (call_expression "safefree(puVar1[1])" identifier (argument_list "(puVar1[1])" ( (subscript_expression "puVar1[1]" identifier [ number_literal ]) ))) ;) })) (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "puVar1 = puVar5;" (assignment_expression "puVar1 = puVar5" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);" (assignment_expression "uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8)" identifier = (call_expression "toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8)" identifier (argument_list "((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8)" ( (binary_expression "(uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8" (binary_expression "(uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9" (binary_expression "(uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10" (binary_expression "(uint)*(byte *)puVar9 << 0x18" (binary_expression "(uint)*(byte *)puVar9" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)puVar9" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) << number_literal) | (binary_expression "(uint)*(byte *)((int)puVar9 + 1) << 0x10" (binary_expression "(uint)*(byte *)((int)puVar9 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar9 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 1)" ( (binary_expression "(int)puVar9 + 1" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)(byte)*puVar9" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) | (binary_expression "(uint)*(byte *)((int)puVar9 + 2) << 8" (binary_expression "(uint)*(byte *)((int)puVar9 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar9 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 2)" ( (binary_expression "(int)puVar9 + 2" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) )))) ;) (expression_statement "puVar1[2] = uVar8;" (assignment_expression "puVar1[2] = uVar8" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6 = puVar9 + 1;" (assignment_expression "puVar6 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + -1;" (assignment_expression "puVar12 = puVar12 + -1" identifier = (binary_expression "puVar12 + -1" identifier + number_literal)) ;) })) }) (else_clause "else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" else (if_statement "if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" if (parenthesized_expression "(iVar2 == 3)" ( (binary_expression "iVar2 == 3" identifier == number_literal) )) (compound_statement "{\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }" { (expression_statement "param_3 = &local_30;" (assignment_expression "param_3 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" identifier = identifier) ;) (expression_statement "uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);" (assignment_expression "uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3)" identifier = (call_expression "(*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3)" (parenthesized_expression "(*(code *)PTR_filename_deserialise_000bd30c)" ( (pointer_expression "*(code *)PTR_filename_deserialise_000bd30c" * (cast_expression "(code *)PTR_filename_deserialise_000bd30c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9,puVar12,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "puVar1[2] = uVar8;" (assignment_expression "puVar1[2] = uVar8" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }" { (if_statement "if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }" if (parenthesized_expression "(*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2)" ( (binary_expression "*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2" (pointer_expression "*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" * (cast_expression "(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" ( (binary_expression "PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_456__000bd268 + *puVar1 * 4" identifier + (binary_expression "*puVar1 * 4" (pointer_expression "*puVar1" * identifier) * number_literal)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                safefree(puVar1[1]);\n              }" { (expression_statement "safefree(puVar1[1]);" (call_expression "safefree(puVar1[1])" identifier (argument_list "(puVar1[1])" ( (subscript_expression "puVar1[1]" identifier [ number_literal ]) ))) ;) })) (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "puVar12 = (uint *)((int)puVar12 - local_30);" (assignment_expression "puVar12 = (uint *)((int)puVar12 - local_30)" identifier = (cast_expression "(uint *)((int)puVar12 - local_30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 - local_30)" ( (binary_expression "(int)puVar12 - local_30" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "puVar6 = (uint *)((int)puVar9 + local_30);" (assignment_expression "puVar6 = (uint *)((int)puVar9 + local_30)" identifier = (cast_expression "(uint *)((int)puVar9 + local_30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + local_30)" ( (binary_expression "(int)puVar9 + local_30" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) (else_clause "else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" else (compound_statement "{\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" { (expression_statement "param_3 = &local_30;" (assignment_expression "param_3 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (if_statement "if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }" if (parenthesized_expression "(iVar2 == 4)" ( (binary_expression "iVar2 == 4" identifier == number_literal) )) (compound_statement "{\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }" { (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" identifier = identifier) ;) (expression_statement "uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);" (assignment_expression "uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3)" identifier = (call_expression "(*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3)" (parenthesized_expression "(*(code *)PTR_fontspec_deserialise_000bd308)" ( (pointer_expression "*(code *)PTR_fontspec_deserialise_000bd308" * (cast_expression "(code *)PTR_fontspec_deserialise_000bd308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9,puVar12,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "puVar1[2] = uVar8;" (assignment_expression "puVar1[2] = uVar8" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }" { (if_statement "if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }" if (parenthesized_expression "(*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2)" ( (binary_expression "*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2" (pointer_expression "*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" * (cast_expression "(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" ( (binary_expression "PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_456__000bd268 + *puVar1 * 4" identifier + (binary_expression "*puVar1 * 4" (pointer_expression "*puVar1" * identifier) * number_literal)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                  safefree(puVar1[1]);\n                }" { (expression_statement "safefree(puVar1[1]);" (call_expression "safefree(puVar1[1])" identifier (argument_list "(puVar1[1])" ( (subscript_expression "puVar1[1]" identifier [ number_literal ]) ))) ;) })) (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "puVar12 = (uint *)((int)puVar12 - local_30);" (assignment_expression "puVar12 = (uint *)((int)puVar12 - local_30)" identifier = (cast_expression "(uint *)((int)puVar12 - local_30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 - local_30)" ( (binary_expression "(int)puVar12 - local_30" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "puVar6 = (uint *)((int)puVar9 + local_30);" (assignment_expression "puVar6 = (uint *)((int)puVar9 + local_30)" identifier = (cast_expression "(uint *)((int)puVar9 + local_30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + local_30)" ( (binary_expression "(int)puVar9 + local_30" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) }))))) }))) (expression_statement "(*pcVar14)(param_1,puVar1);" (call_expression "(*pcVar14)(param_1,puVar1)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_1,puVar1)" ( identifier , identifier ))) ;) (expression_statement "puVar9 = puVar6 + 1;" (assignment_expression "puVar9 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar6;" (assignment_expression "puVar10 = puVar6" identifier = identifier) ;) (if_statement "if ((int)puVar12 < 4) break;" if (parenthesized_expression "((int)puVar12 < 4)" ( (binary_expression "(int)puVar12 < 4" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;" (assignment_expression "uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8" identifier = (binary_expression "(uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8" (binary_expression "(uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6" (binary_expression "(uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10" (binary_expression "(uint)*(byte *)puVar6 << 0x18" (binary_expression "(uint)*(byte *)puVar6" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)puVar6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) << number_literal) | (binary_expression "(uint)*(byte *)((int)puVar6 + 1) << 0x10" (binary_expression "(uint)*(byte *)((int)puVar6 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 1)" ( (binary_expression "(int)puVar6 + 1" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)(byte)*puVar6" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) | (binary_expression "(uint)*(byte *)((int)puVar6 + 2) << 8" (binary_expression "(uint)*(byte *)((int)puVar6 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar6 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 2)" ( (binary_expression "(int)puVar6 + 2" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal))) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (expression_statement "puVar11 = puVar12;" (assignment_expression "puVar11 = puVar12" identifier = identifier) ;) (expression_statement "puVar12 = puVar12 + -1;" (assignment_expression "puVar12 = puVar12 + -1" identifier = (binary_expression "puVar12 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar8 < 0xb8)" ( (binary_expression "uVar8 < 0xb8" identifier < number_literal) )) ;) })) })) (if_statement "if (local_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)puVar10 - (int)param_2;\n  }" if (parenthesized_expression "(local_2c == *(int *)PTR___stack_chk_guard_000be114)" ( (binary_expression "local_2c == *(int *)PTR___stack_chk_guard_000be114" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_000be114" * (cast_expression "(int *)PTR___stack_chk_guard_000be114" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return (int)puVar10 - (int)param_2;\n  }" { (return_statement "return (int)puVar10 - (int)param_2;" return (binary_expression "(int)puVar10 - (int)param_2" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "iVar2 = local_2c;" (assignment_expression "iVar2 = local_2c" identifier = identifier) ;) (expression_statement "puVar13 = PTR___stack_chk_fail_000bddb4;" (assignment_expression "puVar13 = PTR___stack_chk_fail_000bddb4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000bddb4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bddb4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bddb4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000bddb4" * (cast_expression "(code *)PTR___stack_chk_fail_000bddb4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (param_4 == 0) {\n    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar13 + 0x99188);\n    if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }\n    piVar4 = *(int **)(iVar2 + 0x30);\n    iVar7 = 0;\n    if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }\n    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);\n  }\n  else {\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar13 + 0x99188);\n    if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }\n    piVar4 = *(int **)(iVar2 + 0x30);\n    iVar7 = 0;\n    if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }\n    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);\n  }" { (expression_statement "iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));" (assignment_expression "iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14))" identifier = (call_expression "conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14))" identifier (argument_list "(param_3,*(undefined4 *)(iVar2 + 0x14))" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "iVar7 = *(int *)(puVar13 + 0x99188);" (assignment_expression "iVar7 = *(int *)(puVar13 + 0x99188)" identifier = (pointer_expression "*(int *)(puVar13 + 0x99188)" * (cast_expression "(int *)(puVar13 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x99188)" ( (binary_expression "puVar13 + 0x99188" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }" if (parenthesized_expression "(*(int *)(iVar2 + 0x24) < 1)" ( (binary_expression "*(int *)(iVar2 + 0x24) < 1" (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }" { (labeled_statement "LAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);" statement_identifier : (expression_statement "iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);" (assignment_expression "iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac)" identifier = (call_expression "(**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac)" (parenthesized_expression "(**(code **)(puVar13 + 0x9997c))" ( (pointer_expression "**(code **)(puVar13 + 0x9997c)" * (pointer_expression "*(code **)(puVar13 + 0x9997c)" * (cast_expression "(code **)(puVar13 + 0x9997c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x9997c)" ( (binary_expression "puVar13 + 0x9997c" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac)" ( (binary_expression "*(int *)(puVar13 + 0x99188) + -0x5a24" (pointer_expression "*(int *)(puVar13 + 0x99188)" * (cast_expression "(int *)(puVar13 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x99188)" ( (binary_expression "puVar13 + 0x99188" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar13 + 0x99188) + -0x5a60" (pointer_expression "*(int *)(puVar13 + 0x99188)" * (cast_expression "(int *)(puVar13 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x99188)" ( (binary_expression "puVar13 + 0x99188" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "iVar7 + -0x2fac" identifier + number_literal) )))) ;)) (return_statement "return iVar2;" return identifier ;) })) (expression_statement "piVar4 = *(int **)(iVar2 + 0x30);" (assignment_expression "piVar4 = *(int **)(iVar2 + 0x30)" identifier = (pointer_expression "*(int **)(iVar2 + 0x30)" * (cast_expression "(int **)(iVar2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (if_statement "if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }" if (parenthesized_expression "(iVar3 != *piVar4)" ( (binary_expression "iVar3 != *piVar4" identifier != (pointer_expression "*piVar4" * identifier)) )) (compound_statement "{\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);" do (compound_statement "{\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      }" { (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "piVar4 = piVar4 + 1;" (assignment_expression "piVar4 = piVar4 + 1" identifier = (binary_expression "piVar4 + 1" identifier + number_literal)) ;) (if_statement "if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }" if (parenthesized_expression "(iVar7 == *(int *)(iVar2 + 0x24))" ( (binary_expression "iVar7 == *(int *)(iVar2 + 0x24)" identifier == (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) ))))) )) (compound_statement "{\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }" { (expression_statement "iVar7 = *(int *)(puVar13 + 0x99188);" (assignment_expression "iVar7 = *(int *)(puVar13 + 0x99188)" identifier = (pointer_expression "*(int *)(puVar13 + 0x99188)" * (cast_expression "(int *)(puVar13 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x99188)" ( (binary_expression "puVar13 + 0x99188" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00024230;" goto statement_identifier ;) })) }) while (parenthesized_expression "(*piVar4 != iVar3)" ( (binary_expression "*piVar4 != iVar3" (pointer_expression "*piVar4" * identifier) != identifier) )) ;) })) (expression_statement "iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);" (assignment_expression "iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7)" identifier = (call_expression "(**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7)" (parenthesized_expression "(**(code **)(puVar13 + 0x99230))" ( (pointer_expression "**(code **)(puVar13 + 0x99230)" * (pointer_expression "*(code **)(puVar13 + 0x99230)" * (cast_expression "(code **)(puVar13 + 0x99230)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x99230)" ( (binary_expression "puVar13 + 0x99230" identifier + number_literal) ))))) )) (argument_list "(iVar2,puVar1,iVar7)" ( identifier , identifier , identifier )))) ;) }) (else_clause "else {\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }" else (compound_statement "{\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }" { (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (if_statement "if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }" if (parenthesized_expression "(param_4 == 2)" ( (binary_expression "param_4 == 2" identifier == number_literal) )) (compound_statement "{\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }" { (expression_statement "iVar3 = (**(code **)(puVar13 + 0x99234))();" (assignment_expression "iVar3 = (**(code **)(puVar13 + 0x99234))()" identifier = (call_expression "(**(code **)(puVar13 + 0x99234))()" (parenthesized_expression "(**(code **)(puVar13 + 0x99234))" ( (pointer_expression "**(code **)(puVar13 + 0x99234)" * (pointer_expression "*(code **)(puVar13 + 0x99234)" * (cast_expression "(code **)(puVar13 + 0x99234)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x99234)" ( (binary_expression "puVar13 + 0x99234" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }" if (parenthesized_expression "((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3))" ( (binary_expression "(iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)" (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) || (parenthesized_expression "(*(int *)(iVar2 + 0x24) <= iVar3)" ( (binary_expression "*(int *)(iVar2 + 0x24) <= iVar3" (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) )))) <= identifier) ))) )) (compound_statement "{\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }" { (expression_statement "iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);" (assignment_expression "iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac)" identifier = (call_expression "(**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac)" (parenthesized_expression "(**(code **)(puVar13 + 0x9997c))" ( (pointer_expression "**(code **)(puVar13 + 0x9997c)" * (pointer_expression "*(code **)(puVar13 + 0x9997c)" * (cast_expression "(code **)(puVar13 + 0x9997c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x9997c)" ( (binary_expression "puVar13 + 0x9997c" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac)" ( (binary_expression "*(int *)(puVar13 + 0x99188) + -0x5a54" (pointer_expression "*(int *)(puVar13 + 0x99188)" * (cast_expression "(int *)(puVar13 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x99188)" ( (binary_expression "puVar13 + 0x99188" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar13 + 0x99188) + -0x5a60" (pointer_expression "*(int *)(puVar13 + 0x99188)" * (cast_expression "(int *)(puVar13 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x99188)" ( (binary_expression "puVar13 + 0x99188" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar13 + 0x99188) + -0x2fac" (pointer_expression "*(int *)(puVar13 + 0x99188)" * (cast_expression "(int *)(puVar13 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x99188)" ( (binary_expression "puVar13 + 0x99188" identifier + number_literal) )))) + number_literal) )))) ;) (return_statement "return iVar2;" return identifier ;) })) (expression_statement "iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));" (assignment_expression "iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4))" identifier = (call_expression "conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4))" identifier (argument_list "(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4))" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4)" * (cast_expression "(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x30) + iVar3 * 4)" ( (binary_expression "*(int *)(iVar2 + 0x30) + iVar3 * 4" (pointer_expression "*(int *)(iVar2 + 0x30)" * (cast_expression "(int *)(iVar2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) )))) + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) )))) ;) })) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "int conf_deserialise(Conf *conf,void *vdata,int maxsize)\n\n{\n  Conf *pCVar1;\n  uint *ptr;\n  int iVar2;\n  char *pcVar3;\n  int iVar4;\n  int *piVar5;\n  Conf *pCVar6;\n  int in_a3;\n  int iVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  Conf *pCVar11;\n  byte *s;\n  undefined *puVar12;\n  code *pcVar13;\n  int used;\n  int iStack_2c;\n  \n  puVar12 = PTR_shapetypes_57__type_000bd268;\n  iStack_2c = *(int *)PTR___stack_chk_guard_000be114;\n  ptr = (uint *)vdata;\n  pbVar10 = (byte *)vdata;\n  if (3 < maxsize) {\n                    /* WARNING: Load size is inaccurate */\n    uVar8 = (uint)*vdata << 0x18 | (uint)*(byte *)((int)vdata + 1) << 0x10 |\n            (uint)*(byte *)((int)vdata + 3) | (uint)*(byte *)((int)vdata + 2) << 8;\n    s = (byte *)((int)vdata + 4);\n    pbVar10 = s;\n    if (uVar8 < 0xb8) {\n      pcVar13 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      pCVar6 = (Conf *)maxsize;\n      pbVar9 = (byte *)vdata;\n      pCVar11 = (Conf *)maxsize;\n      pCVar1 = (Conf *)(maxsize + -4);\n      do {\n        maxsize = (int)pCVar1;\n        ptr = (uint *)safemalloc(1,0xc);\n        *ptr = uVar8;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x5d4c);\n        if (iVar2 == 1) {\n          if (maxsize < 4) {\n                    /* WARNING: Subroutine does not return */\n            safefree(ptr);\n          }\n          uVar8 = toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8);\n          ptr[1] = uVar8;\n          s = pbVar9 + 8;\n          maxsize = (int)pCVar6;\n          pCVar11 = pCVar11 + -2;\n        }\n        else {\n          pCVar11 = (Conf *)maxsize;\n          if (iVar2 == 2) {\n            pCVar6 = (Conf *)maxsize;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n            if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n            pcVar3 = dupstr((char *)s);\n            ptr[1] = (uint)pcVar3;\n            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));\n            maxsize = (int)pCVar6;\n            s = (byte *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *ptr;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x602c);\n        if (iVar2 == 2) {\n          maxsize = (int)pCVar11;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n                    /* WARNING: Subroutine does not return */\n            safefree((void *)ptr[1]);\n          }\n          pcVar3 = dupstr((char *)s);\n          ptr[2] = (uint)pcVar3;\n          pbVar9 = (byte *)(iVar2 + 1);\n          pCVar11 = (Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s));\n        }\n        else {\n          pbVar9 = s;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }\n        }\n        (*pcVar13)(conf);\n        s = pbVar9 + 4;\n        pbVar10 = pbVar9;\n        if ((int)pCVar11 < 4) break;\n        uVar8 = (uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10 | (uint)pbVar9[3] |\n                (uint)pbVar9[2] << 8;\n        pCVar6 = (Conf *)maxsize;\n        pbVar10 = s;\n        pCVar1 = pCVar11 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }\n  if (iStack_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)pbVar10 - (int)vdata;\n  }\n  iVar2 = iStack_2c;\n  puVar12 = PTR___stack_chk_fail_000bddb4;\n  (*(code *)PTR___stack_chk_fail_000bddb4)();\n  if (in_a3 == 0) {\n    iVar4 = conf_get_int((Conf *)maxsize,*(int *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar12 + 0x99188);\n    if (0 < *(int *)(iVar2 + 0x24)) {\n      piVar5 = *(int **)(iVar2 + 0x30);\n      iVar7 = 0;\n      if (iVar4 != *piVar5) {\n        iVar7 = 0;\n        do {\n          iVar7 = iVar7 + 1;\n          piVar5 = piVar5 + 1;\n          if (iVar7 == *(int *)(iVar2 + 0x24)) goto LAB_0002422c;\n        } while (*piVar5 != iVar4);\n      }\n      iVar2 = (**(code **)(puVar12 + 0x99230))(iVar2,ptr,iVar7);\n      return iVar2;\n    }\n  }\n  else {\n    if (in_a3 != 2) {\n      return 2;\n    }\n    iVar4 = (**(code **)(puVar12 + 0x99234))();\n    if ((-1 < iVar4) && (iVar4 < *(int *)(iVar2 + 0x24))) {\n      piVar5 = (int *)(*(int *)(iVar2 + 0x30) + iVar4 * 4);\n      conf_set_int((Conf *)maxsize,*(int *)(iVar2 + 0x14),*piVar5);\n      return (int)piVar5;\n    }\n    (**(code **)(puVar12 + 0x9997c))\n              (*(int *)(puVar12 + 0x99188) + -0x5a54,*(int *)(puVar12 + 0x99188) + -0x5a60,0x28,\n               *(int *)(puVar12 + 0x99188) + -0x2fac);\nLAB_0002422c:\n    iVar7 = *(int *)(puVar12 + 0x99188);\n  }\n  iVar7 = iVar7 + -0x2fac;\n  pCVar6 = (Conf *)0x24;\n  iVar4 = *(int *)(puVar12 + 0x99188) + -0x5a60;\n  iVar2 = *(int *)(puVar12 + 0x99188) + -0x5a24;\n  pcVar13 = *(code **)(puVar12 + 0x9997c);\n  (*pcVar13)(iVar2,iVar4);\n  if (iVar7 == 0) {\n    iVar7 = conf_get_int(pCVar6,0x4e);\n    if (iVar7 == 0) {\n      iVar7 = conf_get_int(pCVar6,0x4d);\n      uVar8 = (uint)(iVar7 != 0);\n    }\n    else {\n      uVar8 = 2;\n    }\n    if ((int)uVar8 < *(int *)(iVar2 + 0x24)) {\n      iVar2 = (**(code **)(pcVar13 + 0x990bc))(iVar2,iVar4);\n      return iVar2;\n    }\n    (**(code **)(pcVar13 + 0x99808))\n              (*(int *)(pcVar13 + 0x99014) + -0x5a24,*(int *)(pcVar13 + 0x99014) + -0x5a60,0x151,\n               *(int *)(pcVar13 + 0x99014) + -0x3008);\n  }\n  else if (iVar7 != 2) {\n    return 2;\n  }\n  iVar4 = (**(code **)(pcVar13 + 0x990c0))();\n  if ((iVar4 < 0) || (*(int *)(iVar2 + 0x24) <= iVar4)) {\n    iVar4 = (**(code **)(pcVar13 + 0x99808))\n                      (*(int *)(pcVar13 + 0x99014) + -0x5a54,*(int *)(pcVar13 + 0x99014) + -0x5a60,\n                       0x155,*(int *)(pcVar13 + 0x99014) + -0x3008);\n  }\n  else if (iVar4 != 2) {\n    conf_set_int(pCVar6,0x4d,(uint)(iVar4 != 0));\n    conf_set_int(pCVar6,0x4e,0);\n    return iVar4;\n  }\n  conf_set_int(pCVar6,0x4d,0);\n  conf_set_int(pCVar6,0x4e,1);\n  return iVar4;\n}\n\n" (function_definition "int conf_deserialise(Conf *conf,void *vdata,int maxsize)\n\n{\n  Conf *pCVar1;\n  uint *ptr;\n  int iVar2;\n  char *pcVar3;\n  int iVar4;\n  int *piVar5;\n  Conf *pCVar6;\n  int in_a3;\n  int iVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  Conf *pCVar11;\n  byte *s;\n  undefined *puVar12;\n  code *pcVar13;\n  int used;\n  int iStack_2c;\n  \n  puVar12 = PTR_shapetypes_57__type_000bd268;\n  iStack_2c = *(int *)PTR___stack_chk_guard_000be114;\n  ptr = (uint *)vdata;\n  pbVar10 = (byte *)vdata;\n  if (3 < maxsize) {\n                    /* WARNING: Load size is inaccurate */\n    uVar8 = (uint)*vdata << 0x18 | (uint)*(byte *)((int)vdata + 1) << 0x10 |\n            (uint)*(byte *)((int)vdata + 3) | (uint)*(byte *)((int)vdata + 2) << 8;\n    s = (byte *)((int)vdata + 4);\n    pbVar10 = s;\n    if (uVar8 < 0xb8) {\n      pcVar13 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      pCVar6 = (Conf *)maxsize;\n      pbVar9 = (byte *)vdata;\n      pCVar11 = (Conf *)maxsize;\n      pCVar1 = (Conf *)(maxsize + -4);\n      do {\n        maxsize = (int)pCVar1;\n        ptr = (uint *)safemalloc(1,0xc);\n        *ptr = uVar8;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x5d4c);\n        if (iVar2 == 1) {\n          if (maxsize < 4) {\n                    /* WARNING: Subroutine does not return */\n            safefree(ptr);\n          }\n          uVar8 = toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8);\n          ptr[1] = uVar8;\n          s = pbVar9 + 8;\n          maxsize = (int)pCVar6;\n          pCVar11 = pCVar11 + -2;\n        }\n        else {\n          pCVar11 = (Conf *)maxsize;\n          if (iVar2 == 2) {\n            pCVar6 = (Conf *)maxsize;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n            if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n            pcVar3 = dupstr((char *)s);\n            ptr[1] = (uint)pcVar3;\n            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));\n            maxsize = (int)pCVar6;\n            s = (byte *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *ptr;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x602c);\n        if (iVar2 == 2) {\n          maxsize = (int)pCVar11;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n                    /* WARNING: Subroutine does not return */\n            safefree((void *)ptr[1]);\n          }\n          pcVar3 = dupstr((char *)s);\n          ptr[2] = (uint)pcVar3;\n          pbVar9 = (byte *)(iVar2 + 1);\n          pCVar11 = (Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s));\n        }\n        else {\n          pbVar9 = s;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }\n        }\n        (*pcVar13)(conf);\n        s = pbVar9 + 4;\n        pbVar10 = pbVar9;\n        if ((int)pCVar11 < 4) break;\n        uVar8 = (uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10 | (uint)pbVar9[3] |\n                (uint)pbVar9[2] << 8;\n        pCVar6 = (Conf *)maxsize;\n        pbVar10 = s;\n        pCVar1 = pCVar11 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }\n  if (iStack_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)pbVar10 - (int)vdata;\n  }\n  iVar2 = iStack_2c;\n  puVar12 = PTR___stack_chk_fail_000bddb4;\n  (*(code *)PTR___stack_chk_fail_000bddb4)();\n  if (in_a3 == 0) {\n    iVar4 = conf_get_int((Conf *)maxsize,*(int *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar12 + 0x99188);\n    if (0 < *(int *)(iVar2 + 0x24)) {\n      piVar5 = *(int **)(iVar2 + 0x30);\n      iVar7 = 0;\n      if (iVar4 != *piVar5) {\n        iVar7 = 0;\n        do {\n          iVar7 = iVar7 + 1;\n          piVar5 = piVar5 + 1;\n          if (iVar7 == *(int *)(iVar2 + 0x24)) goto LAB_0002422c;\n        } while (*piVar5 != iVar4);\n      }\n      iVar2 = (**(code **)(puVar12 + 0x99230))(iVar2,ptr,iVar7);\n      return iVar2;\n    }\n  }\n  else {\n    if (in_a3 != 2) {\n      return 2;\n    }\n    iVar4 = (**(code **)(puVar12 + 0x99234))();\n    if ((-1 < iVar4) && (iVar4 < *(int *)(iVar2 + 0x24))) {\n      piVar5 = (int *)(*(int *)(iVar2 + 0x30) + iVar4 * 4);\n      conf_set_int((Conf *)maxsize,*(int *)(iVar2 + 0x14),*piVar5);\n      return (int)piVar5;\n    }\n    (**(code **)(puVar12 + 0x9997c))\n              (*(int *)(puVar12 + 0x99188) + -0x5a54,*(int *)(puVar12 + 0x99188) + -0x5a60,0x28,\n               *(int *)(puVar12 + 0x99188) + -0x2fac);\nLAB_0002422c:\n    iVar7 = *(int *)(puVar12 + 0x99188);\n  }\n  iVar7 = iVar7 + -0x2fac;\n  pCVar6 = (Conf *)0x24;\n  iVar4 = *(int *)(puVar12 + 0x99188) + -0x5a60;\n  iVar2 = *(int *)(puVar12 + 0x99188) + -0x5a24;\n  pcVar13 = *(code **)(puVar12 + 0x9997c);\n  (*pcVar13)(iVar2,iVar4);\n  if (iVar7 == 0) {\n    iVar7 = conf_get_int(pCVar6,0x4e);\n    if (iVar7 == 0) {\n      iVar7 = conf_get_int(pCVar6,0x4d);\n      uVar8 = (uint)(iVar7 != 0);\n    }\n    else {\n      uVar8 = 2;\n    }\n    if ((int)uVar8 < *(int *)(iVar2 + 0x24)) {\n      iVar2 = (**(code **)(pcVar13 + 0x990bc))(iVar2,iVar4);\n      return iVar2;\n    }\n    (**(code **)(pcVar13 + 0x99808))\n              (*(int *)(pcVar13 + 0x99014) + -0x5a24,*(int *)(pcVar13 + 0x99014) + -0x5a60,0x151,\n               *(int *)(pcVar13 + 0x99014) + -0x3008);\n  }\n  else if (iVar7 != 2) {\n    return 2;\n  }\n  iVar4 = (**(code **)(pcVar13 + 0x990c0))();\n  if ((iVar4 < 0) || (*(int *)(iVar2 + 0x24) <= iVar4)) {\n    iVar4 = (**(code **)(pcVar13 + 0x99808))\n                      (*(int *)(pcVar13 + 0x99014) + -0x5a54,*(int *)(pcVar13 + 0x99014) + -0x5a60,\n                       0x155,*(int *)(pcVar13 + 0x99014) + -0x3008);\n  }\n  else if (iVar4 != 2) {\n    conf_set_int(pCVar6,0x4d,(uint)(iVar4 != 0));\n    conf_set_int(pCVar6,0x4e,0);\n    return iVar4;\n  }\n  conf_set_int(pCVar6,0x4d,0);\n  conf_set_int(pCVar6,0x4e,1);\n  return iVar4;\n}" primitive_type (function_declarator "conf_deserialise(Conf *conf,void *vdata,int maxsize)" identifier (parameter_list "(Conf *conf,void *vdata,int maxsize)" ( (parameter_declaration "Conf *conf" type_identifier (pointer_declarator "*conf" * identifier)) , (parameter_declaration "void *vdata" primitive_type (pointer_declarator "*vdata" * identifier)) , (parameter_declaration "int maxsize" primitive_type identifier) ))) (compound_statement "{\n  Conf *pCVar1;\n  uint *ptr;\n  int iVar2;\n  char *pcVar3;\n  int iVar4;\n  int *piVar5;\n  Conf *pCVar6;\n  int in_a3;\n  int iVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  Conf *pCVar11;\n  byte *s;\n  undefined *puVar12;\n  code *pcVar13;\n  int used;\n  int iStack_2c;\n  \n  puVar12 = PTR_shapetypes_57__type_000bd268;\n  iStack_2c = *(int *)PTR___stack_chk_guard_000be114;\n  ptr = (uint *)vdata;\n  pbVar10 = (byte *)vdata;\n  if (3 < maxsize) {\n                    /* WARNING: Load size is inaccurate */\n    uVar8 = (uint)*vdata << 0x18 | (uint)*(byte *)((int)vdata + 1) << 0x10 |\n            (uint)*(byte *)((int)vdata + 3) | (uint)*(byte *)((int)vdata + 2) << 8;\n    s = (byte *)((int)vdata + 4);\n    pbVar10 = s;\n    if (uVar8 < 0xb8) {\n      pcVar13 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      pCVar6 = (Conf *)maxsize;\n      pbVar9 = (byte *)vdata;\n      pCVar11 = (Conf *)maxsize;\n      pCVar1 = (Conf *)(maxsize + -4);\n      do {\n        maxsize = (int)pCVar1;\n        ptr = (uint *)safemalloc(1,0xc);\n        *ptr = uVar8;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x5d4c);\n        if (iVar2 == 1) {\n          if (maxsize < 4) {\n                    /* WARNING: Subroutine does not return */\n            safefree(ptr);\n          }\n          uVar8 = toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8);\n          ptr[1] = uVar8;\n          s = pbVar9 + 8;\n          maxsize = (int)pCVar6;\n          pCVar11 = pCVar11 + -2;\n        }\n        else {\n          pCVar11 = (Conf *)maxsize;\n          if (iVar2 == 2) {\n            pCVar6 = (Conf *)maxsize;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n            if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n            pcVar3 = dupstr((char *)s);\n            ptr[1] = (uint)pcVar3;\n            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));\n            maxsize = (int)pCVar6;\n            s = (byte *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *ptr;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x602c);\n        if (iVar2 == 2) {\n          maxsize = (int)pCVar11;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n                    /* WARNING: Subroutine does not return */\n            safefree((void *)ptr[1]);\n          }\n          pcVar3 = dupstr((char *)s);\n          ptr[2] = (uint)pcVar3;\n          pbVar9 = (byte *)(iVar2 + 1);\n          pCVar11 = (Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s));\n        }\n        else {\n          pbVar9 = s;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }\n        }\n        (*pcVar13)(conf);\n        s = pbVar9 + 4;\n        pbVar10 = pbVar9;\n        if ((int)pCVar11 < 4) break;\n        uVar8 = (uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10 | (uint)pbVar9[3] |\n                (uint)pbVar9[2] << 8;\n        pCVar6 = (Conf *)maxsize;\n        pbVar10 = s;\n        pCVar1 = pCVar11 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }\n  if (iStack_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)pbVar10 - (int)vdata;\n  }\n  iVar2 = iStack_2c;\n  puVar12 = PTR___stack_chk_fail_000bddb4;\n  (*(code *)PTR___stack_chk_fail_000bddb4)();\n  if (in_a3 == 0) {\n    iVar4 = conf_get_int((Conf *)maxsize,*(int *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar12 + 0x99188);\n    if (0 < *(int *)(iVar2 + 0x24)) {\n      piVar5 = *(int **)(iVar2 + 0x30);\n      iVar7 = 0;\n      if (iVar4 != *piVar5) {\n        iVar7 = 0;\n        do {\n          iVar7 = iVar7 + 1;\n          piVar5 = piVar5 + 1;\n          if (iVar7 == *(int *)(iVar2 + 0x24)) goto LAB_0002422c;\n        } while (*piVar5 != iVar4);\n      }\n      iVar2 = (**(code **)(puVar12 + 0x99230))(iVar2,ptr,iVar7);\n      return iVar2;\n    }\n  }\n  else {\n    if (in_a3 != 2) {\n      return 2;\n    }\n    iVar4 = (**(code **)(puVar12 + 0x99234))();\n    if ((-1 < iVar4) && (iVar4 < *(int *)(iVar2 + 0x24))) {\n      piVar5 = (int *)(*(int *)(iVar2 + 0x30) + iVar4 * 4);\n      conf_set_int((Conf *)maxsize,*(int *)(iVar2 + 0x14),*piVar5);\n      return (int)piVar5;\n    }\n    (**(code **)(puVar12 + 0x9997c))\n              (*(int *)(puVar12 + 0x99188) + -0x5a54,*(int *)(puVar12 + 0x99188) + -0x5a60,0x28,\n               *(int *)(puVar12 + 0x99188) + -0x2fac);\nLAB_0002422c:\n    iVar7 = *(int *)(puVar12 + 0x99188);\n  }\n  iVar7 = iVar7 + -0x2fac;\n  pCVar6 = (Conf *)0x24;\n  iVar4 = *(int *)(puVar12 + 0x99188) + -0x5a60;\n  iVar2 = *(int *)(puVar12 + 0x99188) + -0x5a24;\n  pcVar13 = *(code **)(puVar12 + 0x9997c);\n  (*pcVar13)(iVar2,iVar4);\n  if (iVar7 == 0) {\n    iVar7 = conf_get_int(pCVar6,0x4e);\n    if (iVar7 == 0) {\n      iVar7 = conf_get_int(pCVar6,0x4d);\n      uVar8 = (uint)(iVar7 != 0);\n    }\n    else {\n      uVar8 = 2;\n    }\n    if ((int)uVar8 < *(int *)(iVar2 + 0x24)) {\n      iVar2 = (**(code **)(pcVar13 + 0x990bc))(iVar2,iVar4);\n      return iVar2;\n    }\n    (**(code **)(pcVar13 + 0x99808))\n              (*(int *)(pcVar13 + 0x99014) + -0x5a24,*(int *)(pcVar13 + 0x99014) + -0x5a60,0x151,\n               *(int *)(pcVar13 + 0x99014) + -0x3008);\n  }\n  else if (iVar7 != 2) {\n    return 2;\n  }\n  iVar4 = (**(code **)(pcVar13 + 0x990c0))();\n  if ((iVar4 < 0) || (*(int *)(iVar2 + 0x24) <= iVar4)) {\n    iVar4 = (**(code **)(pcVar13 + 0x99808))\n                      (*(int *)(pcVar13 + 0x99014) + -0x5a54,*(int *)(pcVar13 + 0x99014) + -0x5a60,\n                       0x155,*(int *)(pcVar13 + 0x99014) + -0x3008);\n  }\n  else if (iVar4 != 2) {\n    conf_set_int(pCVar6,0x4d,(uint)(iVar4 != 0));\n    conf_set_int(pCVar6,0x4e,0);\n    return iVar4;\n  }\n  conf_set_int(pCVar6,0x4d,0);\n  conf_set_int(pCVar6,0x4e,1);\n  return iVar4;\n}" { (declaration "Conf *pCVar1;" type_identifier (pointer_declarator "*pCVar1" * identifier) ;) (declaration "uint *ptr;" type_identifier (pointer_declarator "*ptr" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "Conf *pCVar6;" type_identifier (pointer_declarator "*pCVar6" * identifier) ;) (declaration "int in_a3;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "Conf *pCVar11;" type_identifier (pointer_declarator "*pCVar11" * identifier) ;) (declaration "byte *s;" type_identifier (pointer_declarator "*s" * identifier) ;) (declaration "undefined *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "int used;" primitive_type identifier ;) (declaration "int iStack_2c;" primitive_type identifier ;) (expression_statement "puVar12 = PTR_shapetypes_57__type_000bd268;" (assignment_expression "puVar12 = PTR_shapetypes_57__type_000bd268" identifier = identifier) ;) (expression_statement "iStack_2c = *(int *)PTR___stack_chk_guard_000be114;" (assignment_expression "iStack_2c = *(int *)PTR___stack_chk_guard_000be114" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000be114" * (cast_expression "(int *)PTR___stack_chk_guard_000be114" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "ptr = (uint *)vdata;" (assignment_expression "ptr = (uint *)vdata" identifier = (cast_expression "(uint *)vdata" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar10 = (byte *)vdata;" (assignment_expression "pbVar10 = (byte *)vdata" identifier = (cast_expression "(byte *)vdata" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (3 < maxsize) {\n                    /* WARNING: Load size is inaccurate */\n    uVar8 = (uint)*vdata << 0x18 | (uint)*(byte *)((int)vdata + 1) << 0x10 |\n            (uint)*(byte *)((int)vdata + 3) | (uint)*(byte *)((int)vdata + 2) << 8;\n    s = (byte *)((int)vdata + 4);\n    pbVar10 = s;\n    if (uVar8 < 0xb8) {\n      pcVar13 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      pCVar6 = (Conf *)maxsize;\n      pbVar9 = (byte *)vdata;\n      pCVar11 = (Conf *)maxsize;\n      pCVar1 = (Conf *)(maxsize + -4);\n      do {\n        maxsize = (int)pCVar1;\n        ptr = (uint *)safemalloc(1,0xc);\n        *ptr = uVar8;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x5d4c);\n        if (iVar2 == 1) {\n          if (maxsize < 4) {\n                    /* WARNING: Subroutine does not return */\n            safefree(ptr);\n          }\n          uVar8 = toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8);\n          ptr[1] = uVar8;\n          s = pbVar9 + 8;\n          maxsize = (int)pCVar6;\n          pCVar11 = pCVar11 + -2;\n        }\n        else {\n          pCVar11 = (Conf *)maxsize;\n          if (iVar2 == 2) {\n            pCVar6 = (Conf *)maxsize;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n            if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n            pcVar3 = dupstr((char *)s);\n            ptr[1] = (uint)pcVar3;\n            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));\n            maxsize = (int)pCVar6;\n            s = (byte *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *ptr;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x602c);\n        if (iVar2 == 2) {\n          maxsize = (int)pCVar11;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n                    /* WARNING: Subroutine does not return */\n            safefree((void *)ptr[1]);\n          }\n          pcVar3 = dupstr((char *)s);\n          ptr[2] = (uint)pcVar3;\n          pbVar9 = (byte *)(iVar2 + 1);\n          pCVar11 = (Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s));\n        }\n        else {\n          pbVar9 = s;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }\n        }\n        (*pcVar13)(conf);\n        s = pbVar9 + 4;\n        pbVar10 = pbVar9;\n        if ((int)pCVar11 < 4) break;\n        uVar8 = (uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10 | (uint)pbVar9[3] |\n                (uint)pbVar9[2] << 8;\n        pCVar6 = (Conf *)maxsize;\n        pbVar10 = s;\n        pCVar1 = pCVar11 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }" if (parenthesized_expression "(3 < maxsize)" ( (binary_expression "3 < maxsize" number_literal < identifier) )) (compound_statement "{\n                    /* WARNING: Load size is inaccurate */\n    uVar8 = (uint)*vdata << 0x18 | (uint)*(byte *)((int)vdata + 1) << 0x10 |\n            (uint)*(byte *)((int)vdata + 3) | (uint)*(byte *)((int)vdata + 2) << 8;\n    s = (byte *)((int)vdata + 4);\n    pbVar10 = s;\n    if (uVar8 < 0xb8) {\n      pcVar13 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      pCVar6 = (Conf *)maxsize;\n      pbVar9 = (byte *)vdata;\n      pCVar11 = (Conf *)maxsize;\n      pCVar1 = (Conf *)(maxsize + -4);\n      do {\n        maxsize = (int)pCVar1;\n        ptr = (uint *)safemalloc(1,0xc);\n        *ptr = uVar8;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x5d4c);\n        if (iVar2 == 1) {\n          if (maxsize < 4) {\n                    /* WARNING: Subroutine does not return */\n            safefree(ptr);\n          }\n          uVar8 = toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8);\n          ptr[1] = uVar8;\n          s = pbVar9 + 8;\n          maxsize = (int)pCVar6;\n          pCVar11 = pCVar11 + -2;\n        }\n        else {\n          pCVar11 = (Conf *)maxsize;\n          if (iVar2 == 2) {\n            pCVar6 = (Conf *)maxsize;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n            if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n            pcVar3 = dupstr((char *)s);\n            ptr[1] = (uint)pcVar3;\n            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));\n            maxsize = (int)pCVar6;\n            s = (byte *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *ptr;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x602c);\n        if (iVar2 == 2) {\n          maxsize = (int)pCVar11;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n                    /* WARNING: Subroutine does not return */\n            safefree((void *)ptr[1]);\n          }\n          pcVar3 = dupstr((char *)s);\n          ptr[2] = (uint)pcVar3;\n          pbVar9 = (byte *)(iVar2 + 1);\n          pCVar11 = (Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s));\n        }\n        else {\n          pbVar9 = s;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }\n        }\n        (*pcVar13)(conf);\n        s = pbVar9 + 4;\n        pbVar10 = pbVar9;\n        if ((int)pCVar11 < 4) break;\n        uVar8 = (uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10 | (uint)pbVar9[3] |\n                (uint)pbVar9[2] << 8;\n        pCVar6 = (Conf *)maxsize;\n        pbVar10 = s;\n        pCVar1 = pCVar11 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }" { comment (expression_statement "uVar8 = (uint)*vdata << 0x18 | (uint)*(byte *)((int)vdata + 1) << 0x10 |\n            (uint)*(byte *)((int)vdata + 3) | (uint)*(byte *)((int)vdata + 2) << 8;" (assignment_expression "uVar8 = (uint)*vdata << 0x18 | (uint)*(byte *)((int)vdata + 1) << 0x10 |\n            (uint)*(byte *)((int)vdata + 3) | (uint)*(byte *)((int)vdata + 2) << 8" identifier = (binary_expression "(uint)*vdata << 0x18 | (uint)*(byte *)((int)vdata + 1) << 0x10 |\n            (uint)*(byte *)((int)vdata + 3) | (uint)*(byte *)((int)vdata + 2) << 8" (binary_expression "(uint)*vdata << 0x18 | (uint)*(byte *)((int)vdata + 1) << 0x10 |\n            (uint)*(byte *)((int)vdata + 3)" (binary_expression "(uint)*vdata << 0x18 | (uint)*(byte *)((int)vdata + 1) << 0x10" (binary_expression "(uint)*vdata << 0x18" (binary_expression "(uint)*vdata" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)*(byte *)((int)vdata + 1) << 0x10" (binary_expression "(uint)*(byte *)((int)vdata + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)vdata + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)vdata + 1)" ( (binary_expression "(int)vdata + 1" (cast_expression "(int)vdata" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)*(byte *)((int)vdata + 3)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)vdata + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)vdata + 3)" ( (binary_expression "(int)vdata + 3" (cast_expression "(int)vdata" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) | (binary_expression "(uint)*(byte *)((int)vdata + 2) << 8" (binary_expression "(uint)*(byte *)((int)vdata + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)vdata + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)vdata + 2)" ( (binary_expression "(int)vdata + 2" (cast_expression "(int)vdata" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal))) ;) (expression_statement "s = (byte *)((int)vdata + 4);" (assignment_expression "s = (byte *)((int)vdata + 4)" identifier = (cast_expression "(byte *)((int)vdata + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)vdata + 4)" ( (binary_expression "(int)vdata + 4" (cast_expression "(int)vdata" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pbVar10 = s;" (assignment_expression "pbVar10 = s" identifier = identifier) ;) (if_statement "if (uVar8 < 0xb8) {\n      pcVar13 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      pCVar6 = (Conf *)maxsize;\n      pbVar9 = (byte *)vdata;\n      pCVar11 = (Conf *)maxsize;\n      pCVar1 = (Conf *)(maxsize + -4);\n      do {\n        maxsize = (int)pCVar1;\n        ptr = (uint *)safemalloc(1,0xc);\n        *ptr = uVar8;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x5d4c);\n        if (iVar2 == 1) {\n          if (maxsize < 4) {\n                    /* WARNING: Subroutine does not return */\n            safefree(ptr);\n          }\n          uVar8 = toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8);\n          ptr[1] = uVar8;\n          s = pbVar9 + 8;\n          maxsize = (int)pCVar6;\n          pCVar11 = pCVar11 + -2;\n        }\n        else {\n          pCVar11 = (Conf *)maxsize;\n          if (iVar2 == 2) {\n            pCVar6 = (Conf *)maxsize;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n            if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n            pcVar3 = dupstr((char *)s);\n            ptr[1] = (uint)pcVar3;\n            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));\n            maxsize = (int)pCVar6;\n            s = (byte *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *ptr;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x602c);\n        if (iVar2 == 2) {\n          maxsize = (int)pCVar11;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n                    /* WARNING: Subroutine does not return */\n            safefree((void *)ptr[1]);\n          }\n          pcVar3 = dupstr((char *)s);\n          ptr[2] = (uint)pcVar3;\n          pbVar9 = (byte *)(iVar2 + 1);\n          pCVar11 = (Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s));\n        }\n        else {\n          pbVar9 = s;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }\n        }\n        (*pcVar13)(conf);\n        s = pbVar9 + 4;\n        pbVar10 = pbVar9;\n        if ((int)pCVar11 < 4) break;\n        uVar8 = (uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10 | (uint)pbVar9[3] |\n                (uint)pbVar9[2] << 8;\n        pCVar6 = (Conf *)maxsize;\n        pbVar10 = s;\n        pCVar1 = pCVar11 + -1;\n      } while (uVar8 < 0xb8);\n    }" if (parenthesized_expression "(uVar8 < 0xb8)" ( (binary_expression "uVar8 < 0xb8" identifier < number_literal) )) (compound_statement "{\n      pcVar13 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      pCVar6 = (Conf *)maxsize;\n      pbVar9 = (byte *)vdata;\n      pCVar11 = (Conf *)maxsize;\n      pCVar1 = (Conf *)(maxsize + -4);\n      do {\n        maxsize = (int)pCVar1;\n        ptr = (uint *)safemalloc(1,0xc);\n        *ptr = uVar8;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x5d4c);\n        if (iVar2 == 1) {\n          if (maxsize < 4) {\n                    /* WARNING: Subroutine does not return */\n            safefree(ptr);\n          }\n          uVar8 = toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8);\n          ptr[1] = uVar8;\n          s = pbVar9 + 8;\n          maxsize = (int)pCVar6;\n          pCVar11 = pCVar11 + -2;\n        }\n        else {\n          pCVar11 = (Conf *)maxsize;\n          if (iVar2 == 2) {\n            pCVar6 = (Conf *)maxsize;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n            if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n            pcVar3 = dupstr((char *)s);\n            ptr[1] = (uint)pcVar3;\n            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));\n            maxsize = (int)pCVar6;\n            s = (byte *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *ptr;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x602c);\n        if (iVar2 == 2) {\n          maxsize = (int)pCVar11;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n                    /* WARNING: Subroutine does not return */\n            safefree((void *)ptr[1]);\n          }\n          pcVar3 = dupstr((char *)s);\n          ptr[2] = (uint)pcVar3;\n          pbVar9 = (byte *)(iVar2 + 1);\n          pCVar11 = (Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s));\n        }\n        else {\n          pbVar9 = s;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }\n        }\n        (*pcVar13)(conf);\n        s = pbVar9 + 4;\n        pbVar10 = pbVar9;\n        if ((int)pCVar11 < 4) break;\n        uVar8 = (uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10 | (uint)pbVar9[3] |\n                (uint)pbVar9[2] << 8;\n        pCVar6 = (Conf *)maxsize;\n        pbVar10 = s;\n        pCVar1 = pCVar11 + -1;\n      } while (uVar8 < 0xb8);\n    }" { (expression_statement "pcVar13 = (code *)(PTR_LAB_000bd204 + 0x218c);" (assignment_expression "pcVar13 = (code *)(PTR_LAB_000bd204 + 0x218c)" identifier = (cast_expression "(code *)(PTR_LAB_000bd204 + 0x218c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000bd204 + 0x218c)" ( (binary_expression "PTR_LAB_000bd204 + 0x218c" identifier + number_literal) )))) ;) (expression_statement "pCVar6 = (Conf *)maxsize;" (assignment_expression "pCVar6 = (Conf *)maxsize" identifier = (cast_expression "(Conf *)maxsize" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar9 = (byte *)vdata;" (assignment_expression "pbVar9 = (byte *)vdata" identifier = (cast_expression "(byte *)vdata" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pCVar11 = (Conf *)maxsize;" (assignment_expression "pCVar11 = (Conf *)maxsize" identifier = (cast_expression "(Conf *)maxsize" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pCVar1 = (Conf *)(maxsize + -4);" (assignment_expression "pCVar1 = (Conf *)(maxsize + -4)" identifier = (cast_expression "(Conf *)(maxsize + -4)" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(maxsize + -4)" ( (binary_expression "maxsize + -4" identifier + number_literal) )))) ;) (do_statement "do {\n        maxsize = (int)pCVar1;\n        ptr = (uint *)safemalloc(1,0xc);\n        *ptr = uVar8;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x5d4c);\n        if (iVar2 == 1) {\n          if (maxsize < 4) {\n                    /* WARNING: Subroutine does not return */\n            safefree(ptr);\n          }\n          uVar8 = toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8);\n          ptr[1] = uVar8;\n          s = pbVar9 + 8;\n          maxsize = (int)pCVar6;\n          pCVar11 = pCVar11 + -2;\n        }\n        else {\n          pCVar11 = (Conf *)maxsize;\n          if (iVar2 == 2) {\n            pCVar6 = (Conf *)maxsize;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n            if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n            pcVar3 = dupstr((char *)s);\n            ptr[1] = (uint)pcVar3;\n            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));\n            maxsize = (int)pCVar6;\n            s = (byte *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *ptr;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x602c);\n        if (iVar2 == 2) {\n          maxsize = (int)pCVar11;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n                    /* WARNING: Subroutine does not return */\n            safefree((void *)ptr[1]);\n          }\n          pcVar3 = dupstr((char *)s);\n          ptr[2] = (uint)pcVar3;\n          pbVar9 = (byte *)(iVar2 + 1);\n          pCVar11 = (Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s));\n        }\n        else {\n          pbVar9 = s;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }\n        }\n        (*pcVar13)(conf);\n        s = pbVar9 + 4;\n        pbVar10 = pbVar9;\n        if ((int)pCVar11 < 4) break;\n        uVar8 = (uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10 | (uint)pbVar9[3] |\n                (uint)pbVar9[2] << 8;\n        pCVar6 = (Conf *)maxsize;\n        pbVar10 = s;\n        pCVar1 = pCVar11 + -1;\n      } while (uVar8 < 0xb8);" do (compound_statement "{\n        maxsize = (int)pCVar1;\n        ptr = (uint *)safemalloc(1,0xc);\n        *ptr = uVar8;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x5d4c);\n        if (iVar2 == 1) {\n          if (maxsize < 4) {\n                    /* WARNING: Subroutine does not return */\n            safefree(ptr);\n          }\n          uVar8 = toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8);\n          ptr[1] = uVar8;\n          s = pbVar9 + 8;\n          maxsize = (int)pCVar6;\n          pCVar11 = pCVar11 + -2;\n        }\n        else {\n          pCVar11 = (Conf *)maxsize;\n          if (iVar2 == 2) {\n            pCVar6 = (Conf *)maxsize;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n            if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n            pcVar3 = dupstr((char *)s);\n            ptr[1] = (uint)pcVar3;\n            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));\n            maxsize = (int)pCVar6;\n            s = (byte *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *ptr;\n        iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x602c);\n        if (iVar2 == 2) {\n          maxsize = (int)pCVar11;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n                    /* WARNING: Subroutine does not return */\n            safefree((void *)ptr[1]);\n          }\n          pcVar3 = dupstr((char *)s);\n          ptr[2] = (uint)pcVar3;\n          pbVar9 = (byte *)(iVar2 + 1);\n          pCVar11 = (Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s));\n        }\n        else {\n          pbVar9 = s;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }\n        }\n        (*pcVar13)(conf);\n        s = pbVar9 + 4;\n        pbVar10 = pbVar9;\n        if ((int)pCVar11 < 4) break;\n        uVar8 = (uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10 | (uint)pbVar9[3] |\n                (uint)pbVar9[2] << 8;\n        pCVar6 = (Conf *)maxsize;\n        pbVar10 = s;\n        pCVar1 = pCVar11 + -1;\n      }" { (expression_statement "maxsize = (int)pCVar1;" (assignment_expression "maxsize = (int)pCVar1" identifier = (cast_expression "(int)pCVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "ptr = (uint *)safemalloc(1,0xc);" (assignment_expression "ptr = (uint *)safemalloc(1,0xc)" identifier = (cast_expression "(uint *)safemalloc(1,0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(1,0xc)" identifier (argument_list "(1,0xc)" ( number_literal , number_literal ))))) ;) (expression_statement "*ptr = uVar8;" (assignment_expression "*ptr = uVar8" (pointer_expression "*ptr" * identifier) = identifier) ;) (expression_statement "iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x5d4c);" (assignment_expression "iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x5d4c)" identifier = (pointer_expression "*(int *)(puVar12 + uVar8 * 4 + -0x5d4c)" * (cast_expression "(int *)(puVar12 + uVar8 * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + uVar8 * 4 + -0x5d4c)" ( (binary_expression "puVar12 + uVar8 * 4 + -0x5d4c" (binary_expression "puVar12 + uVar8 * 4" identifier + (binary_expression "uVar8 * 4" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if (iVar2 == 1) {\n          if (maxsize < 4) {\n                    /* WARNING: Subroutine does not return */\n            safefree(ptr);\n          }\n          uVar8 = toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8);\n          ptr[1] = uVar8;\n          s = pbVar9 + 8;\n          maxsize = (int)pCVar6;\n          pCVar11 = pCVar11 + -2;\n        }\n        else {\n          pCVar11 = (Conf *)maxsize;\n          if (iVar2 == 2) {\n            pCVar6 = (Conf *)maxsize;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n            if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n            pcVar3 = dupstr((char *)s);\n            ptr[1] = (uint)pcVar3;\n            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));\n            maxsize = (int)pCVar6;\n            s = (byte *)(iVar2 + 1);\n          }\n        }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n          if (maxsize < 4) {\n                    /* WARNING: Subroutine does not return */\n            safefree(ptr);\n          }\n          uVar8 = toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8);\n          ptr[1] = uVar8;\n          s = pbVar9 + 8;\n          maxsize = (int)pCVar6;\n          pCVar11 = pCVar11 + -2;\n        }" { (if_statement "if (maxsize < 4) {\n                    /* WARNING: Subroutine does not return */\n            safefree(ptr);\n          }" if (parenthesized_expression "(maxsize < 4)" ( (binary_expression "maxsize < 4" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            safefree(ptr);\n          }" { comment (expression_statement "safefree(ptr);" (call_expression "safefree(ptr)" identifier (argument_list "(ptr)" ( identifier ))) ;) })) (expression_statement "uVar8 = toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8);" (assignment_expression "uVar8 = toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8)" identifier = (call_expression "toint((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8)" identifier (argument_list "((uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8)" ( (binary_expression "(uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7] |\n                        (uint)pbVar9[6] << 8" (binary_expression "(uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10 | (uint)pbVar9[7]" (binary_expression "(uint)pbVar9[4] << 0x18 | (uint)pbVar9[5] << 0x10" (binary_expression "(uint)pbVar9[4] << 0x18" (cast_expression "(uint)pbVar9[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar9[4]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)pbVar9[5] << 0x10" (cast_expression "(uint)pbVar9[5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar9[5]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)pbVar9[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar9[7]" identifier [ number_literal ]))) | (binary_expression "(uint)pbVar9[6] << 8" (cast_expression "(uint)pbVar9[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar9[6]" identifier [ number_literal ])) << number_literal)) )))) ;) (expression_statement "ptr[1] = uVar8;" (assignment_expression "ptr[1] = uVar8" (subscript_expression "ptr[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "s = pbVar9 + 8;" (assignment_expression "s = pbVar9 + 8" identifier = (binary_expression "pbVar9 + 8" identifier + number_literal)) ;) (expression_statement "maxsize = (int)pCVar6;" (assignment_expression "maxsize = (int)pCVar6" identifier = (cast_expression "(int)pCVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pCVar11 = pCVar11 + -2;" (assignment_expression "pCVar11 = pCVar11 + -2" identifier = (binary_expression "pCVar11 + -2" identifier + number_literal)) ;) }) (else_clause "else {\n          pCVar11 = (Conf *)maxsize;\n          if (iVar2 == 2) {\n            pCVar6 = (Conf *)maxsize;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n            if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n            pcVar3 = dupstr((char *)s);\n            ptr[1] = (uint)pcVar3;\n            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));\n            maxsize = (int)pCVar6;\n            s = (byte *)(iVar2 + 1);\n          }\n        }" else (compound_statement "{\n          pCVar11 = (Conf *)maxsize;\n          if (iVar2 == 2) {\n            pCVar6 = (Conf *)maxsize;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n            if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n            pcVar3 = dupstr((char *)s);\n            ptr[1] = (uint)pcVar3;\n            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));\n            maxsize = (int)pCVar6;\n            s = (byte *)(iVar2 + 1);\n          }\n        }" { (expression_statement "pCVar11 = (Conf *)maxsize;" (assignment_expression "pCVar11 = (Conf *)maxsize" identifier = (cast_expression "(Conf *)maxsize" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (iVar2 == 2) {\n            pCVar6 = (Conf *)maxsize;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n            if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n            pcVar3 = dupstr((char *)s);\n            ptr[1] = (uint)pcVar3;\n            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));\n            maxsize = (int)pCVar6;\n            s = (byte *)(iVar2 + 1);\n          }" if (parenthesized_expression "(iVar2 == 2)" ( (binary_expression "iVar2 == 2" identifier == number_literal) )) (compound_statement "{\n            pCVar6 = (Conf *)maxsize;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n            if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n            pcVar3 = dupstr((char *)s);\n            ptr[1] = (uint)pcVar3;\n            pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));\n            maxsize = (int)pCVar6;\n            s = (byte *)(iVar2 + 1);\n          }" { (expression_statement "pCVar6 = (Conf *)maxsize;" (assignment_expression "pCVar6 = (Conf *)maxsize" identifier = (cast_expression "(Conf *)maxsize" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);" (assignment_expression "iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0)" identifier = (call_expression "(*(code *)PTR_memchr_000bdf64)(s,0)" (parenthesized_expression "(*(code *)PTR_memchr_000bdf64)" ( (pointer_expression "*(code *)PTR_memchr_000bdf64" * (cast_expression "(code *)PTR_memchr_000bdf64" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(s,0)" ( identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }" { comment (expression_statement "safefree(ptr);" (call_expression "safefree(ptr)" identifier (argument_list "(ptr)" ( identifier ))) ;) })) (expression_statement "pcVar3 = dupstr((char *)s);" (assignment_expression "pcVar3 = dupstr((char *)s)" identifier = (call_expression "dupstr((char *)s)" identifier (argument_list "((char *)s)" ( (cast_expression "(char *)s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "ptr[1] = (uint)pcVar3;" (assignment_expression "ptr[1] = (uint)pcVar3" (subscript_expression "ptr[1]" identifier [ number_literal ]) = (cast_expression "(uint)pcVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s));" (assignment_expression "pCVar11 = (Conf *)(maxsize - ((iVar2 + 1) - (int)s))" identifier = (cast_expression "(Conf *)(maxsize - ((iVar2 + 1) - (int)s))" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(maxsize - ((iVar2 + 1) - (int)s))" ( (binary_expression "maxsize - ((iVar2 + 1) - (int)s)" identifier - (parenthesized_expression "((iVar2 + 1) - (int)s)" ( (binary_expression "(iVar2 + 1) - (int)s" (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )) - (cast_expression "(int)s" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "maxsize = (int)pCVar6;" (assignment_expression "maxsize = (int)pCVar6" identifier = (cast_expression "(int)pCVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "s = (byte *)(iVar2 + 1);" (assignment_expression "s = (byte *)(iVar2 + 1)" identifier = (cast_expression "(byte *)(iVar2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) ;) })) }))) (expression_statement "uVar8 = *ptr;" (assignment_expression "uVar8 = *ptr" identifier = (pointer_expression "*ptr" * identifier)) ;) (expression_statement "iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x602c);" (assignment_expression "iVar2 = *(int *)(puVar12 + uVar8 * 4 + -0x602c)" identifier = (pointer_expression "*(int *)(puVar12 + uVar8 * 4 + -0x602c)" * (cast_expression "(int *)(puVar12 + uVar8 * 4 + -0x602c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + uVar8 * 4 + -0x602c)" ( (binary_expression "puVar12 + uVar8 * 4 + -0x602c" (binary_expression "puVar12 + uVar8 * 4" identifier + (binary_expression "uVar8 * 4" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if (iVar2 == 2) {\n          maxsize = (int)pCVar11;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n                    /* WARNING: Subroutine does not return */\n            safefree((void *)ptr[1]);\n          }\n          pcVar3 = dupstr((char *)s);\n          ptr[2] = (uint)pcVar3;\n          pbVar9 = (byte *)(iVar2 + 1);\n          pCVar11 = (Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s));\n        }\n        else {\n          pbVar9 = s;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }\n        }" if (parenthesized_expression "(iVar2 == 2)" ( (binary_expression "iVar2 == 2" identifier == number_literal) )) (compound_statement "{\n          maxsize = (int)pCVar11;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n                    /* WARNING: Subroutine does not return */\n            safefree((void *)ptr[1]);\n          }\n          pcVar3 = dupstr((char *)s);\n          ptr[2] = (uint)pcVar3;\n          pbVar9 = (byte *)(iVar2 + 1);\n          pCVar11 = (Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s));\n        }" { (expression_statement "maxsize = (int)pCVar11;" (assignment_expression "maxsize = (int)pCVar11" identifier = (cast_expression "(int)pCVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0);" (assignment_expression "iVar2 = (*(code *)PTR_memchr_000bdf64)(s,0)" identifier = (call_expression "(*(code *)PTR_memchr_000bdf64)(s,0)" (parenthesized_expression "(*(code *)PTR_memchr_000bdf64)" ( (pointer_expression "*(code *)PTR_memchr_000bdf64" * (cast_expression "(code *)PTR_memchr_000bdf64" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(s,0)" ( identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n                    /* WARNING: Subroutine does not return */\n            safefree((void *)ptr[1]);\n          }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }\n                    /* WARNING: Subroutine does not return */\n            safefree((void *)ptr[1]);\n          }" { (if_statement "if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }" if (parenthesized_expression "(*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2)" ( (binary_expression "*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2" (pointer_expression "*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c)" * (cast_expression "(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c)" ( (binary_expression "PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_57__type_000bd268 + uVar8 * 4" identifier + (binary_expression "uVar8 * 4" identifier * number_literal)) + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              safefree(ptr);\n            }" { comment (expression_statement "safefree(ptr);" (call_expression "safefree(ptr)" identifier (argument_list "(ptr)" ( identifier ))) ;) })) comment (expression_statement "safefree((void *)ptr[1]);" (call_expression "safefree((void *)ptr[1])" identifier (argument_list "((void *)ptr[1])" ( (cast_expression "(void *)ptr[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "ptr[1]" identifier [ number_literal ])) ))) ;) })) (expression_statement "pcVar3 = dupstr((char *)s);" (assignment_expression "pcVar3 = dupstr((char *)s)" identifier = (call_expression "dupstr((char *)s)" identifier (argument_list "((char *)s)" ( (cast_expression "(char *)s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "ptr[2] = (uint)pcVar3;" (assignment_expression "ptr[2] = (uint)pcVar3" (subscript_expression "ptr[2]" identifier [ number_literal ]) = (cast_expression "(uint)pcVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pbVar9 = (byte *)(iVar2 + 1);" (assignment_expression "pbVar9 = (byte *)(iVar2 + 1)" identifier = (cast_expression "(byte *)(iVar2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "pCVar11 = (Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s));" (assignment_expression "pCVar11 = (Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s))" identifier = (cast_expression "(Conf *)((int)pCVar11 - ((int)pbVar9 - (int)s))" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pCVar11 - ((int)pbVar9 - (int)s))" ( (binary_expression "(int)pCVar11 - ((int)pbVar9 - (int)s)" (cast_expression "(int)pCVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "((int)pbVar9 - (int)s)" ( (binary_expression "(int)pbVar9 - (int)s" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)s" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) }) (else_clause "else {\n          pbVar9 = s;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }\n        }" else (compound_statement "{\n          pbVar9 = s;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }\n        }" { (expression_statement "pbVar9 = s;" (assignment_expression "pbVar9 = s" identifier = identifier) ;) (if_statement "if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }" if (parenthesized_expression "(iVar2 < 3)" ( (binary_expression "iVar2 < 3" identifier < number_literal) )) (compound_statement "{\n            if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }\n          }" { (if_statement "if (iVar2 == 1) {\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n              if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);\n              ptr[2] = uVar8;\n              pbVar9 = s + 4;\n              pCVar11 = pCVar11 + -1;\n            }" { (if_statement "if ((int)pCVar11 < 4) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }" if (parenthesized_expression "((int)pCVar11 < 4)" ( (binary_expression "(int)pCVar11 < 4" (cast_expression "(int)pCVar11" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }" { (if_statement "if (*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }" if (parenthesized_expression "(*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2)" ( (binary_expression "*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c) != 2" (pointer_expression "*(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c)" * (cast_expression "(int *)(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c)" ( (binary_expression "PTR_shapetypes_57__type_000bd268 + uVar8 * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_57__type_000bd268 + uVar8 * 4" identifier + (binary_expression "uVar8 * 4" identifier * number_literal)) + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }" { comment (expression_statement "safefree(ptr);" (call_expression "safefree(ptr)" identifier (argument_list "(ptr)" ( identifier ))) ;) })) comment (expression_statement "safefree((void *)ptr[1]);" (call_expression "safefree((void *)ptr[1])" identifier (argument_list "((void *)ptr[1])" ( (cast_expression "(void *)ptr[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "ptr[1]" identifier [ number_literal ])) ))) ;) })) (expression_statement "uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8);" (assignment_expression "uVar8 = toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8)" identifier = (call_expression "toint((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8)" identifier (argument_list "((uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8)" ( (binary_expression "(uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3] | (uint)s[2] << 8" (binary_expression "(uint)*s << 0x18 | (uint)s[1] << 0x10 | (uint)s[3]" (binary_expression "(uint)*s << 0x18 | (uint)s[1] << 0x10" (binary_expression "(uint)*s << 0x18" (binary_expression "(uint)*s" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)s[1] << 0x10" (cast_expression "(uint)s[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "s[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)s[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "s[3]" identifier [ number_literal ]))) | (binary_expression "(uint)s[2] << 8" (cast_expression "(uint)s[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "s[2]" identifier [ number_literal ])) << number_literal)) )))) ;) (expression_statement "ptr[2] = uVar8;" (assignment_expression "ptr[2] = uVar8" (subscript_expression "ptr[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pbVar9 = s + 4;" (assignment_expression "pbVar9 = s + 4" identifier = (binary_expression "s + 4" identifier + number_literal)) ;) (expression_statement "pCVar11 = pCVar11 + -1;" (assignment_expression "pCVar11 = pCVar11 + -1" identifier = (binary_expression "pCVar11 + -1" identifier + number_literal)) ;) })) }) (else_clause "else if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }" else (if_statement "if (iVar2 == 3) {\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }\n          else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }" if (parenthesized_expression "(iVar2 == 3)" ( (binary_expression "iVar2 == 3" identifier == number_literal) )) (compound_statement "{\n            maxsize = (int)&used;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);\n            ptr[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }\n            pCVar11 = (Conf *)((int)pCVar11 - used);\n            pbVar9 = s + used;\n          }" { (expression_statement "maxsize = (int)&used;" (assignment_expression "maxsize = (int)&used" identifier = (cast_expression "(int)&used" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&used" & identifier))) ;) (expression_statement "uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11);" (assignment_expression "uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11)" identifier = (call_expression "(*(code *)PTR_filename_deserialise_000bd30c)(s,pCVar11)" (parenthesized_expression "(*(code *)PTR_filename_deserialise_000bd30c)" ( (pointer_expression "*(code *)PTR_filename_deserialise_000bd30c" * (cast_expression "(code *)PTR_filename_deserialise_000bd30c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(s,pCVar11)" ( identifier , identifier )))) ;) (expression_statement "ptr[2] = uVar8;" (assignment_expression "ptr[2] = uVar8" (subscript_expression "ptr[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n              if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }\n                    /* WARNING: Subroutine does not return */\n              safefree((void *)ptr[1]);\n            }" { (if_statement "if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }" if (parenthesized_expression "(*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2)" ( (binary_expression "*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2" (pointer_expression "*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c)" * (cast_expression "(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c)" ( (binary_expression "PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_57__type_000bd268 + *ptr * 4" identifier + (binary_expression "*ptr * 4" (pointer_expression "*ptr" * identifier) * number_literal)) + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                safefree(ptr);\n              }" { comment (expression_statement "safefree(ptr);" (call_expression "safefree(ptr)" identifier (argument_list "(ptr)" ( identifier ))) ;) })) comment (expression_statement "safefree((void *)ptr[1]);" (call_expression "safefree((void *)ptr[1])" identifier (argument_list "((void *)ptr[1])" ( (cast_expression "(void *)ptr[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "ptr[1]" identifier [ number_literal ])) ))) ;) })) (expression_statement "pCVar11 = (Conf *)((int)pCVar11 - used);" (assignment_expression "pCVar11 = (Conf *)((int)pCVar11 - used)" identifier = (cast_expression "(Conf *)((int)pCVar11 - used)" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pCVar11 - used)" ( (binary_expression "(int)pCVar11 - used" (cast_expression "(int)pCVar11" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "pbVar9 = s + used;" (assignment_expression "pbVar9 = s + used" identifier = (binary_expression "s + used" identifier + identifier)) ;) }) (else_clause "else {\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }" else (compound_statement "{\n            maxsize = (int)&used;\n            if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }\n          }" { (expression_statement "maxsize = (int)&used;" (assignment_expression "maxsize = (int)&used" identifier = (cast_expression "(int)&used" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&used" & identifier))) ;) (if_statement "if (iVar2 == 4) {\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }" if (parenthesized_expression "(iVar2 == 4)" ( (binary_expression "iVar2 == 4" identifier == number_literal) )) (compound_statement "{\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);\n              ptr[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }\n              pCVar11 = (Conf *)((int)pCVar11 - used);\n              pbVar9 = s + used;\n            }" { (expression_statement "uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11);" (assignment_expression "uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11)" identifier = (call_expression "(*(code *)PTR_fontspec_deserialise_000bd308)(s,pCVar11)" (parenthesized_expression "(*(code *)PTR_fontspec_deserialise_000bd308)" ( (pointer_expression "*(code *)PTR_fontspec_deserialise_000bd308" * (cast_expression "(code *)PTR_fontspec_deserialise_000bd308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(s,pCVar11)" ( identifier , identifier )))) ;) (expression_statement "ptr[2] = uVar8;" (assignment_expression "ptr[2] = uVar8" (subscript_expression "ptr[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }\n                    /* WARNING: Subroutine does not return */\n                safefree((void *)ptr[1]);\n              }" { (if_statement "if (*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2) {\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }" if (parenthesized_expression "(*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2)" ( (binary_expression "*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c) != 2" (pointer_expression "*(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c)" * (cast_expression "(int *)(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c)" ( (binary_expression "PTR_shapetypes_57__type_000bd268 + *ptr * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_57__type_000bd268 + *ptr * 4" identifier + (binary_expression "*ptr * 4" (pointer_expression "*ptr" * identifier) * number_literal)) + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                  safefree(ptr);\n                }" { comment (expression_statement "safefree(ptr);" (call_expression "safefree(ptr)" identifier (argument_list "(ptr)" ( identifier ))) ;) })) comment (expression_statement "safefree((void *)ptr[1]);" (call_expression "safefree((void *)ptr[1])" identifier (argument_list "((void *)ptr[1])" ( (cast_expression "(void *)ptr[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "ptr[1]" identifier [ number_literal ])) ))) ;) })) (expression_statement "pCVar11 = (Conf *)((int)pCVar11 - used);" (assignment_expression "pCVar11 = (Conf *)((int)pCVar11 - used)" identifier = (cast_expression "(Conf *)((int)pCVar11 - used)" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pCVar11 - used)" ( (binary_expression "(int)pCVar11 - used" (cast_expression "(int)pCVar11" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "pbVar9 = s + used;" (assignment_expression "pbVar9 = s + used" identifier = (binary_expression "s + used" identifier + identifier)) ;) })) }))))) }))) (expression_statement "(*pcVar13)(conf);" (call_expression "(*pcVar13)(conf)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(conf)" ( identifier ))) ;) (expression_statement "s = pbVar9 + 4;" (assignment_expression "s = pbVar9 + 4" identifier = (binary_expression "pbVar9 + 4" identifier + number_literal)) ;) (expression_statement "pbVar10 = pbVar9;" (assignment_expression "pbVar10 = pbVar9" identifier = identifier) ;) (if_statement "if ((int)pCVar11 < 4) break;" if (parenthesized_expression "((int)pCVar11 < 4)" ( (binary_expression "(int)pCVar11 < 4" (cast_expression "(int)pCVar11" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = (uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10 | (uint)pbVar9[3] |\n                (uint)pbVar9[2] << 8;" (assignment_expression "uVar8 = (uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10 | (uint)pbVar9[3] |\n                (uint)pbVar9[2] << 8" identifier = (binary_expression "(uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10 | (uint)pbVar9[3] |\n                (uint)pbVar9[2] << 8" (binary_expression "(uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10 | (uint)pbVar9[3]" (binary_expression "(uint)*pbVar9 << 0x18 | (uint)pbVar9[1] << 0x10" (binary_expression "(uint)*pbVar9 << 0x18" (binary_expression "(uint)*pbVar9" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)pbVar9[1] << 0x10" (cast_expression "(uint)pbVar9[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar9[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)pbVar9[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar9[3]" identifier [ number_literal ]))) | (binary_expression "(uint)pbVar9[2] << 8" (cast_expression "(uint)pbVar9[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar9[2]" identifier [ number_literal ])) << number_literal))) ;) (expression_statement "pCVar6 = (Conf *)maxsize;" (assignment_expression "pCVar6 = (Conf *)maxsize" identifier = (cast_expression "(Conf *)maxsize" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar10 = s;" (assignment_expression "pbVar10 = s" identifier = identifier) ;) (expression_statement "pCVar1 = pCVar11 + -1;" (assignment_expression "pCVar1 = pCVar11 + -1" identifier = (binary_expression "pCVar11 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar8 < 0xb8)" ( (binary_expression "uVar8 < 0xb8" identifier < number_literal) )) ;) })) })) (if_statement "if (iStack_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)pbVar10 - (int)vdata;\n  }" if (parenthesized_expression "(iStack_2c == *(int *)PTR___stack_chk_guard_000be114)" ( (binary_expression "iStack_2c == *(int *)PTR___stack_chk_guard_000be114" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_000be114" * (cast_expression "(int *)PTR___stack_chk_guard_000be114" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return (int)pbVar10 - (int)vdata;\n  }" { (return_statement "return (int)pbVar10 - (int)vdata;" return (binary_expression "(int)pbVar10 - (int)vdata" (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)vdata" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "iVar2 = iStack_2c;" (assignment_expression "iVar2 = iStack_2c" identifier = identifier) ;) (expression_statement "puVar12 = PTR___stack_chk_fail_000bddb4;" (assignment_expression "puVar12 = PTR___stack_chk_fail_000bddb4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000bddb4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bddb4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bddb4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000bddb4" * (cast_expression "(code *)PTR___stack_chk_fail_000bddb4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (in_a3 == 0) {\n    iVar4 = conf_get_int((Conf *)maxsize,*(int *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar12 + 0x99188);\n    if (0 < *(int *)(iVar2 + 0x24)) {\n      piVar5 = *(int **)(iVar2 + 0x30);\n      iVar7 = 0;\n      if (iVar4 != *piVar5) {\n        iVar7 = 0;\n        do {\n          iVar7 = iVar7 + 1;\n          piVar5 = piVar5 + 1;\n          if (iVar7 == *(int *)(iVar2 + 0x24)) goto LAB_0002422c;\n        } while (*piVar5 != iVar4);\n      }\n      iVar2 = (**(code **)(puVar12 + 0x99230))(iVar2,ptr,iVar7);\n      return iVar2;\n    }\n  }\n  else {\n    if (in_a3 != 2) {\n      return 2;\n    }\n    iVar4 = (**(code **)(puVar12 + 0x99234))();\n    if ((-1 < iVar4) && (iVar4 < *(int *)(iVar2 + 0x24))) {\n      piVar5 = (int *)(*(int *)(iVar2 + 0x30) + iVar4 * 4);\n      conf_set_int((Conf *)maxsize,*(int *)(iVar2 + 0x14),*piVar5);\n      return (int)piVar5;\n    }\n    (**(code **)(puVar12 + 0x9997c))\n              (*(int *)(puVar12 + 0x99188) + -0x5a54,*(int *)(puVar12 + 0x99188) + -0x5a60,0x28,\n               *(int *)(puVar12 + 0x99188) + -0x2fac);\nLAB_0002422c:\n    iVar7 = *(int *)(puVar12 + 0x99188);\n  }" if (parenthesized_expression "(in_a3 == 0)" ( (binary_expression "in_a3 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar4 = conf_get_int((Conf *)maxsize,*(int *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar12 + 0x99188);\n    if (0 < *(int *)(iVar2 + 0x24)) {\n      piVar5 = *(int **)(iVar2 + 0x30);\n      iVar7 = 0;\n      if (iVar4 != *piVar5) {\n        iVar7 = 0;\n        do {\n          iVar7 = iVar7 + 1;\n          piVar5 = piVar5 + 1;\n          if (iVar7 == *(int *)(iVar2 + 0x24)) goto LAB_0002422c;\n        } while (*piVar5 != iVar4);\n      }\n      iVar2 = (**(code **)(puVar12 + 0x99230))(iVar2,ptr,iVar7);\n      return iVar2;\n    }\n  }" { (expression_statement "iVar4 = conf_get_int((Conf *)maxsize,*(int *)(iVar2 + 0x14));" (assignment_expression "iVar4 = conf_get_int((Conf *)maxsize,*(int *)(iVar2 + 0x14))" identifier = (call_expression "conf_get_int((Conf *)maxsize,*(int *)(iVar2 + 0x14))" identifier (argument_list "((Conf *)maxsize,*(int *)(iVar2 + 0x14))" ( (cast_expression "(Conf *)maxsize" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "*(int *)(iVar2 + 0x14)" * (cast_expression "(int *)(iVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "iVar7 = *(int *)(puVar12 + 0x99188);" (assignment_expression "iVar7 = *(int *)(puVar12 + 0x99188)" identifier = (pointer_expression "*(int *)(puVar12 + 0x99188)" * (cast_expression "(int *)(puVar12 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x99188)" ( (binary_expression "puVar12 + 0x99188" identifier + number_literal) ))))) ;) (if_statement "if (0 < *(int *)(iVar2 + 0x24)) {\n      piVar5 = *(int **)(iVar2 + 0x30);\n      iVar7 = 0;\n      if (iVar4 != *piVar5) {\n        iVar7 = 0;\n        do {\n          iVar7 = iVar7 + 1;\n          piVar5 = piVar5 + 1;\n          if (iVar7 == *(int *)(iVar2 + 0x24)) goto LAB_0002422c;\n        } while (*piVar5 != iVar4);\n      }\n      iVar2 = (**(code **)(puVar12 + 0x99230))(iVar2,ptr,iVar7);\n      return iVar2;\n    }" if (parenthesized_expression "(0 < *(int *)(iVar2 + 0x24))" ( (binary_expression "0 < *(int *)(iVar2 + 0x24)" number_literal < (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) ))))) )) (compound_statement "{\n      piVar5 = *(int **)(iVar2 + 0x30);\n      iVar7 = 0;\n      if (iVar4 != *piVar5) {\n        iVar7 = 0;\n        do {\n          iVar7 = iVar7 + 1;\n          piVar5 = piVar5 + 1;\n          if (iVar7 == *(int *)(iVar2 + 0x24)) goto LAB_0002422c;\n        } while (*piVar5 != iVar4);\n      }\n      iVar2 = (**(code **)(puVar12 + 0x99230))(iVar2,ptr,iVar7);\n      return iVar2;\n    }" { (expression_statement "piVar5 = *(int **)(iVar2 + 0x30);" (assignment_expression "piVar5 = *(int **)(iVar2 + 0x30)" identifier = (pointer_expression "*(int **)(iVar2 + 0x30)" * (cast_expression "(int **)(iVar2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (if_statement "if (iVar4 != *piVar5) {\n        iVar7 = 0;\n        do {\n          iVar7 = iVar7 + 1;\n          piVar5 = piVar5 + 1;\n          if (iVar7 == *(int *)(iVar2 + 0x24)) goto LAB_0002422c;\n        } while (*piVar5 != iVar4);\n      }" if (parenthesized_expression "(iVar4 != *piVar5)" ( (binary_expression "iVar4 != *piVar5" identifier != (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n        iVar7 = 0;\n        do {\n          iVar7 = iVar7 + 1;\n          piVar5 = piVar5 + 1;\n          if (iVar7 == *(int *)(iVar2 + 0x24)) goto LAB_0002422c;\n        } while (*piVar5 != iVar4);\n      }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar7 = iVar7 + 1;\n          piVar5 = piVar5 + 1;\n          if (iVar7 == *(int *)(iVar2 + 0x24)) goto LAB_0002422c;\n        } while (*piVar5 != iVar4);" do (compound_statement "{\n          iVar7 = iVar7 + 1;\n          piVar5 = piVar5 + 1;\n          if (iVar7 == *(int *)(iVar2 + 0x24)) goto LAB_0002422c;\n        }" { (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "piVar5 = piVar5 + 1;" (assignment_expression "piVar5 = piVar5 + 1" identifier = (binary_expression "piVar5 + 1" identifier + number_literal)) ;) (if_statement "if (iVar7 == *(int *)(iVar2 + 0x24)) goto LAB_0002422c;" if (parenthesized_expression "(iVar7 == *(int *)(iVar2 + 0x24))" ( (binary_expression "iVar7 == *(int *)(iVar2 + 0x24)" identifier == (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0002422c;" goto statement_identifier ;)) }) while (parenthesized_expression "(*piVar5 != iVar4)" ( (binary_expression "*piVar5 != iVar4" (pointer_expression "*piVar5" * identifier) != identifier) )) ;) })) (expression_statement "iVar2 = (**(code **)(puVar12 + 0x99230))(iVar2,ptr,iVar7);" (assignment_expression "iVar2 = (**(code **)(puVar12 + 0x99230))(iVar2,ptr,iVar7)" identifier = (call_expression "(**(code **)(puVar12 + 0x99230))(iVar2,ptr,iVar7)" (parenthesized_expression "(**(code **)(puVar12 + 0x99230))" ( (pointer_expression "**(code **)(puVar12 + 0x99230)" * (pointer_expression "*(code **)(puVar12 + 0x99230)" * (cast_expression "(code **)(puVar12 + 0x99230)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + 0x99230)" ( (binary_expression "puVar12 + 0x99230" identifier + number_literal) ))))) )) (argument_list "(iVar2,ptr,iVar7)" ( identifier , identifier , identifier )))) ;) (return_statement "return iVar2;" return identifier ;) })) }) (else_clause "else {\n    if (in_a3 != 2) {\n      return 2;\n    }\n    iVar4 = (**(code **)(puVar12 + 0x99234))();\n    if ((-1 < iVar4) && (iVar4 < *(int *)(iVar2 + 0x24))) {\n      piVar5 = (int *)(*(int *)(iVar2 + 0x30) + iVar4 * 4);\n      conf_set_int((Conf *)maxsize,*(int *)(iVar2 + 0x14),*piVar5);\n      return (int)piVar5;\n    }\n    (**(code **)(puVar12 + 0x9997c))\n              (*(int *)(puVar12 + 0x99188) + -0x5a54,*(int *)(puVar12 + 0x99188) + -0x5a60,0x28,\n               *(int *)(puVar12 + 0x99188) + -0x2fac);\nLAB_0002422c:\n    iVar7 = *(int *)(puVar12 + 0x99188);\n  }" else (compound_statement "{\n    if (in_a3 != 2) {\n      return 2;\n    }\n    iVar4 = (**(code **)(puVar12 + 0x99234))();\n    if ((-1 < iVar4) && (iVar4 < *(int *)(iVar2 + 0x24))) {\n      piVar5 = (int *)(*(int *)(iVar2 + 0x30) + iVar4 * 4);\n      conf_set_int((Conf *)maxsize,*(int *)(iVar2 + 0x14),*piVar5);\n      return (int)piVar5;\n    }\n    (**(code **)(puVar12 + 0x9997c))\n              (*(int *)(puVar12 + 0x99188) + -0x5a54,*(int *)(puVar12 + 0x99188) + -0x5a60,0x28,\n               *(int *)(puVar12 + 0x99188) + -0x2fac);\nLAB_0002422c:\n    iVar7 = *(int *)(puVar12 + 0x99188);\n  }" { (if_statement "if (in_a3 != 2) {\n      return 2;\n    }" if (parenthesized_expression "(in_a3 != 2)" ( (binary_expression "in_a3 != 2" identifier != number_literal) )) (compound_statement "{\n      return 2;\n    }" { (return_statement "return 2;" return number_literal ;) })) (expression_statement "iVar4 = (**(code **)(puVar12 + 0x99234))();" (assignment_expression "iVar4 = (**(code **)(puVar12 + 0x99234))()" identifier = (call_expression "(**(code **)(puVar12 + 0x99234))()" (parenthesized_expression "(**(code **)(puVar12 + 0x99234))" ( (pointer_expression "**(code **)(puVar12 + 0x99234)" * (pointer_expression "*(code **)(puVar12 + 0x99234)" * (cast_expression "(code **)(puVar12 + 0x99234)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + 0x99234)" ( (binary_expression "puVar12 + 0x99234" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if ((-1 < iVar4) && (iVar4 < *(int *)(iVar2 + 0x24))) {\n      piVar5 = (int *)(*(int *)(iVar2 + 0x30) + iVar4 * 4);\n      conf_set_int((Conf *)maxsize,*(int *)(iVar2 + 0x14),*piVar5);\n      return (int)piVar5;\n    }" if (parenthesized_expression "((-1 < iVar4) && (iVar4 < *(int *)(iVar2 + 0x24)))" ( (binary_expression "(-1 < iVar4) && (iVar4 < *(int *)(iVar2 + 0x24))" (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) && (parenthesized_expression "(iVar4 < *(int *)(iVar2 + 0x24))" ( (binary_expression "iVar4 < *(int *)(iVar2 + 0x24)" identifier < (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      piVar5 = (int *)(*(int *)(iVar2 + 0x30) + iVar4 * 4);\n      conf_set_int((Conf *)maxsize,*(int *)(iVar2 + 0x14),*piVar5);\n      return (int)piVar5;\n    }" { (expression_statement "piVar5 = (int *)(*(int *)(iVar2 + 0x30) + iVar4 * 4);" (assignment_expression "piVar5 = (int *)(*(int *)(iVar2 + 0x30) + iVar4 * 4)" identifier = (cast_expression "(int *)(*(int *)(iVar2 + 0x30) + iVar4 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x30) + iVar4 * 4)" ( (binary_expression "*(int *)(iVar2 + 0x30) + iVar4 * 4" (pointer_expression "*(int *)(iVar2 + 0x30)" * (cast_expression "(int *)(iVar2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) )))) + (binary_expression "iVar4 * 4" identifier * number_literal)) )))) ;) (expression_statement "conf_set_int((Conf *)maxsize,*(int *)(iVar2 + 0x14),*piVar5);" (call_expression "conf_set_int((Conf *)maxsize,*(int *)(iVar2 + 0x14),*piVar5)" identifier (argument_list "((Conf *)maxsize,*(int *)(iVar2 + 0x14),*piVar5)" ( (cast_expression "(Conf *)maxsize" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "*(int *)(iVar2 + 0x14)" * (cast_expression "(int *)(iVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) , (pointer_expression "*piVar5" * identifier) ))) ;) (return_statement "return (int)piVar5;" return (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) ;) })) (expression_statement "(**(code **)(puVar12 + 0x9997c))\n              (*(int *)(puVar12 + 0x99188) + -0x5a54,*(int *)(puVar12 + 0x99188) + -0x5a60,0x28,\n               *(int *)(puVar12 + 0x99188) + -0x2fac);" (call_expression "(**(code **)(puVar12 + 0x9997c))\n              (*(int *)(puVar12 + 0x99188) + -0x5a54,*(int *)(puVar12 + 0x99188) + -0x5a60,0x28,\n               *(int *)(puVar12 + 0x99188) + -0x2fac)" (parenthesized_expression "(**(code **)(puVar12 + 0x9997c))" ( (pointer_expression "**(code **)(puVar12 + 0x9997c)" * (pointer_expression "*(code **)(puVar12 + 0x9997c)" * (cast_expression "(code **)(puVar12 + 0x9997c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + 0x9997c)" ( (binary_expression "puVar12 + 0x9997c" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar12 + 0x99188) + -0x5a54,*(int *)(puVar12 + 0x99188) + -0x5a60,0x28,\n               *(int *)(puVar12 + 0x99188) + -0x2fac)" ( (binary_expression "*(int *)(puVar12 + 0x99188) + -0x5a54" (pointer_expression "*(int *)(puVar12 + 0x99188)" * (cast_expression "(int *)(puVar12 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x99188)" ( (binary_expression "puVar12 + 0x99188" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar12 + 0x99188) + -0x5a60" (pointer_expression "*(int *)(puVar12 + 0x99188)" * (cast_expression "(int *)(puVar12 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x99188)" ( (binary_expression "puVar12 + 0x99188" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar12 + 0x99188) + -0x2fac" (pointer_expression "*(int *)(puVar12 + 0x99188)" * (cast_expression "(int *)(puVar12 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x99188)" ( (binary_expression "puVar12 + 0x99188" identifier + number_literal) )))) + number_literal) ))) ;) (labeled_statement "LAB_0002422c:\n    iVar7 = *(int *)(puVar12 + 0x99188);" statement_identifier : (expression_statement "iVar7 = *(int *)(puVar12 + 0x99188);" (assignment_expression "iVar7 = *(int *)(puVar12 + 0x99188)" identifier = (pointer_expression "*(int *)(puVar12 + 0x99188)" * (cast_expression "(int *)(puVar12 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x99188)" ( (binary_expression "puVar12 + 0x99188" identifier + number_literal) ))))) ;)) }))) (expression_statement "iVar7 = iVar7 + -0x2fac;" (assignment_expression "iVar7 = iVar7 + -0x2fac" identifier = (binary_expression "iVar7 + -0x2fac" identifier + number_literal)) ;) (expression_statement "pCVar6 = (Conf *)0x24;" (assignment_expression "pCVar6 = (Conf *)0x24" identifier = (cast_expression "(Conf *)0x24" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar4 = *(int *)(puVar12 + 0x99188) + -0x5a60;" (assignment_expression "iVar4 = *(int *)(puVar12 + 0x99188) + -0x5a60" identifier = (binary_expression "*(int *)(puVar12 + 0x99188) + -0x5a60" (pointer_expression "*(int *)(puVar12 + 0x99188)" * (cast_expression "(int *)(puVar12 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x99188)" ( (binary_expression "puVar12 + 0x99188" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "iVar2 = *(int *)(puVar12 + 0x99188) + -0x5a24;" (assignment_expression "iVar2 = *(int *)(puVar12 + 0x99188) + -0x5a24" identifier = (binary_expression "*(int *)(puVar12 + 0x99188) + -0x5a24" (pointer_expression "*(int *)(puVar12 + 0x99188)" * (cast_expression "(int *)(puVar12 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x99188)" ( (binary_expression "puVar12 + 0x99188" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "pcVar13 = *(code **)(puVar12 + 0x9997c);" (assignment_expression "pcVar13 = *(code **)(puVar12 + 0x9997c)" identifier = (pointer_expression "*(code **)(puVar12 + 0x9997c)" * (cast_expression "(code **)(puVar12 + 0x9997c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + 0x9997c)" ( (binary_expression "puVar12 + 0x9997c" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar13)(iVar2,iVar4);" (call_expression "(*pcVar13)(iVar2,iVar4)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar2,iVar4)" ( identifier , identifier ))) ;) (if_statement "if (iVar7 == 0) {\n    iVar7 = conf_get_int(pCVar6,0x4e);\n    if (iVar7 == 0) {\n      iVar7 = conf_get_int(pCVar6,0x4d);\n      uVar8 = (uint)(iVar7 != 0);\n    }\n    else {\n      uVar8 = 2;\n    }\n    if ((int)uVar8 < *(int *)(iVar2 + 0x24)) {\n      iVar2 = (**(code **)(pcVar13 + 0x990bc))(iVar2,iVar4);\n      return iVar2;\n    }\n    (**(code **)(pcVar13 + 0x99808))\n              (*(int *)(pcVar13 + 0x99014) + -0x5a24,*(int *)(pcVar13 + 0x99014) + -0x5a60,0x151,\n               *(int *)(pcVar13 + 0x99014) + -0x3008);\n  }\n  else if (iVar7 != 2) {\n    return 2;\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar7 = conf_get_int(pCVar6,0x4e);\n    if (iVar7 == 0) {\n      iVar7 = conf_get_int(pCVar6,0x4d);\n      uVar8 = (uint)(iVar7 != 0);\n    }\n    else {\n      uVar8 = 2;\n    }\n    if ((int)uVar8 < *(int *)(iVar2 + 0x24)) {\n      iVar2 = (**(code **)(pcVar13 + 0x990bc))(iVar2,iVar4);\n      return iVar2;\n    }\n    (**(code **)(pcVar13 + 0x99808))\n              (*(int *)(pcVar13 + 0x99014) + -0x5a24,*(int *)(pcVar13 + 0x99014) + -0x5a60,0x151,\n               *(int *)(pcVar13 + 0x99014) + -0x3008);\n  }" { (expression_statement "iVar7 = conf_get_int(pCVar6,0x4e);" (assignment_expression "iVar7 = conf_get_int(pCVar6,0x4e)" identifier = (call_expression "conf_get_int(pCVar6,0x4e)" identifier (argument_list "(pCVar6,0x4e)" ( identifier , number_literal )))) ;) (if_statement "if (iVar7 == 0) {\n      iVar7 = conf_get_int(pCVar6,0x4d);\n      uVar8 = (uint)(iVar7 != 0);\n    }\n    else {\n      uVar8 = 2;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar7 = conf_get_int(pCVar6,0x4d);\n      uVar8 = (uint)(iVar7 != 0);\n    }" { (expression_statement "iVar7 = conf_get_int(pCVar6,0x4d);" (assignment_expression "iVar7 = conf_get_int(pCVar6,0x4d)" identifier = (call_expression "conf_get_int(pCVar6,0x4d)" identifier (argument_list "(pCVar6,0x4d)" ( identifier , number_literal )))) ;) (expression_statement "uVar8 = (uint)(iVar7 != 0);" (assignment_expression "uVar8 = (uint)(iVar7 != 0)" identifier = (call_expression "(uint)(iVar7 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )))) ;) }) (else_clause "else {\n      uVar8 = 2;\n    }" else (compound_statement "{\n      uVar8 = 2;\n    }" { (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" identifier = number_literal) ;) }))) (if_statement "if ((int)uVar8 < *(int *)(iVar2 + 0x24)) {\n      iVar2 = (**(code **)(pcVar13 + 0x990bc))(iVar2,iVar4);\n      return iVar2;\n    }" if (parenthesized_expression "((int)uVar8 < *(int *)(iVar2 + 0x24))" ( (binary_expression "(int)uVar8 < *(int *)(iVar2 + 0x24)" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) ))))) )) (compound_statement "{\n      iVar2 = (**(code **)(pcVar13 + 0x990bc))(iVar2,iVar4);\n      return iVar2;\n    }" { (expression_statement "iVar2 = (**(code **)(pcVar13 + 0x990bc))(iVar2,iVar4);" (assignment_expression "iVar2 = (**(code **)(pcVar13 + 0x990bc))(iVar2,iVar4)" identifier = (call_expression "(**(code **)(pcVar13 + 0x990bc))(iVar2,iVar4)" (parenthesized_expression "(**(code **)(pcVar13 + 0x990bc))" ( (pointer_expression "**(code **)(pcVar13 + 0x990bc)" * (pointer_expression "*(code **)(pcVar13 + 0x990bc)" * (cast_expression "(code **)(pcVar13 + 0x990bc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar13 + 0x990bc)" ( (binary_expression "pcVar13 + 0x990bc" identifier + number_literal) ))))) )) (argument_list "(iVar2,iVar4)" ( identifier , identifier )))) ;) (return_statement "return iVar2;" return identifier ;) })) (expression_statement "(**(code **)(pcVar13 + 0x99808))\n              (*(int *)(pcVar13 + 0x99014) + -0x5a24,*(int *)(pcVar13 + 0x99014) + -0x5a60,0x151,\n               *(int *)(pcVar13 + 0x99014) + -0x3008);" (call_expression "(**(code **)(pcVar13 + 0x99808))\n              (*(int *)(pcVar13 + 0x99014) + -0x5a24,*(int *)(pcVar13 + 0x99014) + -0x5a60,0x151,\n               *(int *)(pcVar13 + 0x99014) + -0x3008)" (parenthesized_expression "(**(code **)(pcVar13 + 0x99808))" ( (pointer_expression "**(code **)(pcVar13 + 0x99808)" * (pointer_expression "*(code **)(pcVar13 + 0x99808)" * (cast_expression "(code **)(pcVar13 + 0x99808)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar13 + 0x99808)" ( (binary_expression "pcVar13 + 0x99808" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar13 + 0x99014) + -0x5a24,*(int *)(pcVar13 + 0x99014) + -0x5a60,0x151,\n               *(int *)(pcVar13 + 0x99014) + -0x3008)" ( (binary_expression "*(int *)(pcVar13 + 0x99014) + -0x5a24" (pointer_expression "*(int *)(pcVar13 + 0x99014)" * (cast_expression "(int *)(pcVar13 + 0x99014)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x99014)" ( (binary_expression "pcVar13 + 0x99014" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(pcVar13 + 0x99014) + -0x5a60" (pointer_expression "*(int *)(pcVar13 + 0x99014)" * (cast_expression "(int *)(pcVar13 + 0x99014)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x99014)" ( (binary_expression "pcVar13 + 0x99014" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(pcVar13 + 0x99014) + -0x3008" (pointer_expression "*(int *)(pcVar13 + 0x99014)" * (cast_expression "(int *)(pcVar13 + 0x99014)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x99014)" ( (binary_expression "pcVar13 + 0x99014" identifier + number_literal) )))) + number_literal) ))) ;) }) (else_clause "else if (iVar7 != 2) {\n    return 2;\n  }" else (if_statement "if (iVar7 != 2) {\n    return 2;\n  }" if (parenthesized_expression "(iVar7 != 2)" ( (binary_expression "iVar7 != 2" identifier != number_literal) )) (compound_statement "{\n    return 2;\n  }" { (return_statement "return 2;" return number_literal ;) })))) (expression_statement "iVar4 = (**(code **)(pcVar13 + 0x990c0))();" (assignment_expression "iVar4 = (**(code **)(pcVar13 + 0x990c0))()" identifier = (call_expression "(**(code **)(pcVar13 + 0x990c0))()" (parenthesized_expression "(**(code **)(pcVar13 + 0x990c0))" ( (pointer_expression "**(code **)(pcVar13 + 0x990c0)" * (pointer_expression "*(code **)(pcVar13 + 0x990c0)" * (cast_expression "(code **)(pcVar13 + 0x990c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar13 + 0x990c0)" ( (binary_expression "pcVar13 + 0x990c0" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if ((iVar4 < 0) || (*(int *)(iVar2 + 0x24) <= iVar4)) {\n    iVar4 = (**(code **)(pcVar13 + 0x99808))\n                      (*(int *)(pcVar13 + 0x99014) + -0x5a54,*(int *)(pcVar13 + 0x99014) + -0x5a60,\n                       0x155,*(int *)(pcVar13 + 0x99014) + -0x3008);\n  }\n  else if (iVar4 != 2) {\n    conf_set_int(pCVar6,0x4d,(uint)(iVar4 != 0));\n    conf_set_int(pCVar6,0x4e,0);\n    return iVar4;\n  }" if (parenthesized_expression "((iVar4 < 0) || (*(int *)(iVar2 + 0x24) <= iVar4))" ( (binary_expression "(iVar4 < 0) || (*(int *)(iVar2 + 0x24) <= iVar4)" (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) || (parenthesized_expression "(*(int *)(iVar2 + 0x24) <= iVar4)" ( (binary_expression "*(int *)(iVar2 + 0x24) <= iVar4" (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) )))) <= identifier) ))) )) (compound_statement "{\n    iVar4 = (**(code **)(pcVar13 + 0x99808))\n                      (*(int *)(pcVar13 + 0x99014) + -0x5a54,*(int *)(pcVar13 + 0x99014) + -0x5a60,\n                       0x155,*(int *)(pcVar13 + 0x99014) + -0x3008);\n  }" { (expression_statement "iVar4 = (**(code **)(pcVar13 + 0x99808))\n                      (*(int *)(pcVar13 + 0x99014) + -0x5a54,*(int *)(pcVar13 + 0x99014) + -0x5a60,\n                       0x155,*(int *)(pcVar13 + 0x99014) + -0x3008);" (assignment_expression "iVar4 = (**(code **)(pcVar13 + 0x99808))\n                      (*(int *)(pcVar13 + 0x99014) + -0x5a54,*(int *)(pcVar13 + 0x99014) + -0x5a60,\n                       0x155,*(int *)(pcVar13 + 0x99014) + -0x3008)" identifier = (call_expression "(**(code **)(pcVar13 + 0x99808))\n                      (*(int *)(pcVar13 + 0x99014) + -0x5a54,*(int *)(pcVar13 + 0x99014) + -0x5a60,\n                       0x155,*(int *)(pcVar13 + 0x99014) + -0x3008)" (parenthesized_expression "(**(code **)(pcVar13 + 0x99808))" ( (pointer_expression "**(code **)(pcVar13 + 0x99808)" * (pointer_expression "*(code **)(pcVar13 + 0x99808)" * (cast_expression "(code **)(pcVar13 + 0x99808)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar13 + 0x99808)" ( (binary_expression "pcVar13 + 0x99808" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar13 + 0x99014) + -0x5a54,*(int *)(pcVar13 + 0x99014) + -0x5a60,\n                       0x155,*(int *)(pcVar13 + 0x99014) + -0x3008)" ( (binary_expression "*(int *)(pcVar13 + 0x99014) + -0x5a54" (pointer_expression "*(int *)(pcVar13 + 0x99014)" * (cast_expression "(int *)(pcVar13 + 0x99014)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x99014)" ( (binary_expression "pcVar13 + 0x99014" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(pcVar13 + 0x99014) + -0x5a60" (pointer_expression "*(int *)(pcVar13 + 0x99014)" * (cast_expression "(int *)(pcVar13 + 0x99014)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x99014)" ( (binary_expression "pcVar13 + 0x99014" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(pcVar13 + 0x99014) + -0x3008" (pointer_expression "*(int *)(pcVar13 + 0x99014)" * (cast_expression "(int *)(pcVar13 + 0x99014)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x99014)" ( (binary_expression "pcVar13 + 0x99014" identifier + number_literal) )))) + number_literal) )))) ;) }) (else_clause "else if (iVar4 != 2) {\n    conf_set_int(pCVar6,0x4d,(uint)(iVar4 != 0));\n    conf_set_int(pCVar6,0x4e,0);\n    return iVar4;\n  }" else (if_statement "if (iVar4 != 2) {\n    conf_set_int(pCVar6,0x4d,(uint)(iVar4 != 0));\n    conf_set_int(pCVar6,0x4e,0);\n    return iVar4;\n  }" if (parenthesized_expression "(iVar4 != 2)" ( (binary_expression "iVar4 != 2" identifier != number_literal) )) (compound_statement "{\n    conf_set_int(pCVar6,0x4d,(uint)(iVar4 != 0));\n    conf_set_int(pCVar6,0x4e,0);\n    return iVar4;\n  }" { (expression_statement "conf_set_int(pCVar6,0x4d,(uint)(iVar4 != 0));" (call_expression "conf_set_int(pCVar6,0x4d,(uint)(iVar4 != 0))" identifier (argument_list "(pCVar6,0x4d,(uint)(iVar4 != 0))" ( identifier , number_literal , (call_expression "(uint)(iVar4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) ))) ))) ;) (expression_statement "conf_set_int(pCVar6,0x4e,0);" (call_expression "conf_set_int(pCVar6,0x4e,0)" identifier (argument_list "(pCVar6,0x4e,0)" ( identifier , number_literal , number_literal ))) ;) (return_statement "return iVar4;" return identifier ;) })))) (expression_statement "conf_set_int(pCVar6,0x4d,0);" (call_expression "conf_set_int(pCVar6,0x4d,0)" identifier (argument_list "(pCVar6,0x4d,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "conf_set_int(pCVar6,0x4e,1);" (call_expression "conf_set_int(pCVar6,0x4e,1)" identifier (argument_list "(pCVar6,0x4e,1)" ( identifier , number_literal , number_literal ))) ;) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit "int conf_deserialise(undefined4 param_1,uint *param_2,uint *param_3,int param_4)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  uint *puVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  uint local_30;\n  int local_2c;\n  \n  puVar13 = PTR_shapetypes_456__000bd268;\n  local_2c = *(int *)PTR___stack_chk_guard_000be114;\n  puVar1 = param_2;\n  puVar10 = param_2;\n  if (3 < (int)param_3) {\n    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;\n    puVar9 = param_2 + 1;\n    puVar10 = puVar9;\n    if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)puVar10 - (int)param_2;\n  }\n  iVar2 = local_2c;\n  puVar13 = PTR___stack_chk_fail_000bddb4;\n  (*(code *)PTR___stack_chk_fail_000bddb4)();\n  if (param_4 == 0) {\n    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar13 + 0x99188);\n    if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }\n    piVar4 = *(int **)(iVar2 + 0x30);\n    iVar7 = 0;\n    if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }\n    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);\n  }\n  else {\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }\n  return iVar3;\n}\n\n" (function_definition "int conf_deserialise(undefined4 param_1,uint *param_2,uint *param_3,int param_4)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  uint *puVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  uint local_30;\n  int local_2c;\n  \n  puVar13 = PTR_shapetypes_456__000bd268;\n  local_2c = *(int *)PTR___stack_chk_guard_000be114;\n  puVar1 = param_2;\n  puVar10 = param_2;\n  if (3 < (int)param_3) {\n    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;\n    puVar9 = param_2 + 1;\n    puVar10 = puVar9;\n    if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)puVar10 - (int)param_2;\n  }\n  iVar2 = local_2c;\n  puVar13 = PTR___stack_chk_fail_000bddb4;\n  (*(code *)PTR___stack_chk_fail_000bddb4)();\n  if (param_4 == 0) {\n    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar13 + 0x99188);\n    if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }\n    piVar4 = *(int **)(iVar2 + 0x30);\n    iVar7 = 0;\n    if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }\n    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);\n  }\n  else {\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }\n  return iVar3;\n}" primitive_type (function_declarator "conf_deserialise(undefined4 param_1,uint *param_2,uint *param_3,int param_4)" identifier (parameter_list "(undefined4 param_1,uint *param_2,uint *param_3,int param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  uint *puVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  uint local_30;\n  int local_2c;\n  \n  puVar13 = PTR_shapetypes_456__000bd268;\n  local_2c = *(int *)PTR___stack_chk_guard_000be114;\n  puVar1 = param_2;\n  puVar10 = param_2;\n  if (3 < (int)param_3) {\n    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;\n    puVar9 = param_2 + 1;\n    puVar10 = puVar9;\n    if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)puVar10 - (int)param_2;\n  }\n  iVar2 = local_2c;\n  puVar13 = PTR___stack_chk_fail_000bddb4;\n  (*(code *)PTR___stack_chk_fail_000bddb4)();\n  if (param_4 == 0) {\n    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar13 + 0x99188);\n    if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }\n    piVar4 = *(int **)(iVar2 + 0x30);\n    iVar7 = 0;\n    if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }\n    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);\n  }\n  else {\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }\n  return iVar3;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar13 = PTR_shapetypes_456__000bd268;" (assignment_expression "puVar13 = PTR_shapetypes_456__000bd268" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000be114;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000be114" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000be114" * (cast_expression "(int *)PTR___stack_chk_guard_000be114" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar1 = param_2;" (assignment_expression "puVar1 = param_2" identifier = identifier) ;) (expression_statement "puVar10 = param_2;" (assignment_expression "puVar10 = param_2" identifier = identifier) ;) (if_statement "if (3 < (int)param_3) {\n    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;\n    puVar9 = param_2 + 1;\n    puVar10 = puVar9;\n    if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }" if (parenthesized_expression "(3 < (int)param_3)" ( (binary_expression "3 < (int)param_3" number_literal < (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;\n    puVar9 = param_2 + 1;\n    puVar10 = puVar9;\n    if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }" { (expression_statement "uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;" (assignment_expression "uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8" identifier = (binary_expression "(uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8" (binary_expression "(uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2" (binary_expression "(uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10" (binary_expression "(uint)*(byte *)param_2 << 0x18" (binary_expression "(uint)*(byte *)param_2" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) << number_literal) | (binary_expression "(uint)*(byte *)((int)param_2 + 1) << 0x10" (binary_expression "(uint)*(byte *)((int)param_2 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 1)" ( (binary_expression "(int)param_2 + 1" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)(byte)*param_2" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) | (binary_expression "(uint)*(byte *)((int)param_2 + 2) << 8" (binary_expression "(uint)*(byte *)((int)param_2 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 2)" ( (binary_expression "(int)param_2 + 2" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal))) ;) (expression_statement "puVar9 = param_2 + 1;" (assignment_expression "puVar9 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (if_statement "if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }" if (parenthesized_expression "(uVar8 < 0xb8)" ( (binary_expression "uVar8 < 0xb8" identifier < number_literal) )) (compound_statement "{\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }" { (expression_statement "pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c)" identifier = (cast_expression "(code *)(PTR_LAB_000bd204 + 0x218c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000bd204 + 0x218c)" ( (binary_expression "PTR_LAB_000bd204 + 0x218c" identifier + number_literal) )))) ;) (expression_statement "puVar6 = param_2;" (assignment_expression "puVar6 = param_2" identifier = identifier) ;) (expression_statement "puVar11 = param_3;" (assignment_expression "puVar11 = param_3" identifier = identifier) ;) (expression_statement "puVar12 = param_3 + -1;" (assignment_expression "puVar12 = param_3 + -1" identifier = (binary_expression "param_3 + -1" identifier + number_literal)) ;) (do_statement "do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);" do (compound_statement "{\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      }" { (expression_statement "puVar5 = (uint *)0xc;" (assignment_expression "puVar5 = (uint *)0xc" identifier = (cast_expression "(uint *)0xc" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar1 = (uint *)safemalloc(1,0xc);" (assignment_expression "puVar1 = (uint *)safemalloc(1,0xc)" identifier = (cast_expression "(uint *)safemalloc(1,0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(1,0xc)" identifier (argument_list "(1,0xc)" ( number_literal , number_literal ))))) ;) (expression_statement "*puVar1 = uVar8;" (assignment_expression "*puVar1 = uVar8" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);" (assignment_expression "iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c)" identifier = (pointer_expression "*(int *)(puVar13 + uVar8 * 4 + -0x5d4c)" * (cast_expression "(int *)(puVar13 + uVar8 * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + uVar8 * 4 + -0x5d4c)" ( (binary_expression "puVar13 + uVar8 * 4 + -0x5d4c" (binary_expression "puVar13 + uVar8 * 4" identifier + (binary_expression "uVar8 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (if_statement "if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }" { (if_statement "if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }" if (parenthesized_expression "((int)puVar12 < 4)" ( (binary_expression "(int)puVar12 < 4" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }" { (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "puVar1 = puVar5;" (assignment_expression "puVar1 = puVar5" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);" (assignment_expression "uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8)" identifier = (call_expression "toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8)" identifier (argument_list "((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8)" ( (binary_expression "(uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8" (binary_expression "(uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)" (binary_expression "(uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10" (binary_expression "(uint)*(byte *)(puVar6 + 1) << 0x18" (binary_expression "(uint)*(byte *)(puVar6 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(puVar6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 1)" ( (binary_expression "puVar6 + 1" identifier + number_literal) )))) << number_literal) | (binary_expression "(uint)*(byte *)((int)puVar6 + 5) << 0x10" (binary_expression "(uint)*(byte *)((int)puVar6 + 5)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar6 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 5)" ( (binary_expression "(int)puVar6 + 5" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)*(byte *)((int)puVar6 + 7)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar6 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 7)" ( (binary_expression "(int)puVar6 + 7" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) | (binary_expression "(uint)*(byte *)((int)puVar6 + 6) << 8" (binary_expression "(uint)*(byte *)((int)puVar6 + 6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar6 + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 6)" ( (binary_expression "(int)puVar6 + 6" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) )))) ;) (expression_statement "puVar1[1] = uVar8;" (assignment_expression "puVar1[1] = uVar8" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9 = puVar6 + 2;" (assignment_expression "puVar9 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar11 + -2;" (assignment_expression "puVar12 = puVar11 + -2" identifier = (binary_expression "puVar11 + -2" identifier + number_literal)) ;) }) (else_clause "else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }" else (compound_statement "{\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }" { (expression_statement "param_3 = puVar12;" (assignment_expression "param_3 = puVar12" identifier = identifier) ;) (if_statement "if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }" if (parenthesized_expression "(iVar2 == 2)" ( (binary_expression "iVar2 == 2" identifier == number_literal) )) (compound_statement "{\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }" { (expression_statement "puVar5 = (uint *)0x0;" (assignment_expression "puVar5 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);" (assignment_expression "iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12)" identifier = (call_expression "(*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12)" (parenthesized_expression "(*(code *)PTR_memchr_000bdf64)" ( (pointer_expression "*(code *)PTR_memchr_000bdf64" * (cast_expression "(code *)PTR_memchr_000bdf64" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9,0,puVar12)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }" { (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "puVar1 = puVar5;" (assignment_expression "puVar1 = puVar5" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "uVar8 = dupstr(puVar9);" (assignment_expression "uVar8 = dupstr(puVar9)" identifier = (call_expression "dupstr(puVar9)" identifier (argument_list "(puVar9)" ( identifier )))) ;) (expression_statement "puVar1[1] = uVar8;" (assignment_expression "puVar1[1] = uVar8" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));" (assignment_expression "puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9))" identifier = (cast_expression "(uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 - ((iVar2 + 1) - (int)puVar9))" ( (binary_expression "(int)puVar12 - ((iVar2 + 1) - (int)puVar9)" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "((iVar2 + 1) - (int)puVar9)" ( (binary_expression "(iVar2 + 1) - (int)puVar9" (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )) - (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "puVar9 = (uint *)(iVar2 + 1);" (assignment_expression "puVar9 = (uint *)(iVar2 + 1)" identifier = (cast_expression "(uint *)(iVar2 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) ;) })) }))) (expression_statement "uVar8 = *puVar1;" (assignment_expression "uVar8 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);" (assignment_expression "iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c)" identifier = (pointer_expression "*(int *)(puVar13 + uVar8 * 4 + -0x602c)" * (cast_expression "(int *)(puVar13 + uVar8 * 4 + -0x602c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + uVar8 * 4 + -0x602c)" ( (binary_expression "puVar13 + uVar8 * 4 + -0x602c" (binary_expression "puVar13 + uVar8 * 4" identifier + (binary_expression "uVar8 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (if_statement "if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }" if (parenthesized_expression "(iVar2 == 2)" ( (binary_expression "iVar2 == 2" identifier == number_literal) )) (compound_statement "{\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }" { (expression_statement "puVar6 = (uint *)0x0;" (assignment_expression "puVar6 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_3 = puVar12;" (assignment_expression "param_3 = puVar12" identifier = identifier) ;) (expression_statement "iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);" (assignment_expression "iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12)" identifier = (call_expression "(*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12)" (parenthesized_expression "(*(code *)PTR_memchr_000bdf64)" ( (pointer_expression "*(code *)PTR_memchr_000bdf64" * (cast_expression "(code *)PTR_memchr_000bdf64" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9,0,puVar12)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }" { (if_statement "if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }" if (parenthesized_expression "(*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2)" ( (binary_expression "*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2" (pointer_expression "*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" * (cast_expression "(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" ( (binary_expression "PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_456__000bd268 + uVar8 * 4" identifier + (binary_expression "uVar8 * 4" identifier * number_literal)) + number_literal) )))) == number_literal) )) (compound_statement "{\n              safefree(puVar1[1]);\n            }" { (expression_statement "safefree(puVar1[1]);" (call_expression "safefree(puVar1[1])" identifier (argument_list "(puVar1[1])" ( (subscript_expression "puVar1[1]" identifier [ number_literal ]) ))) ;) })) (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "uVar8 = dupstr(puVar9);" (assignment_expression "uVar8 = dupstr(puVar9)" identifier = (call_expression "dupstr(puVar9)" identifier (argument_list "(puVar9)" ( identifier )))) ;) (expression_statement "puVar1[2] = uVar8;" (assignment_expression "puVar1[2] = uVar8" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6 = (uint *)(iVar2 + 1);" (assignment_expression "puVar6 = (uint *)(iVar2 + 1)" identifier = (cast_expression "(uint *)(iVar2 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));" (assignment_expression "puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9))" identifier = (cast_expression "(uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 - ((int)puVar6 - (int)puVar9))" ( (binary_expression "(int)puVar12 - ((int)puVar6 - (int)puVar9)" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "((int)puVar6 - (int)puVar9)" ( (binary_expression "(int)puVar6 - (int)puVar9" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) }) (else_clause "else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }" else (compound_statement "{\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }" { (expression_statement "puVar6 = puVar9;" (assignment_expression "puVar6 = puVar9" identifier = identifier) ;) (if_statement "if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" if (parenthesized_expression "(iVar2 < 3)" ( (binary_expression "iVar2 < 3" identifier < number_literal) )) (compound_statement "{\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }" { (if_statement "if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (compound_statement "{\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }" { (if_statement "if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }" if (parenthesized_expression "((int)puVar12 < 4)" ( (binary_expression "(int)puVar12 < 4" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }" { (if_statement "if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }" if (parenthesized_expression "(*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2)" ( (binary_expression "*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2" (pointer_expression "*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" * (cast_expression "(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" ( (binary_expression "PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_456__000bd268 + uVar8 * 4" identifier + (binary_expression "uVar8 * 4" identifier * number_literal)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                  safefree(puVar1[1]);\n                }" { (expression_statement "safefree(puVar1[1]);" (call_expression "safefree(puVar1[1])" identifier (argument_list "(puVar1[1])" ( (subscript_expression "puVar1[1]" identifier [ number_literal ]) ))) ;) })) (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "puVar1 = puVar5;" (assignment_expression "puVar1 = puVar5" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);" (assignment_expression "uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8)" identifier = (call_expression "toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8)" identifier (argument_list "((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8)" ( (binary_expression "(uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8" (binary_expression "(uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9" (binary_expression "(uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10" (binary_expression "(uint)*(byte *)puVar9 << 0x18" (binary_expression "(uint)*(byte *)puVar9" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)puVar9" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) << number_literal) | (binary_expression "(uint)*(byte *)((int)puVar9 + 1) << 0x10" (binary_expression "(uint)*(byte *)((int)puVar9 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar9 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 1)" ( (binary_expression "(int)puVar9 + 1" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)(byte)*puVar9" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) | (binary_expression "(uint)*(byte *)((int)puVar9 + 2) << 8" (binary_expression "(uint)*(byte *)((int)puVar9 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar9 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 2)" ( (binary_expression "(int)puVar9 + 2" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) )))) ;) (expression_statement "puVar1[2] = uVar8;" (assignment_expression "puVar1[2] = uVar8" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6 = puVar9 + 1;" (assignment_expression "puVar6 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + -1;" (assignment_expression "puVar12 = puVar12 + -1" identifier = (binary_expression "puVar12 + -1" identifier + number_literal)) ;) })) }) (else_clause "else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" else (if_statement "if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" if (parenthesized_expression "(iVar2 == 3)" ( (binary_expression "iVar2 == 3" identifier == number_literal) )) (compound_statement "{\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }" { (expression_statement "param_3 = &local_30;" (assignment_expression "param_3 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" identifier = identifier) ;) (expression_statement "uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);" (assignment_expression "uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3)" identifier = (call_expression "(*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3)" (parenthesized_expression "(*(code *)PTR_filename_deserialise_000bd30c)" ( (pointer_expression "*(code *)PTR_filename_deserialise_000bd30c" * (cast_expression "(code *)PTR_filename_deserialise_000bd30c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9,puVar12,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "puVar1[2] = uVar8;" (assignment_expression "puVar1[2] = uVar8" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }" { (if_statement "if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }" if (parenthesized_expression "(*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2)" ( (binary_expression "*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2" (pointer_expression "*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" * (cast_expression "(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" ( (binary_expression "PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_456__000bd268 + *puVar1 * 4" identifier + (binary_expression "*puVar1 * 4" (pointer_expression "*puVar1" * identifier) * number_literal)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                safefree(puVar1[1]);\n              }" { (expression_statement "safefree(puVar1[1]);" (call_expression "safefree(puVar1[1])" identifier (argument_list "(puVar1[1])" ( (subscript_expression "puVar1[1]" identifier [ number_literal ]) ))) ;) })) (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "puVar12 = (uint *)((int)puVar12 - local_30);" (assignment_expression "puVar12 = (uint *)((int)puVar12 - local_30)" identifier = (cast_expression "(uint *)((int)puVar12 - local_30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 - local_30)" ( (binary_expression "(int)puVar12 - local_30" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "puVar6 = (uint *)((int)puVar9 + local_30);" (assignment_expression "puVar6 = (uint *)((int)puVar9 + local_30)" identifier = (cast_expression "(uint *)((int)puVar9 + local_30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + local_30)" ( (binary_expression "(int)puVar9 + local_30" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) (else_clause "else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" else (compound_statement "{\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" { (expression_statement "param_3 = &local_30;" (assignment_expression "param_3 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (if_statement "if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }" if (parenthesized_expression "(iVar2 == 4)" ( (binary_expression "iVar2 == 4" identifier == number_literal) )) (compound_statement "{\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }" { (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" identifier = identifier) ;) (expression_statement "uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);" (assignment_expression "uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3)" identifier = (call_expression "(*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3)" (parenthesized_expression "(*(code *)PTR_fontspec_deserialise_000bd308)" ( (pointer_expression "*(code *)PTR_fontspec_deserialise_000bd308" * (cast_expression "(code *)PTR_fontspec_deserialise_000bd308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9,puVar12,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "puVar1[2] = uVar8;" (assignment_expression "puVar1[2] = uVar8" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }" { (if_statement "if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }" if (parenthesized_expression "(*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2)" ( (binary_expression "*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2" (pointer_expression "*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" * (cast_expression "(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" ( (binary_expression "PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_456__000bd268 + *puVar1 * 4" identifier + (binary_expression "*puVar1 * 4" (pointer_expression "*puVar1" * identifier) * number_literal)) + number_literal) )))) == number_literal) )) (compound_statement "{\n                  safefree(puVar1[1]);\n                }" { (expression_statement "safefree(puVar1[1]);" (call_expression "safefree(puVar1[1])" identifier (argument_list "(puVar1[1])" ( (subscript_expression "puVar1[1]" identifier [ number_literal ]) ))) ;) })) (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "puVar12 = (uint *)((int)puVar12 - local_30);" (assignment_expression "puVar12 = (uint *)((int)puVar12 - local_30)" identifier = (cast_expression "(uint *)((int)puVar12 - local_30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 - local_30)" ( (binary_expression "(int)puVar12 - local_30" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "puVar6 = (uint *)((int)puVar9 + local_30);" (assignment_expression "puVar6 = (uint *)((int)puVar9 + local_30)" identifier = (cast_expression "(uint *)((int)puVar9 + local_30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + local_30)" ( (binary_expression "(int)puVar9 + local_30" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) }))))) }))) (expression_statement "(*pcVar14)(param_1,puVar1);" (call_expression "(*pcVar14)(param_1,puVar1)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_1,puVar1)" ( identifier , identifier ))) ;) (expression_statement "puVar9 = puVar6 + 1;" (assignment_expression "puVar9 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar6;" (assignment_expression "puVar10 = puVar6" identifier = identifier) ;) (if_statement "if ((int)puVar12 < 4) break;" if (parenthesized_expression "((int)puVar12 < 4)" ( (binary_expression "(int)puVar12 < 4" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;" (assignment_expression "uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8" identifier = (binary_expression "(uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8" (binary_expression "(uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6" (binary_expression "(uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10" (binary_expression "(uint)*(byte *)puVar6 << 0x18" (binary_expression "(uint)*(byte *)puVar6" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)puVar6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) << number_literal) | (binary_expression "(uint)*(byte *)((int)puVar6 + 1) << 0x10" (binary_expression "(uint)*(byte *)((int)puVar6 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 1)" ( (binary_expression "(int)puVar6 + 1" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)(byte)*puVar6" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) | (binary_expression "(uint)*(byte *)((int)puVar6 + 2) << 8" (binary_expression "(uint)*(byte *)((int)puVar6 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar6 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 2)" ( (binary_expression "(int)puVar6 + 2" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal))) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (expression_statement "puVar11 = puVar12;" (assignment_expression "puVar11 = puVar12" identifier = identifier) ;) (expression_statement "puVar12 = puVar12 + -1;" (assignment_expression "puVar12 = puVar12 + -1" identifier = (binary_expression "puVar12 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar8 < 0xb8)" ( (binary_expression "uVar8 < 0xb8" identifier < number_literal) )) ;) })) })) (if_statement "if (local_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)puVar10 - (int)param_2;\n  }" if (parenthesized_expression "(local_2c == *(int *)PTR___stack_chk_guard_000be114)" ( (binary_expression "local_2c == *(int *)PTR___stack_chk_guard_000be114" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_000be114" * (cast_expression "(int *)PTR___stack_chk_guard_000be114" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return (int)puVar10 - (int)param_2;\n  }" { (return_statement "return (int)puVar10 - (int)param_2;" return (binary_expression "(int)puVar10 - (int)param_2" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "iVar2 = local_2c;" (assignment_expression "iVar2 = local_2c" identifier = identifier) ;) (expression_statement "puVar13 = PTR___stack_chk_fail_000bddb4;" (assignment_expression "puVar13 = PTR___stack_chk_fail_000bddb4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000bddb4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bddb4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bddb4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000bddb4" * (cast_expression "(code *)PTR___stack_chk_fail_000bddb4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (param_4 == 0) {\n    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar13 + 0x99188);\n    if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }\n    piVar4 = *(int **)(iVar2 + 0x30);\n    iVar7 = 0;\n    if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }\n    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);\n  }\n  else {\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar13 + 0x99188);\n    if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }\n    piVar4 = *(int **)(iVar2 + 0x30);\n    iVar7 = 0;\n    if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }\n    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);\n  }" { (expression_statement "iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));" (assignment_expression "iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14))" identifier = (call_expression "conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14))" identifier (argument_list "(param_3,*(undefined4 *)(iVar2 + 0x14))" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "iVar7 = *(int *)(puVar13 + 0x99188);" (assignment_expression "iVar7 = *(int *)(puVar13 + 0x99188)" identifier = (pointer_expression "*(int *)(puVar13 + 0x99188)" * (cast_expression "(int *)(puVar13 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x99188)" ( (binary_expression "puVar13 + 0x99188" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }" if (parenthesized_expression "(*(int *)(iVar2 + 0x24) < 1)" ( (binary_expression "*(int *)(iVar2 + 0x24) < 1" (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }" { (labeled_statement "LAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);" statement_identifier : (expression_statement "iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);" (assignment_expression "iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac)" identifier = (call_expression "(**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac)" (parenthesized_expression "(**(code **)(puVar13 + 0x9997c))" ( (pointer_expression "**(code **)(puVar13 + 0x9997c)" * (pointer_expression "*(code **)(puVar13 + 0x9997c)" * (cast_expression "(code **)(puVar13 + 0x9997c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x9997c)" ( (binary_expression "puVar13 + 0x9997c" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac)" ( (binary_expression "*(int *)(puVar13 + 0x99188) + -0x5a24" (pointer_expression "*(int *)(puVar13 + 0x99188)" * (cast_expression "(int *)(puVar13 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x99188)" ( (binary_expression "puVar13 + 0x99188" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar13 + 0x99188) + -0x5a60" (pointer_expression "*(int *)(puVar13 + 0x99188)" * (cast_expression "(int *)(puVar13 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x99188)" ( (binary_expression "puVar13 + 0x99188" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "iVar7 + -0x2fac" identifier + number_literal) )))) ;)) (return_statement "return iVar2;" return identifier ;) })) (expression_statement "piVar4 = *(int **)(iVar2 + 0x30);" (assignment_expression "piVar4 = *(int **)(iVar2 + 0x30)" identifier = (pointer_expression "*(int **)(iVar2 + 0x30)" * (cast_expression "(int **)(iVar2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (if_statement "if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }" if (parenthesized_expression "(iVar3 != *piVar4)" ( (binary_expression "iVar3 != *piVar4" identifier != (pointer_expression "*piVar4" * identifier)) )) (compound_statement "{\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);" do (compound_statement "{\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      }" { (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "piVar4 = piVar4 + 1;" (assignment_expression "piVar4 = piVar4 + 1" identifier = (binary_expression "piVar4 + 1" identifier + number_literal)) ;) (if_statement "if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }" if (parenthesized_expression "(iVar7 == *(int *)(iVar2 + 0x24))" ( (binary_expression "iVar7 == *(int *)(iVar2 + 0x24)" identifier == (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) ))))) )) (compound_statement "{\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }" { (expression_statement "iVar7 = *(int *)(puVar13 + 0x99188);" (assignment_expression "iVar7 = *(int *)(puVar13 + 0x99188)" identifier = (pointer_expression "*(int *)(puVar13 + 0x99188)" * (cast_expression "(int *)(puVar13 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x99188)" ( (binary_expression "puVar13 + 0x99188" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00024230;" goto statement_identifier ;) })) }) while (parenthesized_expression "(*piVar4 != iVar3)" ( (binary_expression "*piVar4 != iVar3" (pointer_expression "*piVar4" * identifier) != identifier) )) ;) })) (expression_statement "iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);" (assignment_expression "iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7)" identifier = (call_expression "(**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7)" (parenthesized_expression "(**(code **)(puVar13 + 0x99230))" ( (pointer_expression "**(code **)(puVar13 + 0x99230)" * (pointer_expression "*(code **)(puVar13 + 0x99230)" * (cast_expression "(code **)(puVar13 + 0x99230)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x99230)" ( (binary_expression "puVar13 + 0x99230" identifier + number_literal) ))))) )) (argument_list "(iVar2,puVar1,iVar7)" ( identifier , identifier , identifier )))) ;) }) (else_clause "else {\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }" else (compound_statement "{\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }" { (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (if_statement "if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }" if (parenthesized_expression "(param_4 == 2)" ( (binary_expression "param_4 == 2" identifier == number_literal) )) (compound_statement "{\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }" { (expression_statement "iVar3 = (**(code **)(puVar13 + 0x99234))();" (assignment_expression "iVar3 = (**(code **)(puVar13 + 0x99234))()" identifier = (call_expression "(**(code **)(puVar13 + 0x99234))()" (parenthesized_expression "(**(code **)(puVar13 + 0x99234))" ( (pointer_expression "**(code **)(puVar13 + 0x99234)" * (pointer_expression "*(code **)(puVar13 + 0x99234)" * (cast_expression "(code **)(puVar13 + 0x99234)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x99234)" ( (binary_expression "puVar13 + 0x99234" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }" if (parenthesized_expression "((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3))" ( (binary_expression "(iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)" (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) || (parenthesized_expression "(*(int *)(iVar2 + 0x24) <= iVar3)" ( (binary_expression "*(int *)(iVar2 + 0x24) <= iVar3" (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) )))) <= identifier) ))) )) (compound_statement "{\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }" { (expression_statement "iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);" (assignment_expression "iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac)" identifier = (call_expression "(**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac)" (parenthesized_expression "(**(code **)(puVar13 + 0x9997c))" ( (pointer_expression "**(code **)(puVar13 + 0x9997c)" * (pointer_expression "*(code **)(puVar13 + 0x9997c)" * (cast_expression "(code **)(puVar13 + 0x9997c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x9997c)" ( (binary_expression "puVar13 + 0x9997c" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac)" ( (binary_expression "*(int *)(puVar13 + 0x99188) + -0x5a54" (pointer_expression "*(int *)(puVar13 + 0x99188)" * (cast_expression "(int *)(puVar13 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x99188)" ( (binary_expression "puVar13 + 0x99188" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar13 + 0x99188) + -0x5a60" (pointer_expression "*(int *)(puVar13 + 0x99188)" * (cast_expression "(int *)(puVar13 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x99188)" ( (binary_expression "puVar13 + 0x99188" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar13 + 0x99188) + -0x2fac" (pointer_expression "*(int *)(puVar13 + 0x99188)" * (cast_expression "(int *)(puVar13 + 0x99188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x99188)" ( (binary_expression "puVar13 + 0x99188" identifier + number_literal) )))) + number_literal) )))) ;) (return_statement "return iVar2;" return identifier ;) })) (expression_statement "iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));" (assignment_expression "iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4))" identifier = (call_expression "conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4))" identifier (argument_list "(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4))" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4)" * (cast_expression "(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x30) + iVar3 * 4)" ( (binary_expression "*(int *)(iVar2 + 0x30) + iVar3 * 4" (pointer_expression "*(int *)(iVar2 + 0x30)" * (cast_expression "(int *)(iVar2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) )))) + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) )))) ;) })) }))) (return_statement "return iVar3;" 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) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) << LIT) | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) << LIT)) | (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) * IDENT)) | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) << LIT) | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) << LIT)) | (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) << LIT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (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 , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) << LIT) | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) << LIT)) | (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) * IDENT)) | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) << LIT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & 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 , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (pointer_expression * IDENT) * LIT)) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - 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) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (pointer_expression * IDENT) * LIT)) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - 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) )))) ;) })) }))))) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) << LIT) | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) << LIT)) | (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) * IDENT)) | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) << LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) 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 ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (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 ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression IDENT + LIT) )))) ;)) (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) }) while (parenthesized_expression ( (binary_expression (pointer_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 ( IDENT , IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (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 ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) ))) )) (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 ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) )))) ;) })) }))) (return_statement return IDENT ;) })))
(function_definition "int conf_deserialise(undefined4 param_1,uint *param_2,uint *param_3,int param_4)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  uint *puVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  uint local_30;\n  int local_2c;\n  \n  puVar13 = PTR_shapetypes_456__000bd268;\n  local_2c = *(int *)PTR___stack_chk_guard_000be114;\n  puVar1 = param_2;\n  puVar10 = param_2;\n  if (3 < (int)param_3) {\n    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;\n    puVar9 = param_2 + 1;\n    puVar10 = puVar9;\n    if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)puVar10 - (int)param_2;\n  }\n  iVar2 = local_2c;\n  puVar13 = PTR___stack_chk_fail_000bddb4;\n  (*(code *)PTR___stack_chk_fail_000bddb4)();\n  if (param_4 == 0) {\n    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar13 + 0x99188);\n    if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }\n    piVar4 = *(int **)(iVar2 + 0x30);\n    iVar7 = 0;\n    if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }\n    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);\n  }\n  else {\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }\n  return iVar3;\n}" (primitive_type "int") (function_declarator "conf_deserialise(undefined4 param_1,uint *param_2,uint *param_3,int param_4)" (identifier "conf_deserialise") (parameter_list "(undefined4 param_1,uint *param_2,uint *param_3,int param_4)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint *param_3" (type_identifier "uint") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  uint *puVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  uint local_30;\n  int local_2c;\n  \n  puVar13 = PTR_shapetypes_456__000bd268;\n  local_2c = *(int *)PTR___stack_chk_guard_000be114;\n  puVar1 = param_2;\n  puVar10 = param_2;\n  if (3 < (int)param_3) {\n    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;\n    puVar9 = param_2 + 1;\n    puVar10 = puVar9;\n    if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)puVar10 - (int)param_2;\n  }\n  iVar2 = local_2c;\n  puVar13 = PTR___stack_chk_fail_000bddb4;\n  (*(code *)PTR___stack_chk_fail_000bddb4)();\n  if (param_4 == 0) {\n    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar13 + 0x99188);\n    if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }\n    piVar4 = *(int **)(iVar2 + 0x30);\n    iVar7 = 0;\n    if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }\n    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);\n  }\n  else {\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }\n  return iVar3;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "uint *puVar5;" (type_identifier "uint") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "uint *puVar6;" (type_identifier "uint") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "uint *puVar10;" (type_identifier "uint") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint *puVar11;" (type_identifier "uint") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "uint *puVar12;" (type_identifier "uint") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "undefined *puVar13;" (type_identifier "undefined") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "code *pcVar14;" (type_identifier "code") (pointer_declarator "*pcVar14" (* "*") (identifier "pcVar14")) (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar13 = PTR_shapetypes_456__000bd268;" (assignment_expression "puVar13 = PTR_shapetypes_456__000bd268" (identifier "puVar13") (= "=") (identifier "PTR_shapetypes_456__000bd268")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000be114;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000be114" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000be114" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000be114" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000be114")))) (; ";")) (expression_statement "puVar1 = param_2;" (assignment_expression "puVar1 = param_2" (identifier "puVar1") (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar10 = param_2;" (assignment_expression "puVar10 = param_2" (identifier "puVar10") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (3 < (int)param_3) {\n    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;\n    puVar9 = param_2 + 1;\n    puVar10 = puVar9;\n    if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }" (if "if") (parenthesized_expression "(3 < (int)param_3)" (( "(") (binary_expression "3 < (int)param_3" (number_literal "3") (< "<") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))) () ")")) (compound_statement "{\n    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;\n    puVar9 = param_2 + 1;\n    puVar10 = puVar9;\n    if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }\n  }" ({ "{") (expression_statement "uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;" (assignment_expression "uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8" (identifier "uVar8") (= "=") (binary_expression "(uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8" (binary_expression "(uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |\n            (uint)(byte)*param_2" (binary_expression "(uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10" (binary_expression "(uint)*(byte *)param_2 << 0x18" (binary_expression "(uint)*(byte *)param_2" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)*(byte *)((int)param_2 + 1) << 0x10" (binary_expression "(uint)*(byte *)((int)param_2 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)param_2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 1)" (( "(") (binary_expression "(int)param_2 + 1" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "1")) () ")")))) (<< "<<") (number_literal "0x10"))) (| "|") (binary_expression "(uint)(byte)*param_2" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (* "*") (identifier "param_2"))) (| "|") (binary_expression "(uint)*(byte *)((int)param_2 + 2) << 8" (binary_expression "(uint)*(byte *)((int)param_2 + 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)param_2 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 2)" (( "(") (binary_expression "(int)param_2 + 2" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "2")) () ")")))) (<< "<<") (number_literal "8")))) (; ";")) (expression_statement "puVar9 = param_2 + 1;" (assignment_expression "puVar9 = param_2 + 1" (identifier "puVar9") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" (identifier "puVar10") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if (uVar8 < 0xb8) {\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }" (if "if") (parenthesized_expression "(uVar8 < 0xb8)" (( "(") (binary_expression "uVar8 < 0xb8" (identifier "uVar8") (< "<") (number_literal "0xb8")) () ")")) (compound_statement "{\n      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);\n      puVar6 = param_2;\n      puVar11 = param_3;\n      puVar12 = param_3 + -1;\n      do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);\n    }" ({ "{") (expression_statement "pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c)" (identifier "pcVar14") (= "=") (cast_expression "(code *)(PTR_LAB_000bd204 + 0x218c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000bd204 + 0x218c)" (( "(") (binary_expression "PTR_LAB_000bd204 + 0x218c" (identifier "PTR_LAB_000bd204") (+ "+") (number_literal "0x218c")) () ")")))) (; ";")) (expression_statement "puVar6 = param_2;" (assignment_expression "puVar6 = param_2" (identifier "puVar6") (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar11 = param_3;" (assignment_expression "puVar11 = param_3" (identifier "puVar11") (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar12 = param_3 + -1;" (assignment_expression "puVar12 = param_3 + -1" (identifier "puVar12") (= "=") (binary_expression "param_3 + -1" (identifier "param_3") (+ "+") (number_literal "-1"))) (; ";")) (do_statement "do {\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      } while (uVar8 < 0xb8);" (do "do") (compound_statement "{\n        puVar5 = (uint *)0xc;\n        puVar1 = (uint *)safemalloc(1,0xc);\n        *puVar1 = uVar8;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);\n        puVar10 = puVar9;\n        if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }\n        uVar8 = *puVar1;\n        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);\n        puVar10 = puVar9;\n        if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }\n        (*pcVar14)(param_1,puVar1);\n        puVar9 = puVar6 + 1;\n        puVar10 = puVar6;\n        if ((int)puVar12 < 4) break;\n        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;\n        puVar10 = puVar9;\n        puVar11 = puVar12;\n        puVar12 = puVar12 + -1;\n      }" ({ "{") (expression_statement "puVar5 = (uint *)0xc;" (assignment_expression "puVar5 = (uint *)0xc" (identifier "puVar5") (= "=") (cast_expression "(uint *)0xc" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xc"))) (; ";")) (expression_statement "puVar1 = (uint *)safemalloc(1,0xc);" (assignment_expression "puVar1 = (uint *)safemalloc(1,0xc)" (identifier "puVar1") (= "=") (cast_expression "(uint *)safemalloc(1,0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "safemalloc(1,0xc)" (identifier "safemalloc") (argument_list "(1,0xc)" (( "(") (number_literal "1") (, ",") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "*puVar1 = uVar8;" (assignment_expression "*puVar1 = uVar8" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);" (assignment_expression "iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar13 + uVar8 * 4 + -0x5d4c)" (* "*") (cast_expression "(int *)(puVar13 + uVar8 * 4 + -0x5d4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + uVar8 * 4 + -0x5d4c)" (( "(") (binary_expression "puVar13 + uVar8 * 4 + -0x5d4c" (binary_expression "puVar13 + uVar8 * 4" (identifier "puVar13") (+ "+") (binary_expression "uVar8 * 4" (identifier "uVar8") (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x5d4c")) () ")"))))) (; ";")) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" (identifier "puVar10") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if (iVar2 == 1) {\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }\n        else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }" (if "if") (parenthesized_expression "(iVar2 == 1)" (( "(") (binary_expression "iVar2 == 1" (identifier "iVar2") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }\n          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);\n          puVar1[1] = uVar8;\n          puVar9 = puVar6 + 2;\n          puVar12 = puVar11 + -2;\n        }" ({ "{") (if_statement "if ((int)puVar12 < 4) {\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }" (if "if") (parenthesized_expression "((int)puVar12 < 4)" (( "(") (binary_expression "(int)puVar12 < 4" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (< "<") (number_literal "4")) () ")")) (compound_statement "{\n            safefree(puVar1);\n            puVar1 = puVar5;\n            break;\n          }" ({ "{") (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" (identifier "safefree") (argument_list "(puVar1)" (( "(") (identifier "puVar1") () ")"))) (; ";")) (expression_statement "puVar1 = puVar5;" (assignment_expression "puVar1 = puVar5" (identifier "puVar1") (= "=") (identifier "puVar5")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8);" (assignment_expression "uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8)" (identifier "uVar8") (= "=") (call_expression "toint((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8)" (identifier "toint") (argument_list "((uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8)" (( "(") (binary_expression "(uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)\n                        | (uint)*(byte *)((int)puVar6 + 6) << 8" (binary_expression "(uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)" (binary_expression "(uint)*(byte *)(puVar6 + 1) << 0x18 |\n                        (uint)*(byte *)((int)puVar6 + 5) << 0x10" (binary_expression "(uint)*(byte *)(puVar6 + 1) << 0x18" (binary_expression "(uint)*(byte *)(puVar6 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(puVar6 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 1)" (( "(") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1")) () ")")))) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)*(byte *)((int)puVar6 + 5) << 0x10" (binary_expression "(uint)*(byte *)((int)puVar6 + 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)puVar6 + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar6 + 5)" (( "(") (binary_expression "(int)puVar6 + 5" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (number_literal "5")) () ")")))) (<< "<<") (number_literal "0x10"))) (| "|") (binary_expression "(uint)*(byte *)((int)puVar6 + 7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)puVar6 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar6 + 7)" (( "(") (binary_expression "(int)puVar6 + 7" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (number_literal "7")) () ")"))))) (| "|") (binary_expression "(uint)*(byte *)((int)puVar6 + 6) << 8" (binary_expression "(uint)*(byte *)((int)puVar6 + 6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)puVar6 + 6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar6 + 6)" (( "(") (binary_expression "(int)puVar6 + 6" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (number_literal "6")) () ")")))) (<< "<<") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "puVar1[1] = uVar8;" (assignment_expression "puVar1[1] = uVar8" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "puVar9 = puVar6 + 2;" (assignment_expression "puVar9 = puVar6 + 2" (identifier "puVar9") (= "=") (binary_expression "puVar6 + 2" (identifier "puVar6") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar12 = puVar11 + -2;" (assignment_expression "puVar12 = puVar11 + -2" (identifier "puVar12") (= "=") (binary_expression "puVar11 + -2" (identifier "puVar11") (+ "+") (number_literal "-2"))) (; ";")) (} "}")) (else_clause "else {\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }" (else "else") (compound_statement "{\n          param_3 = puVar12;\n          if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }\n        }" ({ "{") (expression_statement "param_3 = puVar12;" (assignment_expression "param_3 = puVar12" (identifier "param_3") (= "=") (identifier "puVar12")) (; ";")) (if_statement "if (iVar2 == 2) {\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }" (if "if") (parenthesized_expression "(iVar2 == 2)" (( "(") (binary_expression "iVar2 == 2" (identifier "iVar2") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n            puVar5 = (uint *)0x0;\n            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n            if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }\n            uVar8 = dupstr(puVar9);\n            puVar1[1] = uVar8;\n            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));\n            puVar9 = (uint *)(iVar2 + 1);\n          }" ({ "{") (expression_statement "puVar5 = (uint *)0x0;" (assignment_expression "puVar5 = (uint *)0x0" (identifier "puVar5") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);" (assignment_expression "iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12)" (parenthesized_expression "(*(code *)PTR_memchr_000bdf64)" (( "(") (pointer_expression "*(code *)PTR_memchr_000bdf64" (* "*") (cast_expression "(code *)PTR_memchr_000bdf64" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memchr_000bdf64"))) () ")")) (argument_list "(puVar9,0,puVar12)" (( "(") (identifier "puVar9") (, ",") (number_literal "0") (, ",") (identifier "puVar12") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              safefree(puVar1);\n              puVar1 = puVar5;\n              break;\n            }" ({ "{") (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" (identifier "safefree") (argument_list "(puVar1)" (( "(") (identifier "puVar1") () ")"))) (; ";")) (expression_statement "puVar1 = puVar5;" (assignment_expression "puVar1 = puVar5" (identifier "puVar1") (= "=") (identifier "puVar5")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "uVar8 = dupstr(puVar9);" (assignment_expression "uVar8 = dupstr(puVar9)" (identifier "uVar8") (= "=") (call_expression "dupstr(puVar9)" (identifier "dupstr") (argument_list "(puVar9)" (( "(") (identifier "puVar9") () ")")))) (; ";")) (expression_statement "puVar1[1] = uVar8;" (assignment_expression "puVar1[1] = uVar8" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));" (assignment_expression "puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9))" (identifier "puVar12") (= "=") (cast_expression "(uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 - ((iVar2 + 1) - (int)puVar9))" (( "(") (binary_expression "(int)puVar12 - ((iVar2 + 1) - (int)puVar9)" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (- "-") (parenthesized_expression "((iVar2 + 1) - (int)puVar9)" (( "(") (binary_expression "(iVar2 + 1) - (int)puVar9" (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")")) (- "-") (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9"))) () ")"))) () ")")))) (; ";")) (expression_statement "puVar9 = (uint *)(iVar2 + 1);" (assignment_expression "puVar9 = (uint *)(iVar2 + 1)" (identifier "puVar9") (= "=") (cast_expression "(uint *)(iVar2 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar8 = *puVar1;" (assignment_expression "uVar8 = *puVar1" (identifier "uVar8") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);" (assignment_expression "iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar13 + uVar8 * 4 + -0x602c)" (* "*") (cast_expression "(int *)(puVar13 + uVar8 * 4 + -0x602c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + uVar8 * 4 + -0x602c)" (( "(") (binary_expression "puVar13 + uVar8 * 4 + -0x602c" (binary_expression "puVar13 + uVar8 * 4" (identifier "puVar13") (+ "+") (binary_expression "uVar8 * 4" (identifier "uVar8") (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x602c")) () ")"))))) (; ";")) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" (identifier "puVar10") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if (iVar2 == 2) {\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }\n        else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }" (if "if") (parenthesized_expression "(iVar2 == 2)" (( "(") (binary_expression "iVar2 == 2" (identifier "iVar2") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n          puVar6 = (uint *)0x0;\n          param_3 = puVar12;\n          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);\n          if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }\n          uVar8 = dupstr(puVar9);\n          puVar1[2] = uVar8;\n          puVar6 = (uint *)(iVar2 + 1);\n          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));\n        }" ({ "{") (expression_statement "puVar6 = (uint *)0x0;" (assignment_expression "puVar6 = (uint *)0x0" (identifier "puVar6") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "param_3 = puVar12;" (assignment_expression "param_3 = puVar12" (identifier "param_3") (= "=") (identifier "puVar12")) (; ";")) (expression_statement "iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);" (assignment_expression "iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12)" (parenthesized_expression "(*(code *)PTR_memchr_000bdf64)" (( "(") (pointer_expression "*(code *)PTR_memchr_000bdf64" (* "*") (cast_expression "(code *)PTR_memchr_000bdf64" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memchr_000bdf64"))) () ")")) (argument_list "(puVar9,0,puVar12)" (( "(") (identifier "puVar9") (, ",") (number_literal "0") (, ",") (identifier "puVar12") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }\n            safefree(puVar1);\n            puVar1 = puVar6;\n            break;\n          }" ({ "{") (if_statement "if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n              safefree(puVar1[1]);\n            }" (if "if") (parenthesized_expression "(*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2)" (( "(") (binary_expression "*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2" (pointer_expression "*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" (* "*") (cast_expression "(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" (( "(") (binary_expression "PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_456__000bd268 + uVar8 * 4" (identifier "PTR_shapetypes_456__000bd268") (+ "+") (binary_expression "uVar8 * 4" (identifier "uVar8") (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x5d4c")) () ")")))) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n              safefree(puVar1[1]);\n            }" ({ "{") (expression_statement "safefree(puVar1[1]);" (call_expression "safefree(puVar1[1])" (identifier "safefree") (argument_list "(puVar1[1])" (( "(") (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" (identifier "safefree") (argument_list "(puVar1)" (( "(") (identifier "puVar1") () ")"))) (; ";")) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" (identifier "puVar1") (= "=") (identifier "puVar6")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "uVar8 = dupstr(puVar9);" (assignment_expression "uVar8 = dupstr(puVar9)" (identifier "uVar8") (= "=") (call_expression "dupstr(puVar9)" (identifier "dupstr") (argument_list "(puVar9)" (( "(") (identifier "puVar9") () ")")))) (; ";")) (expression_statement "puVar1[2] = uVar8;" (assignment_expression "puVar1[2] = uVar8" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "puVar6 = (uint *)(iVar2 + 1);" (assignment_expression "puVar6 = (uint *)(iVar2 + 1)" (identifier "puVar6") (= "=") (cast_expression "(uint *)(iVar2 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));" (assignment_expression "puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9))" (identifier "puVar12") (= "=") (cast_expression "(uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 - ((int)puVar6 - (int)puVar9))" (( "(") (binary_expression "(int)puVar12 - ((int)puVar6 - (int)puVar9)" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (- "-") (parenthesized_expression "((int)puVar6 - (int)puVar9)" (( "(") (binary_expression "(int)puVar6 - (int)puVar9" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (- "-") (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9"))) () ")"))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }" (else "else") (compound_statement "{\n          puVar6 = puVar9;\n          if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }\n        }" ({ "{") (expression_statement "puVar6 = puVar9;" (assignment_expression "puVar6 = puVar9" (identifier "puVar6") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if (iVar2 < 3) {\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }\n          else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" (if "if") (parenthesized_expression "(iVar2 < 3)" (( "(") (binary_expression "iVar2 < 3" (identifier "iVar2") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n            if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }\n          }" ({ "{") (if_statement "if (iVar2 == 1) {\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }" (if "if") (parenthesized_expression "(iVar2 == 1)" (( "(") (binary_expression "iVar2 == 1" (identifier "iVar2") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }\n              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);\n              puVar1[2] = uVar8;\n              puVar6 = puVar9 + 1;\n              puVar12 = puVar12 + -1;\n            }" ({ "{") (if_statement "if ((int)puVar12 < 4) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }" (if "if") (parenthesized_expression "((int)puVar12 < 4)" (( "(") (binary_expression "(int)puVar12 < 4" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (< "<") (number_literal "4")) () ")")) (compound_statement "{\n                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar5;\n                break;\n              }" ({ "{") (if_statement "if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }" (if "if") (parenthesized_expression "(*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2)" (( "(") (binary_expression "*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2" (pointer_expression "*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" (* "*") (cast_expression "(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c)" (( "(") (binary_expression "PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_456__000bd268 + uVar8 * 4" (identifier "PTR_shapetypes_456__000bd268") (+ "+") (binary_expression "uVar8 * 4" (identifier "uVar8") (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x5d4c")) () ")")))) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n                  safefree(puVar1[1]);\n                }" ({ "{") (expression_statement "safefree(puVar1[1]);" (call_expression "safefree(puVar1[1])" (identifier "safefree") (argument_list "(puVar1[1])" (( "(") (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" (identifier "safefree") (argument_list "(puVar1)" (( "(") (identifier "puVar1") () ")"))) (; ";")) (expression_statement "puVar1 = puVar5;" (assignment_expression "puVar1 = puVar5" (identifier "puVar1") (= "=") (identifier "puVar5")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);" (assignment_expression "uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8)" (identifier "uVar8") (= "=") (call_expression "toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8)" (identifier "toint") (argument_list "((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8)" (( "(") (binary_expression "(uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8" (binary_expression "(uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10\n                            | (uint)(byte)*puVar9" (binary_expression "(uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10" (binary_expression "(uint)*(byte *)puVar9 << 0x18" (binary_expression "(uint)*(byte *)puVar9" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)puVar9" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9"))) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)*(byte *)((int)puVar9 + 1) << 0x10" (binary_expression "(uint)*(byte *)((int)puVar9 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)puVar9 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar9 + 1)" (( "(") (binary_expression "(int)puVar9 + 1" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (+ "+") (number_literal "1")) () ")")))) (<< "<<") (number_literal "0x10"))) (| "|") (binary_expression "(uint)(byte)*puVar9" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (* "*") (identifier "puVar9"))) (| "|") (binary_expression "(uint)*(byte *)((int)puVar9 + 2) << 8" (binary_expression "(uint)*(byte *)((int)puVar9 + 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)puVar9 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar9 + 2)" (( "(") (binary_expression "(int)puVar9 + 2" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (+ "+") (number_literal "2")) () ")")))) (<< "<<") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "puVar1[2] = uVar8;" (assignment_expression "puVar1[2] = uVar8" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "puVar6 = puVar9 + 1;" (assignment_expression "puVar6 = puVar9 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar12 = puVar12 + -1;" (assignment_expression "puVar12 = puVar12 + -1" (identifier "puVar12") (= "=") (binary_expression "puVar12 + -1" (identifier "puVar12") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (} "}")) (else_clause "else if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" (else "else") (if_statement "if (iVar2 == 3) {\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }\n          else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" (if "if") (parenthesized_expression "(iVar2 == 3)" (( "(") (binary_expression "iVar2 == 3" (identifier "iVar2") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n            param_3 = &local_30;\n            puVar6 = puVar12;\n            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);\n            puVar1[2] = uVar8;\n            if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }\n            puVar12 = (uint *)((int)puVar12 - local_30);\n            puVar6 = (uint *)((int)puVar9 + local_30);\n          }" ({ "{") (expression_statement "param_3 = &local_30;" (assignment_expression "param_3 = &local_30" (identifier "param_3") (= "=") (pointer_expression "&local_30" (& "&") (identifier "local_30"))) (; ";")) (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" (identifier "puVar6") (= "=") (identifier "puVar12")) (; ";")) (expression_statement "uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);" (assignment_expression "uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3)" (identifier "uVar8") (= "=") (call_expression "(*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3)" (parenthesized_expression "(*(code *)PTR_filename_deserialise_000bd30c)" (( "(") (pointer_expression "*(code *)PTR_filename_deserialise_000bd30c" (* "*") (cast_expression "(code *)PTR_filename_deserialise_000bd30c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_filename_deserialise_000bd30c"))) () ")")) (argument_list "(puVar9,puVar12,param_3)" (( "(") (identifier "puVar9") (, ",") (identifier "puVar12") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "puVar1[2] = uVar8;" (assignment_expression "puVar1[2] = uVar8" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (uVar8 == 0) {\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }\n              safefree(puVar1);\n              puVar1 = puVar6;\n              break;\n            }" ({ "{") (if_statement "if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                safefree(puVar1[1]);\n              }" (if "if") (parenthesized_expression "(*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2)" (( "(") (binary_expression "*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2" (pointer_expression "*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" (* "*") (cast_expression "(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" (( "(") (binary_expression "PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_456__000bd268 + *puVar1 * 4" (identifier "PTR_shapetypes_456__000bd268") (+ "+") (binary_expression "*puVar1 * 4" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x5d4c")) () ")")))) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n                safefree(puVar1[1]);\n              }" ({ "{") (expression_statement "safefree(puVar1[1]);" (call_expression "safefree(puVar1[1])" (identifier "safefree") (argument_list "(puVar1[1])" (( "(") (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" (identifier "safefree") (argument_list "(puVar1)" (( "(") (identifier "puVar1") () ")"))) (; ";")) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" (identifier "puVar1") (= "=") (identifier "puVar6")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "puVar12 = (uint *)((int)puVar12 - local_30);" (assignment_expression "puVar12 = (uint *)((int)puVar12 - local_30)" (identifier "puVar12") (= "=") (cast_expression "(uint *)((int)puVar12 - local_30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 - local_30)" (( "(") (binary_expression "(int)puVar12 - local_30" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (- "-") (identifier "local_30")) () ")")))) (; ";")) (expression_statement "puVar6 = (uint *)((int)puVar9 + local_30);" (assignment_expression "puVar6 = (uint *)((int)puVar9 + local_30)" (identifier "puVar6") (= "=") (cast_expression "(uint *)((int)puVar9 + local_30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar9 + local_30)" (( "(") (binary_expression "(int)puVar9 + local_30" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (+ "+") (identifier "local_30")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" (else "else") (compound_statement "{\n            param_3 = &local_30;\n            if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }\n          }" ({ "{") (expression_statement "param_3 = &local_30;" (assignment_expression "param_3 = &local_30" (identifier "param_3") (= "=") (pointer_expression "&local_30" (& "&") (identifier "local_30"))) (; ";")) (if_statement "if (iVar2 == 4) {\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }" (if "if") (parenthesized_expression "(iVar2 == 4)" (( "(") (binary_expression "iVar2 == 4" (identifier "iVar2") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n              puVar6 = puVar12;\n              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);\n              puVar1[2] = uVar8;\n              if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }\n              puVar12 = (uint *)((int)puVar12 - local_30);\n              puVar6 = (uint *)((int)puVar9 + local_30);\n            }" ({ "{") (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" (identifier "puVar6") (= "=") (identifier "puVar12")) (; ";")) (expression_statement "uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);" (assignment_expression "uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3)" (identifier "uVar8") (= "=") (call_expression "(*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3)" (parenthesized_expression "(*(code *)PTR_fontspec_deserialise_000bd308)" (( "(") (pointer_expression "*(code *)PTR_fontspec_deserialise_000bd308" (* "*") (cast_expression "(code *)PTR_fontspec_deserialise_000bd308" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fontspec_deserialise_000bd308"))) () ")")) (argument_list "(puVar9,puVar12,param_3)" (( "(") (identifier "puVar9") (, ",") (identifier "puVar12") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "puVar1[2] = uVar8;" (assignment_expression "puVar1[2] = uVar8" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (uVar8 == 0) {\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }\n                safefree(puVar1);\n                puVar1 = puVar6;\n                break;\n              }" ({ "{") (if_statement "if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {\n                  safefree(puVar1[1]);\n                }" (if "if") (parenthesized_expression "(*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2)" (( "(") (binary_expression "*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2" (pointer_expression "*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" (* "*") (cast_expression "(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c)" (( "(") (binary_expression "PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c" (binary_expression "PTR_shapetypes_456__000bd268 + *puVar1 * 4" (identifier "PTR_shapetypes_456__000bd268") (+ "+") (binary_expression "*puVar1 * 4" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x5d4c")) () ")")))) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n                  safefree(puVar1[1]);\n                }" ({ "{") (expression_statement "safefree(puVar1[1]);" (call_expression "safefree(puVar1[1])" (identifier "safefree") (argument_list "(puVar1[1])" (( "(") (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "safefree(puVar1);" (call_expression "safefree(puVar1)" (identifier "safefree") (argument_list "(puVar1)" (( "(") (identifier "puVar1") () ")"))) (; ";")) (expression_statement "puVar1 = puVar6;" (assignment_expression "puVar1 = puVar6" (identifier "puVar1") (= "=") (identifier "puVar6")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "puVar12 = (uint *)((int)puVar12 - local_30);" (assignment_expression "puVar12 = (uint *)((int)puVar12 - local_30)" (identifier "puVar12") (= "=") (cast_expression "(uint *)((int)puVar12 - local_30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 - local_30)" (( "(") (binary_expression "(int)puVar12 - local_30" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (- "-") (identifier "local_30")) () ")")))) (; ";")) (expression_statement "puVar6 = (uint *)((int)puVar9 + local_30);" (assignment_expression "puVar6 = (uint *)((int)puVar9 + local_30)" (identifier "puVar6") (= "=") (cast_expression "(uint *)((int)puVar9 + local_30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar9 + local_30)" (( "(") (binary_expression "(int)puVar9 + local_30" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (+ "+") (identifier "local_30")) () ")")))) (; ";")) (} "}"))) (} "}")))))) (} "}")))) (expression_statement "(*pcVar14)(param_1,puVar1);" (call_expression "(*pcVar14)(param_1,puVar1)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(param_1,puVar1)" (( "(") (identifier "param_1") (, ",") (identifier "puVar1") () ")"))) (; ";")) (expression_statement "puVar9 = puVar6 + 1;" (assignment_expression "puVar9 = puVar6 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar10 = puVar6;" (assignment_expression "puVar10 = puVar6" (identifier "puVar10") (= "=") (identifier "puVar6")) (; ";")) (if_statement "if ((int)puVar12 < 4) break;" (if "if") (parenthesized_expression "((int)puVar12 < 4)" (( "(") (binary_expression "(int)puVar12 < 4" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (< "<") (number_literal "4")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;" (assignment_expression "uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8" (identifier "uVar8") (= "=") (binary_expression "(uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8" (binary_expression "(uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |\n                (uint)(byte)*puVar6" (binary_expression "(uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10" (binary_expression "(uint)*(byte *)puVar6 << 0x18" (binary_expression "(uint)*(byte *)puVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)puVar6" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar6"))) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)*(byte *)((int)puVar6 + 1) << 0x10" (binary_expression "(uint)*(byte *)((int)puVar6 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)puVar6 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar6 + 1)" (( "(") (binary_expression "(int)puVar6 + 1" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (number_literal "1")) () ")")))) (<< "<<") (number_literal "0x10"))) (| "|") (binary_expression "(uint)(byte)*puVar6" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (* "*") (identifier "puVar6"))) (| "|") (binary_expression "(uint)*(byte *)((int)puVar6 + 2) << 8" (binary_expression "(uint)*(byte *)((int)puVar6 + 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)puVar6 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar6 + 2)" (( "(") (binary_expression "(int)puVar6 + 2" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (number_literal "2")) () ")")))) (<< "<<") (number_literal "8")))) (; ";")) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" (identifier "puVar10") (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar11 = puVar12;" (assignment_expression "puVar11 = puVar12" (identifier "puVar11") (= "=") (identifier "puVar12")) (; ";")) (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 "(uVar8 < 0xb8)" (( "(") (binary_expression "uVar8 < 0xb8" (identifier "uVar8") (< "<") (number_literal "0xb8")) () ")")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (local_2c == *(int *)PTR___stack_chk_guard_000be114) {\n    return (int)puVar10 - (int)param_2;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)PTR___stack_chk_guard_000be114)" (( "(") (binary_expression "local_2c == *(int *)PTR___stack_chk_guard_000be114" (identifier "local_2c") (== "==") (pointer_expression "*(int *)PTR___stack_chk_guard_000be114" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000be114" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000be114")))) () ")")) (compound_statement "{\n    return (int)puVar10 - (int)param_2;\n  }" ({ "{") (return_statement "return (int)puVar10 - (int)param_2;" (return "return") (binary_expression "(int)puVar10 - (int)param_2" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (} "}"))) (expression_statement "iVar2 = local_2c;" (assignment_expression "iVar2 = local_2c" (identifier "iVar2") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "puVar13 = PTR___stack_chk_fail_000bddb4;" (assignment_expression "puVar13 = PTR___stack_chk_fail_000bddb4" (identifier "puVar13") (= "=") (identifier "PTR___stack_chk_fail_000bddb4")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000bddb4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bddb4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bddb4)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000bddb4" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000bddb4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000bddb4"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (param_4 == 0) {\n    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar13 + 0x99188);\n    if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }\n    piVar4 = *(int **)(iVar2 + 0x30);\n    iVar7 = 0;\n    if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }\n    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);\n  }\n  else {\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));\n    iVar7 = *(int *)(puVar13 + 0x99188);\n    if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }\n    piVar4 = *(int **)(iVar2 + 0x30);\n    iVar7 = 0;\n    if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }\n    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);\n  }" ({ "{") (expression_statement "iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));" (assignment_expression "iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14))" (identifier "iVar3") (= "=") (call_expression "conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14))" (identifier "conf_get_int") (argument_list "(param_3,*(undefined4 *)(iVar2 + 0x14))" (( "(") (identifier "param_3") (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar7 = *(int *)(puVar13 + 0x99188);" (assignment_expression "iVar7 = *(int *)(puVar13 + 0x99188)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(puVar13 + 0x99188)" (* "*") (cast_expression "(int *)(puVar13 + 0x99188)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + 0x99188)" (( "(") (binary_expression "puVar13 + 0x99188" (identifier "puVar13") (+ "+") (number_literal "0x99188")) () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar2 + 0x24) < 1) {\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar2 + 0x24) < 1)" (( "(") (binary_expression "*(int *)(iVar2 + 0x24) < 1" (pointer_expression "*(int *)(iVar2 + 0x24)" (* "*") (cast_expression "(int *)(iVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x24)" (( "(") (binary_expression "iVar2 + 0x24" (identifier "iVar2") (+ "+") (number_literal "0x24")) () ")")))) (< "<") (number_literal "1")) () ")")) (compound_statement "{\nLAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);\n      return iVar2;\n    }" ({ "{") (labeled_statement "LAB_00024230:\n      iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);" (statement_identifier "LAB_00024230") (: ":") (expression_statement "iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac);" (assignment_expression "iVar2 = (**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(puVar13 + 0x9997c))\n                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac)" (parenthesized_expression "(**(code **)(puVar13 + 0x9997c))" (( "(") (pointer_expression "**(code **)(puVar13 + 0x9997c)" (* "*") (pointer_expression "*(code **)(puVar13 + 0x9997c)" (* "*") (cast_expression "(code **)(puVar13 + 0x9997c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0x9997c)" (( "(") (binary_expression "puVar13 + 0x9997c" (identifier "puVar13") (+ "+") (number_literal "0x9997c")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60\n                         ,0x24,iVar7 + -0x2fac)" (( "(") (binary_expression "*(int *)(puVar13 + 0x99188) + -0x5a24" (pointer_expression "*(int *)(puVar13 + 0x99188)" (* "*") (cast_expression "(int *)(puVar13 + 0x99188)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + 0x99188)" (( "(") (binary_expression "puVar13 + 0x99188" (identifier "puVar13") (+ "+") (number_literal "0x99188")) () ")")))) (+ "+") (number_literal "-0x5a24")) (, ",") (binary_expression "*(int *)(puVar13 + 0x99188) + -0x5a60" (pointer_expression "*(int *)(puVar13 + 0x99188)" (* "*") (cast_expression "(int *)(puVar13 + 0x99188)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + 0x99188)" (( "(") (binary_expression "puVar13 + 0x99188" (identifier "puVar13") (+ "+") (number_literal "0x99188")) () ")")))) (+ "+") (number_literal "-0x5a60")) (, ",") (number_literal "0x24") (, ",") (binary_expression "iVar7 + -0x2fac" (identifier "iVar7") (+ "+") (number_literal "-0x2fac")) () ")")))) (; ";"))) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "piVar4 = *(int **)(iVar2 + 0x30);" (assignment_expression "piVar4 = *(int **)(iVar2 + 0x30)" (identifier "piVar4") (= "=") (pointer_expression "*(int **)(iVar2 + 0x30)" (* "*") (cast_expression "(int **)(iVar2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0x30)" (( "(") (binary_expression "iVar2 + 0x30" (identifier "iVar2") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar3 != *piVar4) {\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }" (if "if") (parenthesized_expression "(iVar3 != *piVar4)" (( "(") (binary_expression "iVar3 != *piVar4" (identifier "iVar3") (!= "!=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) () ")")) (compound_statement "{\n      iVar7 = 0;\n      do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);\n    }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      } while (*piVar4 != iVar3);" (do "do") (compound_statement "{\n        iVar7 = iVar7 + 1;\n        piVar4 = piVar4 + 1;\n        if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }\n      }" ({ "{") (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar4 = piVar4 + 1;" (assignment_expression "piVar4 = piVar4 + 1" (identifier "piVar4") (= "=") (binary_expression "piVar4 + 1" (identifier "piVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar7 == *(int *)(iVar2 + 0x24)) {\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }" (if "if") (parenthesized_expression "(iVar7 == *(int *)(iVar2 + 0x24))" (( "(") (binary_expression "iVar7 == *(int *)(iVar2 + 0x24)" (identifier "iVar7") (== "==") (pointer_expression "*(int *)(iVar2 + 0x24)" (* "*") (cast_expression "(int *)(iVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x24)" (( "(") (binary_expression "iVar2 + 0x24" (identifier "iVar2") (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (compound_statement "{\n          iVar7 = *(int *)(puVar13 + 0x99188);\n          goto LAB_00024230;\n        }" ({ "{") (expression_statement "iVar7 = *(int *)(puVar13 + 0x99188);" (assignment_expression "iVar7 = *(int *)(puVar13 + 0x99188)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(puVar13 + 0x99188)" (* "*") (cast_expression "(int *)(puVar13 + 0x99188)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + 0x99188)" (( "(") (binary_expression "puVar13 + 0x99188" (identifier "puVar13") (+ "+") (number_literal "0x99188")) () ")"))))) (; ";")) (goto_statement "goto LAB_00024230;" (goto "goto") (statement_identifier "LAB_00024230") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(*piVar4 != iVar3)" (( "(") (binary_expression "*piVar4 != iVar3" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (!= "!=") (identifier "iVar3")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);" (assignment_expression "iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7)" (parenthesized_expression "(**(code **)(puVar13 + 0x99230))" (( "(") (pointer_expression "**(code **)(puVar13 + 0x99230)" (* "*") (pointer_expression "*(code **)(puVar13 + 0x99230)" (* "*") (cast_expression "(code **)(puVar13 + 0x99230)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0x99230)" (( "(") (binary_expression "puVar13 + 0x99230" (identifier "puVar13") (+ "+") (number_literal "0x99230")) () ")"))))) () ")")) (argument_list "(iVar2,puVar1,iVar7)" (( "(") (identifier "iVar2") (, ",") (identifier "puVar1") (, ",") (identifier "iVar7") () ")")))) (; ";")) (} "}")) (else_clause "else {\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }" (else "else") (compound_statement "{\n    iVar3 = 2;\n    if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }\n  }" ({ "{") (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" (identifier "iVar3") (= "=") (number_literal "2")) (; ";")) (if_statement "if (param_4 == 2) {\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }" (if "if") (parenthesized_expression "(param_4 == 2)" (( "(") (binary_expression "param_4 == 2" (identifier "param_4") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      iVar3 = (**(code **)(puVar13 + 0x99234))();\n      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }\n      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));\n    }" ({ "{") (expression_statement "iVar3 = (**(code **)(puVar13 + 0x99234))();" (assignment_expression "iVar3 = (**(code **)(puVar13 + 0x99234))()" (identifier "iVar3") (= "=") (call_expression "(**(code **)(puVar13 + 0x99234))()" (parenthesized_expression "(**(code **)(puVar13 + 0x99234))" (( "(") (pointer_expression "**(code **)(puVar13 + 0x99234)" (* "*") (pointer_expression "*(code **)(puVar13 + 0x99234)" (* "*") (cast_expression "(code **)(puVar13 + 0x99234)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0x99234)" (( "(") (binary_expression "puVar13 + 0x99234" (identifier "puVar13") (+ "+") (number_literal "0x99234")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }" (if "if") (parenthesized_expression "((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3))" (( "(") (binary_expression "(iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)" (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(iVar2 + 0x24) <= iVar3)" (( "(") (binary_expression "*(int *)(iVar2 + 0x24) <= iVar3" (pointer_expression "*(int *)(iVar2 + 0x24)" (* "*") (cast_expression "(int *)(iVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x24)" (( "(") (binary_expression "iVar2 + 0x24" (identifier "iVar2") (+ "+") (number_literal "0x24")) () ")")))) (<= "<=") (identifier "iVar3")) () ")"))) () ")")) (compound_statement "{\n        iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);\n        return iVar2;\n      }" ({ "{") (expression_statement "iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac);" (assignment_expression "iVar2 = (**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(puVar13 + 0x9997c))\n                          (*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac)" (parenthesized_expression "(**(code **)(puVar13 + 0x9997c))" (( "(") (pointer_expression "**(code **)(puVar13 + 0x9997c)" (* "*") (pointer_expression "*(code **)(puVar13 + 0x9997c)" (* "*") (cast_expression "(code **)(puVar13 + 0x9997c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0x9997c)" (( "(") (binary_expression "puVar13 + 0x9997c" (identifier "puVar13") (+ "+") (number_literal "0x9997c")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar13 + 0x99188) + -0x5a54,\n                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,\n                           *(int *)(puVar13 + 0x99188) + -0x2fac)" (( "(") (binary_expression "*(int *)(puVar13 + 0x99188) + -0x5a54" (pointer_expression "*(int *)(puVar13 + 0x99188)" (* "*") (cast_expression "(int *)(puVar13 + 0x99188)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + 0x99188)" (( "(") (binary_expression "puVar13 + 0x99188" (identifier "puVar13") (+ "+") (number_literal "0x99188")) () ")")))) (+ "+") (number_literal "-0x5a54")) (, ",") (binary_expression "*(int *)(puVar13 + 0x99188) + -0x5a60" (pointer_expression "*(int *)(puVar13 + 0x99188)" (* "*") (cast_expression "(int *)(puVar13 + 0x99188)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + 0x99188)" (( "(") (binary_expression "puVar13 + 0x99188" (identifier "puVar13") (+ "+") (number_literal "0x99188")) () ")")))) (+ "+") (number_literal "-0x5a60")) (, ",") (number_literal "0x28") (, ",") (binary_expression "*(int *)(puVar13 + 0x99188) + -0x2fac" (pointer_expression "*(int *)(puVar13 + 0x99188)" (* "*") (cast_expression "(int *)(puVar13 + 0x99188)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + 0x99188)" (( "(") (binary_expression "puVar13 + 0x99188" (identifier "puVar13") (+ "+") (number_literal "0x99188")) () ")")))) (+ "+") (number_literal "-0x2fac")) () ")")))) (; ";")) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));" (assignment_expression "iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4))" (identifier "iVar3") (= "=") (call_expression "conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4))" (identifier "conf_set_int") (argument_list "(param_3,*(undefined4 *)(iVar2 + 0x14),\n                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4))" (( "(") (identifier "param_3") (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4)" (* "*") (cast_expression "(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar2 + 0x30) + iVar3 * 4)" (( "(") (binary_expression "*(int *)(iVar2 + 0x30) + iVar3 * 4" (pointer_expression "*(int *)(iVar2 + 0x30)" (* "*") (cast_expression "(int *)(iVar2 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x30)" (( "(") (binary_expression "iVar2 + 0x30" (identifier "iVar2") (+ "+") (number_literal "0x30")) () ")")))) (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) () ")")))) (; ";")) (} "}"))) (} "}")))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) 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: (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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (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))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) right: (identifier))) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (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) (number_literal) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (pointer_expression argument: (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: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (number_literal) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) right: (identifier))) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) 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: (pointer_expression argument: (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) (identifier) (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 (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (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 (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))))))))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) right: (identifier))) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) 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: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (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 (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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))))))))) (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: (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))) consequence: (compound_statement (labeled_statement label: (statement_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 (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)) (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)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (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))))))) (goto_statement label: (statement_identifier))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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 (identifier) (identifier) (identifier)))))) alternative: (else_clause (compound_statement (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: (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (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: (identifier))))) consequence: (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 (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)) (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)) (number_literal) (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)))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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))))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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: (binary_expression left: (identifier) right: (number_literal))))))))))))))) (return_statement (identifier)))))

int MASKED(undefined4 param_1,uint *param_2,uint *param_3,int param_4)

{
  uint *puVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  uint *puVar5;
  uint *puVar6;
  int iVar7;
  uint uVar8;
  uint *puVar9;
  uint *puVar10;
  uint *puVar11;
  uint *puVar12;
  undefined *puVar13;
  code *pcVar14;
  uint local_30;
  int local_2c;
  
  puVar13 = PTR_shapetypes_456__000bd268;
  local_2c = *(int *)PTR___stack_chk_guard_000be114;
  puVar1 = param_2;
  puVar10 = param_2;
  if (3 < (int)param_3) {
    uVar8 = (uint)*(byte *)param_2 << 0x18 | (uint)*(byte *)((int)param_2 + 1) << 0x10 |
            (uint)(byte)*param_2 | (uint)*(byte *)((int)param_2 + 2) << 8;
    puVar9 = param_2 + 1;
    puVar10 = puVar9;
    if (uVar8 < 0xb8) {
      pcVar14 = (code *)(PTR_LAB_000bd204 + 0x218c);
      puVar6 = param_2;
      puVar11 = param_3;
      puVar12 = param_3 + -1;
      do {
        puVar5 = (uint *)0xc;
        puVar1 = (uint *)safemalloc(1,0xc);
        *puVar1 = uVar8;
        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x5d4c);
        puVar10 = puVar9;
        if (iVar2 == 1) {
          if ((int)puVar12 < 4) {
            safefree(puVar1);
            puVar1 = puVar5;
            break;
          }
          uVar8 = toint((uint)*(byte *)(puVar6 + 1) << 0x18 |
                        (uint)*(byte *)((int)puVar6 + 5) << 0x10 | (uint)*(byte *)((int)puVar6 + 7)
                        | (uint)*(byte *)((int)puVar6 + 6) << 8);
          puVar1[1] = uVar8;
          puVar9 = puVar6 + 2;
          puVar12 = puVar11 + -2;
        }
        else {
          param_3 = puVar12;
          if (iVar2 == 2) {
            puVar5 = (uint *)0x0;
            iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);
            if (iVar2 == 0) {
              safefree(puVar1);
              puVar1 = puVar5;
              break;
            }
            uVar8 = dupstr(puVar9);
            puVar1[1] = uVar8;
            puVar12 = (uint *)((int)puVar12 - ((iVar2 + 1) - (int)puVar9));
            puVar9 = (uint *)(iVar2 + 1);
          }
        }
        uVar8 = *puVar1;
        iVar2 = *(int *)(puVar13 + uVar8 * 4 + -0x602c);
        puVar10 = puVar9;
        if (iVar2 == 2) {
          puVar6 = (uint *)0x0;
          param_3 = puVar12;
          iVar2 = (*(code *)PTR_memchr_000bdf64)(puVar9,0,puVar12);
          if (iVar2 == 0) {
            if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {
              safefree(puVar1[1]);
            }
            safefree(puVar1);
            puVar1 = puVar6;
            break;
          }
          uVar8 = dupstr(puVar9);
          puVar1[2] = uVar8;
          puVar6 = (uint *)(iVar2 + 1);
          puVar12 = (uint *)((int)puVar12 - ((int)puVar6 - (int)puVar9));
        }
        else {
          puVar6 = puVar9;
          if (iVar2 < 3) {
            if (iVar2 == 1) {
              if ((int)puVar12 < 4) {
                if (*(int *)(PTR_shapetypes_456__000bd268 + uVar8 * 4 + -0x5d4c) == 2) {
                  safefree(puVar1[1]);
                }
                safefree(puVar1);
                puVar1 = puVar5;
                break;
              }
              uVar8 = toint((uint)*(byte *)puVar9 << 0x18 | (uint)*(byte *)((int)puVar9 + 1) << 0x10
                            | (uint)(byte)*puVar9 | (uint)*(byte *)((int)puVar9 + 2) << 8);
              puVar1[2] = uVar8;
              puVar6 = puVar9 + 1;
              puVar12 = puVar12 + -1;
            }
          }
          else if (iVar2 == 3) {
            param_3 = &local_30;
            puVar6 = puVar12;
            uVar8 = (*(code *)PTR_filename_deserialise_000bd30c)(puVar9,puVar12,param_3);
            puVar1[2] = uVar8;
            if (uVar8 == 0) {
              if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {
                safefree(puVar1[1]);
              }
              safefree(puVar1);
              puVar1 = puVar6;
              break;
            }
            puVar12 = (uint *)((int)puVar12 - local_30);
            puVar6 = (uint *)((int)puVar9 + local_30);
          }
          else {
            param_3 = &local_30;
            if (iVar2 == 4) {
              puVar6 = puVar12;
              uVar8 = (*(code *)PTR_fontspec_deserialise_000bd308)(puVar9,puVar12,param_3);
              puVar1[2] = uVar8;
              if (uVar8 == 0) {
                if (*(int *)(PTR_shapetypes_456__000bd268 + *puVar1 * 4 + -0x5d4c) == 2) {
                  safefree(puVar1[1]);
                }
                safefree(puVar1);
                puVar1 = puVar6;
                break;
              }
              puVar12 = (uint *)((int)puVar12 - local_30);
              puVar6 = (uint *)((int)puVar9 + local_30);
            }
          }
        }
        (*pcVar14)(param_1,puVar1);
        puVar9 = puVar6 + 1;
        puVar10 = puVar6;
        if ((int)puVar12 < 4) break;
        uVar8 = (uint)*(byte *)puVar6 << 0x18 | (uint)*(byte *)((int)puVar6 + 1) << 0x10 |
                (uint)(byte)*puVar6 | (uint)*(byte *)((int)puVar6 + 2) << 8;
        puVar10 = puVar9;
        puVar11 = puVar12;
        puVar12 = puVar12 + -1;
      } while (uVar8 < 0xb8);
    }
  }
  if (local_2c == *(int *)PTR___stack_chk_guard_000be114) {
    return (int)puVar10 - (int)param_2;
  }
  iVar2 = local_2c;
  puVar13 = PTR___stack_chk_fail_000bddb4;
  (*(code *)PTR___stack_chk_fail_000bddb4)();
  if (param_4 == 0) {
    iVar3 = conf_get_int(param_3,*(undefined4 *)(iVar2 + 0x14));
    iVar7 = *(int *)(puVar13 + 0x99188);
    if (*(int *)(iVar2 + 0x24) < 1) {
LAB_00024230:
      iVar2 = (**(code **)(puVar13 + 0x9997c))
                        (*(int *)(puVar13 + 0x99188) + -0x5a24,*(int *)(puVar13 + 0x99188) + -0x5a60
                         ,0x24,iVar7 + -0x2fac);
      return iVar2;
    }
    piVar4 = *(int **)(iVar2 + 0x30);
    iVar7 = 0;
    if (iVar3 != *piVar4) {
      iVar7 = 0;
      do {
        iVar7 = iVar7 + 1;
        piVar4 = piVar4 + 1;
        if (iVar7 == *(int *)(iVar2 + 0x24)) {
          iVar7 = *(int *)(puVar13 + 0x99188);
          goto LAB_00024230;
        }
      } while (*piVar4 != iVar3);
    }
    iVar3 = (**(code **)(puVar13 + 0x99230))(iVar2,puVar1,iVar7);
  }
  else {
    iVar3 = 2;
    if (param_4 == 2) {
      iVar3 = (**(code **)(puVar13 + 0x99234))();
      if ((iVar3 < 0) || (*(int *)(iVar2 + 0x24) <= iVar3)) {
        iVar2 = (**(code **)(puVar13 + 0x9997c))
                          (*(int *)(puVar13 + 0x99188) + -0x5a54,
                           *(int *)(puVar13 + 0x99188) + -0x5a60,0x28,
                           *(int *)(puVar13 + 0x99188) + -0x2fac);
        return iVar2;
      }
      iVar3 = conf_set_int(param_3,*(undefined4 *)(iVar2 + 0x14),
                           *(undefined4 *)(*(int *)(iVar2 + 0x30) + iVar3 * 4));
    }
  }
  return iVar3;
}

