
void pushOntoSorter(Parse *pParse,SortCtx *pSort,Select *pSelect,int regData,int regOrigData,
                   int nData,int nPrefixReg)

{
  byte bVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  Op *pOVar7;
  uint uVar8;
  u8 flags;
  undefined4 uVar9;
  int iVar10;
  KeyInfo *pKVar11;
  Vdbe *pVVar12;
  int iVar13;
  code *pcVar14;
  SortCtx *pSort_1;
  int target;
  int iVar15;
  int iStack_3c;
  int iStack_34;
  
  bVar1 = pSort->sortFlags;
  pVVar12 = pParse->pVdbe;
  iVar5 = pSort->pOrderBy->nExpr;
  uVar8 = ~(uint)bVar1 & 1;
  iVar15 = pSort->nOBSat;
  pSort_1 = (SortCtx *)(uVar8 + iVar5 + nData);
  if (nPrefixReg == 0) {
    target = pParse->nMem + 1;
    pParse->nMem = (int)&pSort_1->pOrderBy + pParse->nMem;
  }
  else {
    target = regData - nPrefixReg;
  }
  if (pSelect->iOffset == 0) {
    iVar13 = pSelect->iLimit;
  }
  else {
    iVar13 = pSelect->iOffset + 1;
  }
  flags = '\x01';
  if (regOrigData != 0) {
    flags = '\x05';
  }
  iVar6 = pParse->nLabel + -1;
  pParse->nLabel = iVar6;
  pSort->labelDone = iVar6;
  sqlite3ExprCodeExprList(pParse,pSort->pOrderBy,target,regOrigData,flags);
  if ((bVar1 & 1) == 0) {
    (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x78,pSort->iECursor,target + iVar5,0);
  }
  if ((nPrefixReg == 0) && (0 < nData)) {
    (*(code *)(PTR_LAB_0015b710 + -0x3890))(pParse->pVdbe,0x4d,regData,target + iVar5 + uVar8,nData)
    ;
  }
  if (iVar15 < 1) {
    if (iVar13 != 0) {
      iVar6 = 0;
      pcVar14 = (code *)(PTR_LAB_0015b710 + -0x3890);
      iVar10 = pVVar12->nOp;
LAB_000c34ac:
      iStack_3c = target + iVar15;
      iVar3 = pSort->iECursor;
      (*pcVar14)(pVVar12,0x30,iVar13,iVar10 + 4,0);
      (*pcVar14)(pVVar12,0x20,iVar3,0,0);
      iVar13 = (*pcVar14)(pVVar12,0x25,iVar3,0,iStack_3c);
      if (pVVar12->db->mallocFailed == '\0') {
        pOVar7 = pVVar12->aOp;
        pOVar7[iVar13].p4.p = (void *)(iVar5 - iVar15);
        pOVar7[iVar13].p4type = -3;
      }
      (*pcVar14)(pVVar12,0x7b,iVar3,0,0);
      goto LAB_000c3544;
    }
  }
  else {
    iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,
                             (int)pSelect,target,pSort_1);
    iVar3 = pParse->nMem + 1;
    pParse->nMem = pSort->nOBSat + pParse->nMem;
    puVar2 = PTR_LAB_0015b710;
    iVar10 = pSort->nOBSat;
    if ((bVar1 & 1) == 0) {
      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x14,target + iVar5,0,0);
    }
    else {
      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x73,pSort->iECursor,0,0);
    }
    pcVar14 = (code *)(puVar2 + -0x3890);
    (*pcVar14)(pVVar12,0x57,iVar3,target,pSort->nOBSat);
    puVar2 = PTR_memset_0015b9b4;
    iVar4 = pSort->addrSortIndex;
    if (iVar4 < 0) {
      iVar4 = pVVar12->nOp + -1;
    }
    if (pVVar12->db->mallocFailed == '\0') {
      pOVar7 = pVVar12->aOp + iVar4;
    }
    else {
      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);
    }
    if (pParse->db->mallocFailed != '\0') {
      return;
    }
    pKVar11 = (pOVar7->p4).pKeyInfo;
    pOVar7->p2 = (iVar5 - iVar10) + uVar8 + nData;
    (*(code *)puVar2)(pKVar11->aSortOrder,0,pKVar11->nKeyField);
    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(pVVar12,0xffffffff,pKVar11,0xfffffff7);
    iVar10 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))
                       (pParse,pSort->pOrderBy,iVar15,
                        ((uint)pKVar11->nAllField - (uint)pKVar11->nKeyField) + -1);
    (pOVar7->p4).i = iVar10;
    iStack_34 = pVVar12->nOp;
    (*pcVar14)(pVVar12,0x10,iStack_34 + 1,0,iStack_34 + 1);
    iVar10 = pParse->nLabel + -1;
    pParse->nLabel = iVar10;
    pSort->labelBkOut = iVar10;
    iVar10 = pParse->nMem + 1;
    pParse->nMem = iVar10;
    pSort->regReturn = iVar10;
    (*pcVar14)(pVVar12,0xc,iVar10,pSort->labelBkOut,0);
    (*pcVar14)(pVVar12,0x8a,pSort->iECursor,0,0);
    if (iVar13 != 0) {
      (*pcVar14)(pVVar12,0x14,iVar13,pSort->labelDone,0);
    }
    if (iStack_3c < 0) {
      iStack_3c = pVVar12->nOp + -1;
    }
    if (pVVar12->db->mallocFailed == '\0') {
      pOVar7 = pVVar12->aOp + iStack_3c;
    }
    else {
      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);
    }
    pOVar7->p2 = pVVar12->nOp;
    (*pcVar14)(pParse->pVdbe,0x4d,target,iVar3,pSort->nOBSat);
    if (iStack_34 < 0) {
      iStack_34 = pVVar12->nOp + -1;
    }
    if (pVVar12->db->mallocFailed == '\0') {
      pOVar7 = pVVar12->aOp + iStack_34;
    }
    else {
      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);
    }
    pOVar7->p2 = pVVar12->nOp;
    if (iVar13 != 0) {
      iVar10 = pVVar12->nOp;
      goto LAB_000c34ac;
    }
LAB_000c3544:
    if (iVar6 != 0) goto LAB_000c3588;
  }
  iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,
                           (int)pSelect,target,pSort_1);
LAB_000c3588:
  iStack_3c = target + iVar15;
  uVar9 = 0x83;
  if ((pSort->sortFlags & 1) == 0) {
    uVar9 = 0x84;
  }
  (*(code *)(PTR_LAB_0015b710 + -0x35f0))
            (pVVar12,uVar9,pSort->iECursor,iVar6,iStack_3c,(int)pSort_1 - iVar15);
  if (iVar13 != 0) {
    iVar5 = pSort->labelOBLopt;
    if (iVar5 == 0) {
      iVar5 = pVVar12->nOp;
    }
    if (iVar13 < 0) {
      iVar13 = pVVar12->nOp + -1;
    }
    if (pVVar12->db->mallocFailed == '\0') {
      pVVar12->aOp[iVar13].p2 = iVar5;
    }
    else {
      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar5;
    }
  }
  return;
}



void FUN_000c3350(int *param_1,undefined4 *param_2,int param_3,int param_4,int param_5,int param_6,
                 int param_7)

{
  byte bVar1;
  int iVar2;
  undefined *puVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  undefined4 uVar8;
  int iVar9;
  undefined *puVar10;
  int *piVar11;
  int iVar12;
  code *pcVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  int local_3c;
  int local_34;
  
  bVar1 = *(byte *)(param_2 + 8);
  piVar11 = (int *)param_1[2];
  iVar4 = *(int *)*param_2;
  uVar7 = ~(uint)bVar1 & 1;
  iVar16 = param_2[1];
  iVar14 = uVar7 + iVar4 + param_6;
  if (param_7 == 0) {
    iVar15 = param_1[0xb] + 1;
    param_1[0xb] = param_1[0xb] + iVar14;
  }
  else {
    iVar15 = param_4 - param_7;
  }
  if (*(int *)(param_3 + 0x10) == 0) {
    iVar12 = *(int *)(param_3 + 0xc);
  }
  else {
    iVar12 = *(int *)(param_3 + 0x10) + 1;
  }
  iVar6 = param_1[0xe];
  uVar8 = 1;
  if (param_5 != 0) {
    uVar8 = 5;
  }
  param_1[0xe] = iVar6 + -1;
  param_2[6] = iVar6 + -1;
  FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8);
  if ((bVar1 & 1) == 0) {
    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);
  }
  if ((param_7 == 0) && (0 < param_6)) {
    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);
  }
  if (iVar16 < 1) {
    if (iVar12 != 0) {
      iVar6 = 0;
      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);
      iVar9 = piVar11[0x1b];
LAB_000c34ac:
      local_3c = iVar15 + iVar16;
      uVar8 = param_2[2];
      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);
      (*pcVar13)(piVar11,0x20,uVar8,0,0);
      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);
      if (*(char *)(*piVar11 + 0x51) == '\0') {
        iVar9 = piVar11[0x1a] + iVar12 * 0x14;
        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;
        *(undefined1 *)(iVar9 + 1) = 0xfd;
      }
      (*pcVar13)(piVar11,0x7b,uVar8,0,0);
      goto LAB_000c3544;
    }
  }
  else {
    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);
    iVar5 = param_1[0xb] + 1;
    param_1[0xb] = param_2[1] + param_1[0xb];
    puVar3 = PTR_LAB_0015b710;
    iVar9 = param_2[1];
    if ((bVar1 & 1) == 0) {
      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);
    }
    else {
      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);
    }
    pcVar13 = (code *)(puVar3 + -0x3890);
    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);
    puVar3 = PTR_memset_0015b9b4;
    iVar2 = param_2[5];
    if (iVar2 < 0) {
      iVar2 = piVar11[0x1b] + -1;
    }
    if (*(char *)(*piVar11 + 0x51) == '\0') {
      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);
    }
    else {
      puVar10 = PTR_DAT_0015b5d8 + -0x4514;
    }
    if (*(char *)(*param_1 + 0x51) != '\0') {
      return;
    }
    iVar2 = *(int *)(puVar10 + 0x10);
    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;
    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));
    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);
    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))
                      (param_1,*param_2,iVar16,
                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);
    *(undefined4 *)(puVar10 + 0x10) = uVar8;
    local_34 = piVar11[0x1b];
    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);
    iVar9 = param_1[0xe];
    param_1[0xe] = iVar9 + -1;
    param_2[4] = iVar9 + -1;
    iVar9 = param_1[0xb] + 1;
    param_1[0xb] = iVar9;
    param_2[3] = iVar9;
    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);
    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);
    if (iVar12 != 0) {
      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);
    }
    if (local_3c < 0) {
      local_3c = piVar11[0x1b] + -1;
    }
    if (*(char *)(*piVar11 + 0x51) == '\0') {
      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);
    }
    else {
      puVar3 = PTR_DAT_0015b5d8 + -0x4514;
    }
    *(int *)(puVar3 + 8) = piVar11[0x1b];
    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);
    if (local_34 < 0) {
      local_34 = piVar11[0x1b] + -1;
    }
    if (*(char *)(*piVar11 + 0x51) == '\0') {
      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);
    }
    else {
      puVar3 = PTR_DAT_0015b5d8 + -0x4514;
    }
    *(int *)(puVar3 + 8) = piVar11[0x1b];
    if (iVar12 != 0) {
      iVar9 = piVar11[0x1b];
      goto LAB_000c34ac;
    }
LAB_000c3544:
    if (iVar6 != 0) goto LAB_000c3588;
  }
  iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);
LAB_000c3588:
  local_3c = iVar15 + iVar16;
  uVar8 = 0x83;
  if ((*(byte *)(param_2 + 8) & 1) == 0) {
    uVar8 = 0x84;
  }
  (*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16);
  if (iVar12 != 0) {
    iVar4 = param_2[7];
    if (iVar4 == 0) {
      iVar4 = piVar11[0x1b];
    }
    if (iVar12 < 0) {
      iVar12 = piVar11[0x1b] + -1;
    }
    if (*(char *)(*piVar11 + 0x51) == '\0') {
      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;
    }
    else {
      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;
    }
  }
  return;
}


lui gp,0xa
addiu gp,gp,0x260
addu gp,gp,t9
addiu sp,sp,-0x60
sw s8,0x58(sp)
sw s7,0x54(sp)
or s7,a0,zero
sw s6,0x50(sp)
or s6,a1,zero
sw s3,0x44(sp)
sw gp,0x18(sp)
sw ra,0x5c(sp)
sw s5,0x4c(sp)
sw s4,0x48(sp)
sw s2,0x40(sp)
sw s1,0x3c(sp)
sw s0,0x38(sp)
lw a1,0x0(a1)
lbu a0,0x20(s6)
lw v0,0x70(sp)
lw s0,0x8(s7)
lw v1,0x0(a1)
nor a1,zero,a0
andi a1,a1,0x1
lw s5,0x4(s6)
andi a0,a0,0x1
sw a2,0x68(sp)
addu s3,a1,v1
sw v1,0x28(sp)
lw v1,0x74(sp)
sw a1,0x2c(sp)
sw a0,0x24(sp)
addu s3,s3,v1
lw v1,0x78(sp)
beq v1,zero,0x000c363c
_or s8,a3,zero
subu s4,a3,v1
lw v1,0x68(sp)
lw s1,0x10(v1)
beq s1,zero,0x000c3634
_nop
addiu s1,s1,0x1
li a2,0x5
lw a0,0x38(s7)
li a1,0x1
lw t9,-0x7d3c(gp)
or a3,v0,zero
movn a1,a2,v0
addiu a0,a0,-0x1
addiu t9,t9,0x2b34
sw a0,0x38(s7)
or a2,s4,zero
sw a0,0x18(s6)
or a0,s7,zero
sw a1,0x10(sp)
bal 0x000c2b34
_lw a1,0x0(s6)
lw v0,0x24(sp)
beq v0,zero,0x000c3908
_lw gp,0x18(sp)
lw v0,0x78(sp)
bne v0,zero,0x000c3488
_lw v0,0x74(sp)
blez v0,0x000c3488
_lw v0,0x28(sp)
li a1,0x4d
lw s2,-0x7ea0(gp)
or a2,s8,zero
lw a0,0x8(s7)
addu a3,s4,v0
lw v0,0x2c(sp)
addiu s2,s2,-0x3890
addu a3,a3,v0
lw v0,0x74(sp)
or t9,s2,zero
jalr t9
_sw v0,0x10(sp)
lw gp,0x18(sp)
bgtz s5,0x000c3650
_lw t9,-0x7d3c(gp)
beq s1,zero,0x000c3554
_lw s2,-0x7ea0(gp)
addu v0,s4,s5
or s8,zero,zero
sw v0,0x24(sp)
addiu s2,s2,-0x3890
lw a3,0x6c(s0)
li a1,0x30
lw v0,0x8(s6)
or a2,s1,zero
or a0,s0,zero
sw zero,0x10(sp)
addiu a3,a3,0x4
or t9,s2,zero
jalr t9
_sw v0,0x2c(sp)
or a3,zero,zero
lw s1,0x2c(sp)
li a1,0x20
or a0,s0,zero
sw zero,0x10(sp)
or t9,s2,zero
jalr t9
_or a2,s1,zero
or a3,zero,zero
lw v0,0x24(sp)
li a1,0x25
or a2,s1,zero
or a0,s0,zero
or t9,s2,zero
jalr t9
_sw v0,0x10(sp)
lw a0,0x0(s0)
or s1,v0,zero
lbu v0,0x51(a0)
beq v0,zero,0x000c3984
_sll v0,s1,0x2
lw a2,0x2c(sp)
or a3,zero,zero
li a1,0x7b
sw zero,0x10(sp)
or t9,s2,zero
jalr t9
_or a0,s0,zero
lw gp,0x18(sp)
bne s8,zero,0x000c3588
_lw t9,-0x7d3c(gp)
b 0x000c3564
_addiu a2,s6,0x24
addu v0,s4,s5
sw v0,0x24(sp)
lw t9,-0x7d3c(gp)
addiu a2,s6,0x24
lw a1,0x4(s6)
or a0,s7,zero
lw a3,0x68(sp)
addiu t9,t9,0x32a4
sw s3,0x14(sp)
bal 0x000c32a4
_sw s4,0x10(sp)
lw gp,0x18(sp)
or s8,v0,zero
lbu v0,0x20(s6)
li a0,0x84
li a1,0x83
lw t9,-0x7ea0(gp)
lw v1,0x24(sp)
subu s3,s3,s5
andi v0,v0,0x1
lw a2,0x8(s6)
movz a1,a0,v0
addiu t9,t9,-0x35f0
or a3,s8,zero
sw v1,0x10(sp)
or a0,s0,zero
jalr t9
_sw s3,0x14(sp)
beq s1,zero,0x000c3604
_lw gp,0x18(sp)
lw v1,0x1c(s6)
beq v1,zero,0x000c397c
_nop
bgez s1,0x000c35e8
_nop
lw s1,0x6c(s0)
addiu s1,s1,-0x1
lw v0,0x0(s0)
lbu v0,0x51(v0)
beq v0,zero,0x000c3964
_sll a0,s1,0x2
lw s1,-0x7fd8(gp)
addiu s1,s1,-0x4514
sw v1,0x8(s1)
lw ra,0x5c(sp)
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x60
b 0x000c33f8
_lw s1,0xc(v1)
lw s4,0x2c(s7)
addu a0,s4,s3
addiu s4,s4,0x1
b 0x000c33e4
_sw a0,0x2c(s7)
addiu a2,s6,0x24
lw a1,0x4(s6)
or a0,s7,zero
lw a3,0x68(sp)
addiu t9,t9,0x32a4
sw s3,0x14(sp)
bal 0x000c32a4
_sw s4,0x10(sp)
or a3,zero,zero
lw a0,0x2c(s7)
or s8,v0,zero
lw v0,0x4(s6)
lw gp,0x18(sp)
addiu v1,a0,0x1
addu v0,v0,a0
sw v1,0x30(sp)
sw v0,0x2c(s7)
lw v0,0x4(s6)
sw v0,0x34(sp)
lw v0,0x24(sp)
bne v0,zero,0x000c3940
_lw s2,-0x7ea0(gp)
lw v0,0x28(sp)
addiu s2,s2,-0x3890
li a1,0x14
sw zero,0x10(sp)
or a0,s0,zero
or t9,s2,zero
jalr t9
_addu a2,s4,v0
sw v0,0x24(sp)
lw v0,0x4(s6)
li a1,0x57
lw a2,0x30(sp)
or a3,s4,zero
or a0,s0,zero
or t9,s2,zero
jalr t9
_sw v0,0x10(sp)
lw v0,0x14(s6)
bgez v0,0x000c3700
_lw gp,0x18(sp)
lw v0,0x6c(s0)
addiu v0,v0,-0x1
lw a0,0x0(s0)
lbu a0,0x51(a0)
bne a0,zero,0x000c3938
_lw t1,-0x7fd8(gp)
sll a0,v0,0x2
lw t1,0x68(s0)
addu v0,a0,v0
sll v0,v0,0x2
addu t1,t1,v0
lw v0,0x0(s7)
lbu v0,0x51(v0)
bne v0,zero,0x000c3608
_lw ra,0x5c(sp)
lw v1,0x34(sp)
or a1,zero,zero
lw v0,0x28(sp)
lw t2,0x10(t1)
lw t9,-0x7bfc(gp)
subu v0,v0,v1
lw v1,0x2c(sp)
sw t1,0x34(sp)
sw t2,0x2c(sp)
addu v0,v0,v1
lw v1,0x74(sp)
addu v0,v0,v1
sw v0,0x8(t1)
lhu a2,0x6(t2)
jalr t9
_lw a0,0x10(t2)
li a3,-0x9
lw gp,0x18(sp)
li a1,-0x1
lw t2,0x2c(sp)
or a0,s0,zero
lw t9,-0x7ef0(gp)
addiu t9,t9,0x4110
jalr t9
_or a2,t2,zero
or a2,s5,zero
lw t2,0x2c(sp)
or a0,s7,zero
lw gp,0x18(sp)
lw a1,0x0(s6)
lhu a3,0x8(t2)
lhu v0,0x6(t2)
lw t9,-0x7e9c(gp)
subu a3,a3,v0
addiu t9,t9,-0x7fc4
jalr t9
_addiu a3,a3,-0x1
or a3,zero,zero
lw t1,0x34(sp)
li a1,0x10
or a0,s0,zero
or t9,s2,zero
sw v0,0x10(t1)
lw v0,0x6c(s0)
sw v0,0x2c(sp)
addiu v0,v0,0x1
or a2,v0,zero
jalr t9
_sw v0,0x10(sp)
li a1,0xc
lw v0,0x38(s7)
or a0,s0,zero
sw zero,0x10(sp)
or t9,s2,zero
addiu v0,v0,-0x1
sw v0,0x38(s7)
sw v0,0x10(s6)
lw v0,0x2c(s7)
addiu v0,v0,0x1
sw v0,0x2c(s7)
or a2,v0,zero
sw v0,0xc(s6)
jalr t9
_lw a3,0x10(s6)
or a3,zero,zero
lw a2,0x8(s6)
li a1,0x8a
sw zero,0x10(sp)
or t9,s2,zero
jalr t9
_or a0,s0,zero
bne s1,zero,0x000c39c0
_lw gp,0x18(sp)
lw v0,0x24(sp)
bltz v0,0x000c39b4
_lw a1,0x6c(s0)
lw v0,0x0(s0)
lbu v0,0x51(v0)
bne v0,zero,0x000c39ac
_lw v0,-0x7fd8(gp)
lw v1,0x24(sp)
lw v0,0x68(s0)
sll a0,v1,0x2
addu a0,a0,v1
sll a0,a0,0x2
addu v0,v0,a0
lw a3,0x30(sp)
or a2,s4,zero
sw a1,0x8(v0)
li a1,0x4d
lw v0,0x4(s6)
or t9,s2,zero
lw a0,0x8(s7)
jalr t9
_sw v0,0x10(sp)
lw v0,0x2c(sp)
lw gp,0x18(sp)
bgez v0,0x000c38c8
_lw a1,0x6c(s0)
addiu v0,a1,-0x1
sw v0,0x2c(sp)
lw v0,0x0(s0)
lbu v0,0x51(v0)
bne v0,zero,0x000c39e4
_lw v0,-0x7fd8(gp)
lw v1,0x2c(sp)
lw v0,0x68(s0)
sll a0,v1,0x2
addu a0,a0,v1
sll a0,a0,0x2
addu v0,v0,a0
sw a1,0x8(v0)
addu v0,s4,s5
beq s1,zero,0x000c3544
_sw v0,0x24(sp)
b 0x000c34ac
_lw a3,0x6c(s0)
lw s2,-0x7ea0(gp)
li a1,0x78
lw v0,0x28(sp)
or a0,s0,zero
lw a2,0x8(s6)
addiu s2,s2,-0x3890
sw zero,0x10(sp)
or t9,s2,zero
jalr t9
_addu a3,s4,v0
b 0x000c3440
_lw gp,0x18(sp)
b 0x000c3724
_addiu t1,t1,-0x4514
lw a2,0x8(s6)
addiu s2,s2,-0x3890
li a1,0x73
sw zero,0x10(sp)
or t9,s2,zero
jalr t9
_or a0,s0,zero
b 0x000c36cc
_sw v0,0x24(sp)
lw v0,0x68(s0)
addu s1,a0,s1
sll s1,s1,0x2
addu s1,v0,s1
b 0x000c3604
_sw v1,0x8(s1)
b 0x000c35d8
_lw v1,0x6c(s0)
lw a0,0x68(s0)
lw v1,0x28(sp)
addu v0,v0,s1
sll v0,v0,0x2
subu v1,v1,s5
addu v0,a0,v0
li a0,-0x3
sw v1,0x10(v0)
b 0x000c3524
_sb a0,0x1(v0)
b 0x000c388c
_addiu v0,v0,-0x4514
addiu v0,a1,-0x1
b 0x000c3864
_sw v0,0x24(sp)
lw a3,0x18(s6)
li a1,0x14
sw zero,0x10(sp)
or a2,s1,zero
or t9,s2,zero
jalr t9
_or a0,s0,zero
b 0x000c3858
_lw gp,0x18(sp)
b 0x000c38f0
_addiu v0,v0,-0x4514
(translation_unit "void FUN_000c3350(int *param_1,undefined4 *param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  int *piVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  int local_3c;\n  int local_34;\n  \n  bVar1 = *(byte *)(param_2 + 8);\n  piVar11 = (int *)param_1[2];\n  iVar4 = *(int *)*param_2;\n  uVar7 = ~(uint)bVar1 & 1;\n  iVar16 = param_2[1];\n  iVar14 = uVar7 + iVar4 + param_6;\n  if (param_7 == 0) {\n    iVar15 = param_1[0xb] + 1;\n    param_1[0xb] = param_1[0xb] + iVar14;\n  }\n  else {\n    iVar15 = param_4 - param_7;\n  }\n  if (*(int *)(param_3 + 0x10) == 0) {\n    iVar12 = *(int *)(param_3 + 0xc);\n  }\n  else {\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }\n  iVar6 = param_1[0xe];\n  uVar8 = 1;\n  if (param_5 != 0) {\n    uVar8 = 5;\n  }\n  param_1[0xe] = iVar6 + -1;\n  param_2[6] = iVar6 + -1;\n  FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8);\n  if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);\n  }\n  if ((param_7 == 0) && (0 < param_6)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);\n  }\n  if (iVar16 < 1) {\n    if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }\n  iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\nLAB_000c3588:\n  local_3c = iVar15 + iVar16;\n  uVar8 = 0x83;\n  if ((*(byte *)(param_2 + 8) & 1) == 0) {\n    uVar8 = 0x84;\n  }\n  (*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16);\n  if (iVar12 != 0) {\n    iVar4 = param_2[7];\n    if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }\n    if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_000c3350(int *param_1,undefined4 *param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  int *piVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  int local_3c;\n  int local_34;\n  \n  bVar1 = *(byte *)(param_2 + 8);\n  piVar11 = (int *)param_1[2];\n  iVar4 = *(int *)*param_2;\n  uVar7 = ~(uint)bVar1 & 1;\n  iVar16 = param_2[1];\n  iVar14 = uVar7 + iVar4 + param_6;\n  if (param_7 == 0) {\n    iVar15 = param_1[0xb] + 1;\n    param_1[0xb] = param_1[0xb] + iVar14;\n  }\n  else {\n    iVar15 = param_4 - param_7;\n  }\n  if (*(int *)(param_3 + 0x10) == 0) {\n    iVar12 = *(int *)(param_3 + 0xc);\n  }\n  else {\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }\n  iVar6 = param_1[0xe];\n  uVar8 = 1;\n  if (param_5 != 0) {\n    uVar8 = 5;\n  }\n  param_1[0xe] = iVar6 + -1;\n  param_2[6] = iVar6 + -1;\n  FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8);\n  if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);\n  }\n  if ((param_7 == 0) && (0 < param_6)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);\n  }\n  if (iVar16 < 1) {\n    if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }\n  iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\nLAB_000c3588:\n  local_3c = iVar15 + iVar16;\n  uVar8 = 0x83;\n  if ((*(byte *)(param_2 + 8) & 1) == 0) {\n    uVar8 = 0x84;\n  }\n  (*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16);\n  if (iVar12 != 0) {\n    iVar4 = param_2[7];\n    if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }\n    if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000c3350(int *param_1,undefined4 *param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7)" identifier (parameter_list "(int *param_1,undefined4 *param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  int *piVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  int local_3c;\n  int local_34;\n  \n  bVar1 = *(byte *)(param_2 + 8);\n  piVar11 = (int *)param_1[2];\n  iVar4 = *(int *)*param_2;\n  uVar7 = ~(uint)bVar1 & 1;\n  iVar16 = param_2[1];\n  iVar14 = uVar7 + iVar4 + param_6;\n  if (param_7 == 0) {\n    iVar15 = param_1[0xb] + 1;\n    param_1[0xb] = param_1[0xb] + iVar14;\n  }\n  else {\n    iVar15 = param_4 - param_7;\n  }\n  if (*(int *)(param_3 + 0x10) == 0) {\n    iVar12 = *(int *)(param_3 + 0xc);\n  }\n  else {\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }\n  iVar6 = param_1[0xe];\n  uVar8 = 1;\n  if (param_5 != 0) {\n    uVar8 = 5;\n  }\n  param_1[0xe] = iVar6 + -1;\n  param_2[6] = iVar6 + -1;\n  FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8);\n  if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);\n  }\n  if ((param_7 == 0) && (0 < param_6)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);\n  }\n  if (iVar16 < 1) {\n    if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }\n  iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\nLAB_000c3588:\n  local_3c = iVar15 + iVar16;\n  uVar8 = 0x83;\n  if ((*(byte *)(param_2 + 8) & 1) == 0) {\n    uVar8 = 0x84;\n  }\n  (*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16);\n  if (iVar12 != 0) {\n    iVar4 = param_2[7];\n    if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }\n    if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (expression_statement "bVar1 = *(byte *)(param_2 + 8);" (assignment_expression "bVar1 = *(byte *)(param_2 + 8)" identifier = (pointer_expression "*(byte *)(param_2 + 8)" * (cast_expression "(byte *)(param_2 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "piVar11 = (int *)param_1[2];" (assignment_expression "piVar11 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar4 = *(int *)*param_2;" (assignment_expression "iVar4 = *(int *)*param_2" identifier = (pointer_expression "*(int *)*param_2" * (cast_expression "(int *)*param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)))) ;) (expression_statement "uVar7 = ~(uint)bVar1 & 1;" (assignment_expression "uVar7 = ~(uint)bVar1 & 1" identifier = (binary_expression "~(uint)bVar1 & 1" (unary_expression "~(uint)bVar1" ~ (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal)) ;) (expression_statement "iVar16 = param_2[1];" (assignment_expression "iVar16 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "iVar14 = uVar7 + iVar4 + param_6;" (assignment_expression "iVar14 = uVar7 + iVar4 + param_6" identifier = (binary_expression "uVar7 + iVar4 + param_6" (binary_expression "uVar7 + iVar4" identifier + identifier) + identifier)) ;) (if_statement "if (param_7 == 0) {\n    iVar15 = param_1[0xb] + 1;\n    param_1[0xb] = param_1[0xb] + iVar14;\n  }\n  else {\n    iVar15 = param_4 - param_7;\n  }" if (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar15 = param_1[0xb] + 1;\n    param_1[0xb] = param_1[0xb] + iVar14;\n  }" { (expression_statement "iVar15 = param_1[0xb] + 1;" (assignment_expression "iVar15 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = param_1[0xb] + iVar14;" (assignment_expression "param_1[0xb] = param_1[0xb] + iVar14" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_1[0xb] + iVar14" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + identifier)) ;) }) (else_clause "else {\n    iVar15 = param_4 - param_7;\n  }" else (compound_statement "{\n    iVar15 = param_4 - param_7;\n  }" { (expression_statement "iVar15 = param_4 - param_7;" (assignment_expression "iVar15 = param_4 - param_7" identifier = (binary_expression "param_4 - param_7" identifier - identifier)) ;) }))) (if_statement "if (*(int *)(param_3 + 0x10) == 0) {\n    iVar12 = *(int *)(param_3 + 0xc);\n  }\n  else {\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }" if (parenthesized_expression "(*(int *)(param_3 + 0x10) == 0)" ( (binary_expression "*(int *)(param_3 + 0x10) == 0" (pointer_expression "*(int *)(param_3 + 0x10)" * (cast_expression "(int *)(param_3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    iVar12 = *(int *)(param_3 + 0xc);\n  }" { (expression_statement "iVar12 = *(int *)(param_3 + 0xc);" (assignment_expression "iVar12 = *(int *)(param_3 + 0xc)" identifier = (pointer_expression "*(int *)(param_3 + 0xc)" * (cast_expression "(int *)(param_3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }" else (compound_statement "{\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }" { (expression_statement "iVar12 = *(int *)(param_3 + 0x10) + 1;" (assignment_expression "iVar12 = *(int *)(param_3 + 0x10) + 1" identifier = (binary_expression "*(int *)(param_3 + 0x10) + 1" (pointer_expression "*(int *)(param_3 + 0x10)" * (cast_expression "(int *)(param_3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) + number_literal)) ;) }))) (expression_statement "iVar6 = param_1[0xe];" (assignment_expression "iVar6 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (if_statement "if (param_5 != 0) {\n    uVar8 = 5;\n  }" if (parenthesized_expression "(param_5 != 0)" ( (binary_expression "param_5 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar8 = 5;\n  }" { (expression_statement "uVar8 = 5;" (assignment_expression "uVar8 = 5" identifier = number_literal) ;) })) (expression_statement "param_1[0xe] = iVar6 + -1;" (assignment_expression "param_1[0xe] = iVar6 + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "param_2[6] = iVar6 + -1;" (assignment_expression "param_2[6] = iVar6 + -1" (subscript_expression "param_2[6]" identifier [ number_literal ]) = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8);" (call_expression "FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8)" identifier (argument_list "(param_1,*param_2,iVar15,param_5,uVar8)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , identifier , identifier ))) ;) (if_statement "if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);\n  }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);\n  }" { (expression_statement "(*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);" (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) )) (argument_list "(piVar11,0x78,param_2[2],iVar15 + iVar4,0)" ( identifier , number_literal , (subscript_expression "param_2[2]" identifier [ number_literal ]) , (binary_expression "iVar15 + iVar4" identifier + identifier) , number_literal ))) ;) })) (if_statement "if ((param_7 == 0) && (0 < param_6)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);\n  }" if (parenthesized_expression "((param_7 == 0) && (0 < param_6))" ( (binary_expression "(param_7 == 0) && (0 < param_6)" (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) )) && (parenthesized_expression "(0 < param_6)" ( (binary_expression "0 < param_6" number_literal < identifier) ))) )) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);\n  }" { (expression_statement "(*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);" (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) )) (argument_list "(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6)" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , number_literal , identifier , (binary_expression "iVar15 + iVar4 + uVar7" (binary_expression "iVar15 + iVar4" identifier + identifier) + identifier) , identifier ))) ;) })) (if_statement "if (iVar16 < 1) {\n    if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }" if (parenthesized_expression "(iVar16 < 1)" ( (binary_expression "iVar16 < 1" identifier < number_literal) )) (compound_statement "{\n    if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }\n  }" { (if_statement "if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);" (assignment_expression "pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890)" identifier = (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) ;) (expression_statement "iVar9 = piVar11[0x1b];" (assignment_expression "iVar9 = piVar11[0x1b]" identifier = (subscript_expression "piVar11[0x1b]" identifier [ number_literal ])) ;) (labeled_statement "LAB_000c34ac:\n      local_3c = iVar15 + iVar16;" statement_identifier : (expression_statement "local_3c = iVar15 + iVar16;" (assignment_expression "local_3c = iVar15 + iVar16" identifier = (binary_expression "iVar15 + iVar16" identifier + identifier)) ;)) (expression_statement "uVar8 = param_2[2];" (assignment_expression "uVar8 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "(*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);" (call_expression "(*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x30,iVar12,iVar9 + 4,0)" ( identifier , number_literal , identifier , (binary_expression "iVar9 + 4" identifier + number_literal) , number_literal ))) ;) (expression_statement "(*pcVar13)(piVar11,0x20,uVar8,0,0);" (call_expression "(*pcVar13)(piVar11,0x20,uVar8,0,0)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x20,uVar8,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal ))) ;) (expression_statement "iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);" (assignment_expression "iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c)" identifier = (call_expression "(*pcVar13)(piVar11,0x25,uVar8,0,local_3c)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x25,uVar8,0,local_3c)" ( identifier , number_literal , identifier , number_literal , identifier )))) ;) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" * (cast_expression "(char *)(*piVar11 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x51)" ( (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }" { (expression_statement "iVar9 = piVar11[0x1a] + iVar12 * 0x14;" (assignment_expression "iVar9 = piVar11[0x1a] + iVar12 * 0x14" identifier = (binary_expression "piVar11[0x1a] + iVar12 * 0x14" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + (binary_expression "iVar12 * 0x14" identifier * number_literal))) ;) (expression_statement "*(int *)(iVar9 + 0x10) = iVar4 - iVar16;" (assignment_expression "*(int *)(iVar9 + 0x10) = iVar4 - iVar16" (pointer_expression "*(int *)(iVar9 + 0x10)" * (cast_expression "(int *)(iVar9 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x10)" ( (binary_expression "iVar9 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar4 - iVar16" identifier - identifier)) ;) (expression_statement "*(undefined1 *)(iVar9 + 1) = 0xfd;" (assignment_expression "*(undefined1 *)(iVar9 + 1) = 0xfd" (pointer_expression "*(undefined1 *)(iVar9 + 1)" * (cast_expression "(undefined1 *)(iVar9 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 1)" ( (binary_expression "iVar9 + 1" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "(*pcVar13)(piVar11,0x7b,uVar8,0,0);" (call_expression "(*pcVar13)(piVar11,0x7b,uVar8,0,0)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x7b,uVar8,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal ))) ;) (goto_statement "goto LAB_000c3544;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }" else (compound_statement "{\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }" { (expression_statement "iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);" (assignment_expression "iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" identifier = (call_expression "FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" identifier (argument_list "(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" ( identifier , (subscript_expression "param_2[1]" identifier [ number_literal ]) , (binary_expression "param_2 + 9" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "iVar5 = param_1[0xb] + 1;" (assignment_expression "iVar5 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = param_2[1] + param_1[0xb];" (assignment_expression "param_1[0xb] = param_2[1] + param_1[0xb]" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_2[1] + param_1[0xb]" (subscript_expression "param_2[1]" identifier [ number_literal ]) + (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ;) (expression_statement "puVar3 = PTR_LAB_0015b710;" (assignment_expression "puVar3 = PTR_LAB_0015b710" identifier = identifier) ;) (expression_statement "iVar9 = param_2[1];" (assignment_expression "iVar9 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }" { (expression_statement "local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);" (assignment_expression "local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) )) (argument_list "(piVar11,0x14,iVar15 + iVar4,0,0)" ( identifier , number_literal , (binary_expression "iVar15 + iVar4" identifier + identifier) , number_literal , number_literal )))) ;) }) (else_clause "else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }" else (compound_statement "{\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }" { (expression_statement "local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);" (assignment_expression "local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) )) (argument_list "(piVar11,0x73,param_2[2],0,0)" ( identifier , number_literal , (subscript_expression "param_2[2]" identifier [ number_literal ]) , number_literal , number_literal )))) ;) }))) (expression_statement "pcVar13 = (code *)(puVar3 + -0x3890);" (assignment_expression "pcVar13 = (code *)(puVar3 + -0x3890)" identifier = (cast_expression "(code *)(puVar3 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3890)" ( (binary_expression "puVar3 + -0x3890" identifier + number_literal) )))) ;) (expression_statement "(*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);" (call_expression "(*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1])" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x57,iVar5,iVar15,param_2[1])" ( identifier , number_literal , identifier , identifier , (subscript_expression "param_2[1]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar3 = PTR_memset_0015b9b4;" (assignment_expression "puVar3 = PTR_memset_0015b9b4" identifier = identifier) ;) (expression_statement "iVar2 = param_2[5];" (assignment_expression "iVar2 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) (if_statement "if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar2 = piVar11[0x1b] + -1;\n    }" { (expression_statement "iVar2 = piVar11[0x1b] + -1;" (assignment_expression "iVar2 = piVar11[0x1b] + -1" identifier = (binary_expression "piVar11[0x1b] + -1" (subscript_expression "piVar11[0x1b]" identifier [ number_literal ]) + number_literal)) ;) })) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" * (cast_expression "(char *)(*piVar11 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x51)" ( (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }" { (expression_statement "puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);" (assignment_expression "puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14)" identifier = (cast_expression "(undefined *)(piVar11[0x1a] + iVar2 * 0x14)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x1a] + iVar2 * 0x14)" ( (binary_expression "piVar11[0x1a] + iVar2 * 0x14" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + (binary_expression "iVar2 * 0x14" identifier * number_literal)) )))) ;) }) (else_clause "else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }" else (compound_statement "{\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }" { (expression_statement "puVar10 = PTR_DAT_0015b5d8 + -0x4514;" (assignment_expression "puVar10 = PTR_DAT_0015b5d8 + -0x4514" identifier = (binary_expression "PTR_DAT_0015b5d8 + -0x4514" identifier + number_literal)) ;) }))) (if_statement "if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }" if (parenthesized_expression "(*(char *)(*param_1 + 0x51) != '\0')" ( (binary_expression "*(char *)(*param_1 + 0x51) != '\0'" (pointer_expression "*(char *)(*param_1 + 0x51)" * (cast_expression "(char *)(*param_1 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x51)" ( (binary_expression "*param_1 + 0x51" (pointer_expression "*param_1" * identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "iVar2 = *(int *)(puVar10 + 0x10);" (assignment_expression "iVar2 = *(int *)(puVar10 + 0x10)" identifier = (pointer_expression "*(int *)(puVar10 + 0x10)" * (cast_expression "(int *)(puVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x10)" ( (binary_expression "puVar10 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;" (assignment_expression "*(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6" (pointer_expression "*(uint *)(puVar10 + 8)" * (cast_expression "(uint *)(puVar10 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 8)" ( (binary_expression "puVar10 + 8" identifier + number_literal) )))) = (binary_expression "(iVar4 - iVar9) + uVar7 + param_6" (binary_expression "(iVar4 - iVar9) + uVar7" (parenthesized_expression "(iVar4 - iVar9)" ( (binary_expression "iVar4 - iVar9" identifier - identifier) )) + identifier) + identifier)) ;) (expression_statement "(*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));" (call_expression "(*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6))" (parenthesized_expression "(*(code *)puVar3)" ( (pointer_expression "*(code *)puVar3" * (cast_expression "(code *)puVar3" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x10)" * (cast_expression "(undefined4 *)(iVar2 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) , number_literal , (pointer_expression "*(undefined2 *)(iVar2 + 6)" * (cast_expression "(undefined2 *)(iVar2 + 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 6)" ( (binary_expression "iVar2 + 6" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);" (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x4110))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x4110)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x4110)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x4110)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x4110" identifier + number_literal) )))) )) (argument_list "(piVar11,0xffffffff,iVar2,0xfffffff7)" ( identifier , number_literal , identifier , number_literal ))) ;) (expression_statement "uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);" (assignment_expression "uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b714 + -0x7fc4))" ( (pointer_expression "*(code *)(PTR_LAB_0015b714 + -0x7fc4)" * (cast_expression "(code *)(PTR_LAB_0015b714 + -0x7fc4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b714 + -0x7fc4)" ( (binary_expression "PTR_LAB_0015b714 + -0x7fc4" identifier + number_literal) )))) )) (argument_list "(param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1" (parenthesized_expression "((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6))" ( (binary_expression "(uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)" (binary_expression "(uint)*(ushort *)(iVar2 + 8)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar2 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) - (binary_expression "(uint)*(ushort *)(iVar2 + 6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar2 + 6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 6)" ( (binary_expression "iVar2 + 6" identifier + number_literal) ))))) )) + number_literal) )))) ;) (expression_statement "*(undefined4 *)(puVar10 + 0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar10 + 0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar10 + 0x10)" * (cast_expression "(undefined4 *)(puVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x10)" ( (binary_expression "puVar10 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_34 = piVar11[0x1b];" (assignment_expression "local_34 = piVar11[0x1b]" identifier = (subscript_expression "piVar11[0x1b]" identifier [ number_literal ])) ;) (expression_statement "(*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);" (call_expression "(*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x10,local_34 + 1,0,local_34 + 1)" ( identifier , number_literal , (binary_expression "local_34 + 1" identifier + number_literal) , number_literal , (binary_expression "local_34 + 1" identifier + number_literal) ))) ;) (expression_statement "iVar9 = param_1[0xe];" (assignment_expression "iVar9 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xe] = iVar9 + -1;" (assignment_expression "param_1[0xe] = iVar9 + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "param_2[4] = iVar9 + -1;" (assignment_expression "param_2[4] = iVar9 + -1" (subscript_expression "param_2[4]" identifier [ number_literal ]) = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "iVar9 = param_1[0xb] + 1;" (assignment_expression "iVar9 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = iVar9;" (assignment_expression "param_1[0xb] = iVar9" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[3] = iVar9;" (assignment_expression "param_2[3] = iVar9" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);" (call_expression "(*pcVar13)(piVar11,0xc,iVar9,param_2[4],0)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0xc,iVar9,param_2[4],0)" ( identifier , number_literal , identifier , (subscript_expression "param_2[4]" identifier [ number_literal ]) , number_literal ))) ;) (expression_statement "(*pcVar13)(piVar11,0x8a,param_2[2],0,0);" (call_expression "(*pcVar13)(piVar11,0x8a,param_2[2],0,0)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x8a,param_2[2],0,0)" ( identifier , number_literal , (subscript_expression "param_2[2]" identifier [ number_literal ]) , number_literal , number_literal ))) ;) (if_statement "if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }" { (expression_statement "(*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);" (call_expression "(*pcVar13)(piVar11,0x14,iVar12,param_2[6],0)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x14,iVar12,param_2[6],0)" ( identifier , number_literal , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) , number_literal ))) ;) })) (if_statement "if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }" if (parenthesized_expression "(local_3c < 0)" ( (binary_expression "local_3c < 0" identifier < number_literal) )) (compound_statement "{\n      local_3c = piVar11[0x1b] + -1;\n    }" { (expression_statement "local_3c = piVar11[0x1b] + -1;" (assignment_expression "local_3c = piVar11[0x1b] + -1" identifier = (binary_expression "piVar11[0x1b] + -1" (subscript_expression "piVar11[0x1b]" identifier [ number_literal ]) + number_literal)) ;) })) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" * (cast_expression "(char *)(*piVar11 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x51)" ( (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }" { (expression_statement "puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);" (assignment_expression "puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14)" identifier = (cast_expression "(undefined *)(piVar11[0x1a] + local_3c * 0x14)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x1a] + local_3c * 0x14)" ( (binary_expression "piVar11[0x1a] + local_3c * 0x14" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + (binary_expression "local_3c * 0x14" identifier * number_literal)) )))) ;) }) (else_clause "else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" else (compound_statement "{\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" { (expression_statement "puVar3 = PTR_DAT_0015b5d8 + -0x4514;" (assignment_expression "puVar3 = PTR_DAT_0015b5d8 + -0x4514" identifier = (binary_expression "PTR_DAT_0015b5d8 + -0x4514" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(puVar3 + 8) = piVar11[0x1b];" (assignment_expression "*(int *)(puVar3 + 8) = piVar11[0x1b]" (pointer_expression "*(int *)(puVar3 + 8)" * (cast_expression "(int *)(puVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 8)" ( (binary_expression "puVar3 + 8" identifier + number_literal) )))) = (subscript_expression "piVar11[0x1b]" identifier [ number_literal ])) ;) (expression_statement "(*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);" (call_expression "(*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1])" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_1[2],0x4d,iVar15,iVar5,param_2[1])" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , number_literal , identifier , identifier , (subscript_expression "param_2[1]" identifier [ number_literal ]) ))) ;) (if_statement "if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }" if (parenthesized_expression "(local_34 < 0)" ( (binary_expression "local_34 < 0" identifier < number_literal) )) (compound_statement "{\n      local_34 = piVar11[0x1b] + -1;\n    }" { (expression_statement "local_34 = piVar11[0x1b] + -1;" (assignment_expression "local_34 = piVar11[0x1b] + -1" identifier = (binary_expression "piVar11[0x1b] + -1" (subscript_expression "piVar11[0x1b]" identifier [ number_literal ]) + number_literal)) ;) })) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" * (cast_expression "(char *)(*piVar11 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x51)" ( (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }" { (expression_statement "puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);" (assignment_expression "puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14)" identifier = (cast_expression "(undefined *)(piVar11[0x1a] + local_34 * 0x14)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x1a] + local_34 * 0x14)" ( (binary_expression "piVar11[0x1a] + local_34 * 0x14" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + (binary_expression "local_34 * 0x14" identifier * number_literal)) )))) ;) }) (else_clause "else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" else (compound_statement "{\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" { (expression_statement "puVar3 = PTR_DAT_0015b5d8 + -0x4514;" (assignment_expression "puVar3 = PTR_DAT_0015b5d8 + -0x4514" identifier = (binary_expression "PTR_DAT_0015b5d8 + -0x4514" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(puVar3 + 8) = piVar11[0x1b];" (assignment_expression "*(int *)(puVar3 + 8) = piVar11[0x1b]" (pointer_expression "*(int *)(puVar3 + 8)" * (cast_expression "(int *)(puVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 8)" ( (binary_expression "puVar3 + 8" identifier + number_literal) )))) = (subscript_expression "piVar11[0x1b]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }" { (expression_statement "iVar9 = piVar11[0x1b];" (assignment_expression "iVar9 = piVar11[0x1b]" identifier = (subscript_expression "piVar11[0x1b]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_000c34ac;" goto statement_identifier ;) })) (labeled_statement "LAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;" statement_identifier : (if_statement "if (iVar6 != 0) goto LAB_000c3588;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000c3588;" goto statement_identifier ;))) }))) (expression_statement "iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);" (assignment_expression "iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" identifier = (call_expression "FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" identifier (argument_list "(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" ( identifier , (subscript_expression "param_2[1]" identifier [ number_literal ]) , (binary_expression "param_2 + 9" identifier + number_literal) , identifier , identifier , identifier )))) ;) (labeled_statement "LAB_000c3588:\n  local_3c = iVar15 + iVar16;" statement_identifier : (expression_statement "local_3c = iVar15 + iVar16;" (assignment_expression "local_3c = iVar15 + iVar16" identifier = (binary_expression "iVar15 + iVar16" identifier + identifier)) ;)) (expression_statement "uVar8 = 0x83;" (assignment_expression "uVar8 = 0x83" identifier = number_literal) ;) (if_statement "if ((*(byte *)(param_2 + 8) & 1) == 0) {\n    uVar8 = 0x84;\n  }" if (parenthesized_expression "((*(byte *)(param_2 + 8) & 1) == 0)" ( (binary_expression "(*(byte *)(param_2 + 8) & 1) == 0" (parenthesized_expression "(*(byte *)(param_2 + 8) & 1)" ( (binary_expression "*(byte *)(param_2 + 8) & 1" (pointer_expression "*(byte *)(param_2 + 8)" * (cast_expression "(byte *)(param_2 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar8 = 0x84;\n  }" { (expression_statement "uVar8 = 0x84;" (assignment_expression "uVar8 = 0x84" identifier = number_literal) ;) })) (expression_statement "(*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16);" (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x35f0))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x35f0)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x35f0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x35f0)" ( (binary_expression "PTR_LAB_0015b710 + -0x35f0" identifier + number_literal) )))) )) (argument_list "(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16)" ( identifier , identifier , (subscript_expression "param_2[2]" identifier [ number_literal ]) , identifier , identifier , (binary_expression "iVar14 - iVar16" identifier - identifier) ))) ;) (if_statement "if (iVar12 != 0) {\n    iVar4 = param_2[7];\n    if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }\n    if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }\n  }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar4 = param_2[7];\n    if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }\n    if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }\n  }" { (expression_statement "iVar4 = param_2[7];" (assignment_expression "iVar4 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (if_statement "if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar4 = piVar11[0x1b];\n    }" { (expression_statement "iVar4 = piVar11[0x1b];" (assignment_expression "iVar4 = piVar11[0x1b]" identifier = (subscript_expression "piVar11[0x1b]" identifier [ number_literal ])) ;) })) (if_statement "if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }" if (parenthesized_expression "(iVar12 < 0)" ( (binary_expression "iVar12 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar12 = piVar11[0x1b] + -1;\n    }" { (expression_statement "iVar12 = piVar11[0x1b] + -1;" (assignment_expression "iVar12 = piVar11[0x1b] + -1" identifier = (binary_expression "piVar11[0x1b] + -1" (subscript_expression "piVar11[0x1b]" identifier [ number_literal ]) + number_literal)) ;) })) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" * (cast_expression "(char *)(*piVar11 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x51)" ( (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }" { (expression_statement "*(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;" (assignment_expression "*(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4" (pointer_expression "*(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8)" * (cast_expression "(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x1a] + iVar12 * 0x14 + 8)" ( (binary_expression "piVar11[0x1a] + iVar12 * 0x14 + 8" (binary_expression "piVar11[0x1a] + iVar12 * 0x14" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + (binary_expression "iVar12 * 0x14" identifier * number_literal)) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }" else (compound_statement "{\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }" { (expression_statement "*(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;" (assignment_expression "*(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4" (pointer_expression "*(int *)(PTR_DAT_0015b5d8 + -0x450c)" * (cast_expression "(int *)(PTR_DAT_0015b5d8 + -0x450c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b5d8 + -0x450c)" ( (binary_expression "PTR_DAT_0015b5d8 + -0x450c" identifier + number_literal) )))) = identifier) ;) }))) })) (return_statement "return;" return ;) })))
(translation_unit "void pushOntoSorter(Parse *pParse,SortCtx *pSort,Select *pSelect,int regData,int regOrigData,\n                   int nData,int nPrefixReg)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  Op *pOVar7;\n  uint uVar8;\n  u8 flags;\n  undefined4 uVar9;\n  int iVar10;\n  KeyInfo *pKVar11;\n  Vdbe *pVVar12;\n  int iVar13;\n  code *pcVar14;\n  SortCtx *pSort_1;\n  int target;\n  int iVar15;\n  int iStack_3c;\n  int iStack_34;\n  \n  bVar1 = pSort->sortFlags;\n  pVVar12 = pParse->pVdbe;\n  iVar5 = pSort->pOrderBy->nExpr;\n  uVar8 = ~(uint)bVar1 & 1;\n  iVar15 = pSort->nOBSat;\n  pSort_1 = (SortCtx *)(uVar8 + iVar5 + nData);\n  if (nPrefixReg == 0) {\n    target = pParse->nMem + 1;\n    pParse->nMem = (int)&pSort_1->pOrderBy + pParse->nMem;\n  }\n  else {\n    target = regData - nPrefixReg;\n  }\n  if (pSelect->iOffset == 0) {\n    iVar13 = pSelect->iLimit;\n  }\n  else {\n    iVar13 = pSelect->iOffset + 1;\n  }\n  flags = '\x01';\n  if (regOrigData != 0) {\n    flags = '\x05';\n  }\n  iVar6 = pParse->nLabel + -1;\n  pParse->nLabel = iVar6;\n  pSort->labelDone = iVar6;\n  sqlite3ExprCodeExprList(pParse,pSort->pOrderBy,target,regOrigData,flags);\n  if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x78,pSort->iECursor,target + iVar5,0);\n  }\n  if ((nPrefixReg == 0) && (0 < nData)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(pParse->pVdbe,0x4d,regData,target + iVar5 + uVar8,nData)\n    ;\n  }\n  if (iVar15 < 1) {\n    if (iVar13 != 0) {\n      iVar6 = 0;\n      pcVar14 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar10 = pVVar12->nOp;\nLAB_000c34ac:\n      iStack_3c = target + iVar15;\n      iVar3 = pSort->iECursor;\n      (*pcVar14)(pVVar12,0x30,iVar13,iVar10 + 4,0);\n      (*pcVar14)(pVVar12,0x20,iVar3,0,0);\n      iVar13 = (*pcVar14)(pVVar12,0x25,iVar3,0,iStack_3c);\n      if (pVVar12->db->mallocFailed == '\0') {\n        pOVar7 = pVVar12->aOp;\n        pOVar7[iVar13].p4.p = (void *)(iVar5 - iVar15);\n        pOVar7[iVar13].p4type = -3;\n      }\n      (*pcVar14)(pVVar12,0x7b,iVar3,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                             (int)pSelect,target,pSort_1);\n    iVar3 = pParse->nMem + 1;\n    pParse->nMem = pSort->nOBSat + pParse->nMem;\n    puVar2 = PTR_LAB_0015b710;\n    iVar10 = pSort->nOBSat;\n    if ((bVar1 & 1) == 0) {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x14,target + iVar5,0,0);\n    }\n    else {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x73,pSort->iECursor,0,0);\n    }\n    pcVar14 = (code *)(puVar2 + -0x3890);\n    (*pcVar14)(pVVar12,0x57,iVar3,target,pSort->nOBSat);\n    puVar2 = PTR_memset_0015b9b4;\n    iVar4 = pSort->addrSortIndex;\n    if (iVar4 < 0) {\n      iVar4 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iVar4;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    if (pParse->db->mallocFailed != '\0') {\n      return;\n    }\n    pKVar11 = (pOVar7->p4).pKeyInfo;\n    pOVar7->p2 = (iVar5 - iVar10) + uVar8 + nData;\n    (*(code *)puVar2)(pKVar11->aSortOrder,0,pKVar11->nKeyField);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(pVVar12,0xffffffff,pKVar11,0xfffffff7);\n    iVar10 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                       (pParse,pSort->pOrderBy,iVar15,\n                        ((uint)pKVar11->nAllField - (uint)pKVar11->nKeyField) + -1);\n    (pOVar7->p4).i = iVar10;\n    iStack_34 = pVVar12->nOp;\n    (*pcVar14)(pVVar12,0x10,iStack_34 + 1,0,iStack_34 + 1);\n    iVar10 = pParse->nLabel + -1;\n    pParse->nLabel = iVar10;\n    pSort->labelBkOut = iVar10;\n    iVar10 = pParse->nMem + 1;\n    pParse->nMem = iVar10;\n    pSort->regReturn = iVar10;\n    (*pcVar14)(pVVar12,0xc,iVar10,pSort->labelBkOut,0);\n    (*pcVar14)(pVVar12,0x8a,pSort->iECursor,0,0);\n    if (iVar13 != 0) {\n      (*pcVar14)(pVVar12,0x14,iVar13,pSort->labelDone,0);\n    }\n    if (iStack_3c < 0) {\n      iStack_3c = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iStack_3c;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    pOVar7->p2 = pVVar12->nOp;\n    (*pcVar14)(pParse->pVdbe,0x4d,target,iVar3,pSort->nOBSat);\n    if (iStack_34 < 0) {\n      iStack_34 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iStack_34;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    pOVar7->p2 = pVVar12->nOp;\n    if (iVar13 != 0) {\n      iVar10 = pVVar12->nOp;\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }\n  iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                           (int)pSelect,target,pSort_1);\nLAB_000c3588:\n  iStack_3c = target + iVar15;\n  uVar9 = 0x83;\n  if ((pSort->sortFlags & 1) == 0) {\n    uVar9 = 0x84;\n  }\n  (*(code *)(PTR_LAB_0015b710 + -0x35f0))\n            (pVVar12,uVar9,pSort->iECursor,iVar6,iStack_3c,(int)pSort_1 - iVar15);\n  if (iVar13 != 0) {\n    iVar5 = pSort->labelOBLopt;\n    if (iVar5 == 0) {\n      iVar5 = pVVar12->nOp;\n    }\n    if (iVar13 < 0) {\n      iVar13 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pVVar12->aOp[iVar13].p2 = iVar5;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar5;\n    }\n  }\n  return;\n}\n\n" (function_definition "void pushOntoSorter(Parse *pParse,SortCtx *pSort,Select *pSelect,int regData,int regOrigData,\n                   int nData,int nPrefixReg)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  Op *pOVar7;\n  uint uVar8;\n  u8 flags;\n  undefined4 uVar9;\n  int iVar10;\n  KeyInfo *pKVar11;\n  Vdbe *pVVar12;\n  int iVar13;\n  code *pcVar14;\n  SortCtx *pSort_1;\n  int target;\n  int iVar15;\n  int iStack_3c;\n  int iStack_34;\n  \n  bVar1 = pSort->sortFlags;\n  pVVar12 = pParse->pVdbe;\n  iVar5 = pSort->pOrderBy->nExpr;\n  uVar8 = ~(uint)bVar1 & 1;\n  iVar15 = pSort->nOBSat;\n  pSort_1 = (SortCtx *)(uVar8 + iVar5 + nData);\n  if (nPrefixReg == 0) {\n    target = pParse->nMem + 1;\n    pParse->nMem = (int)&pSort_1->pOrderBy + pParse->nMem;\n  }\n  else {\n    target = regData - nPrefixReg;\n  }\n  if (pSelect->iOffset == 0) {\n    iVar13 = pSelect->iLimit;\n  }\n  else {\n    iVar13 = pSelect->iOffset + 1;\n  }\n  flags = '\x01';\n  if (regOrigData != 0) {\n    flags = '\x05';\n  }\n  iVar6 = pParse->nLabel + -1;\n  pParse->nLabel = iVar6;\n  pSort->labelDone = iVar6;\n  sqlite3ExprCodeExprList(pParse,pSort->pOrderBy,target,regOrigData,flags);\n  if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x78,pSort->iECursor,target + iVar5,0);\n  }\n  if ((nPrefixReg == 0) && (0 < nData)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(pParse->pVdbe,0x4d,regData,target + iVar5 + uVar8,nData)\n    ;\n  }\n  if (iVar15 < 1) {\n    if (iVar13 != 0) {\n      iVar6 = 0;\n      pcVar14 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar10 = pVVar12->nOp;\nLAB_000c34ac:\n      iStack_3c = target + iVar15;\n      iVar3 = pSort->iECursor;\n      (*pcVar14)(pVVar12,0x30,iVar13,iVar10 + 4,0);\n      (*pcVar14)(pVVar12,0x20,iVar3,0,0);\n      iVar13 = (*pcVar14)(pVVar12,0x25,iVar3,0,iStack_3c);\n      if (pVVar12->db->mallocFailed == '\0') {\n        pOVar7 = pVVar12->aOp;\n        pOVar7[iVar13].p4.p = (void *)(iVar5 - iVar15);\n        pOVar7[iVar13].p4type = -3;\n      }\n      (*pcVar14)(pVVar12,0x7b,iVar3,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                             (int)pSelect,target,pSort_1);\n    iVar3 = pParse->nMem + 1;\n    pParse->nMem = pSort->nOBSat + pParse->nMem;\n    puVar2 = PTR_LAB_0015b710;\n    iVar10 = pSort->nOBSat;\n    if ((bVar1 & 1) == 0) {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x14,target + iVar5,0,0);\n    }\n    else {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x73,pSort->iECursor,0,0);\n    }\n    pcVar14 = (code *)(puVar2 + -0x3890);\n    (*pcVar14)(pVVar12,0x57,iVar3,target,pSort->nOBSat);\n    puVar2 = PTR_memset_0015b9b4;\n    iVar4 = pSort->addrSortIndex;\n    if (iVar4 < 0) {\n      iVar4 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iVar4;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    if (pParse->db->mallocFailed != '\0') {\n      return;\n    }\n    pKVar11 = (pOVar7->p4).pKeyInfo;\n    pOVar7->p2 = (iVar5 - iVar10) + uVar8 + nData;\n    (*(code *)puVar2)(pKVar11->aSortOrder,0,pKVar11->nKeyField);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(pVVar12,0xffffffff,pKVar11,0xfffffff7);\n    iVar10 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                       (pParse,pSort->pOrderBy,iVar15,\n                        ((uint)pKVar11->nAllField - (uint)pKVar11->nKeyField) + -1);\n    (pOVar7->p4).i = iVar10;\n    iStack_34 = pVVar12->nOp;\n    (*pcVar14)(pVVar12,0x10,iStack_34 + 1,0,iStack_34 + 1);\n    iVar10 = pParse->nLabel + -1;\n    pParse->nLabel = iVar10;\n    pSort->labelBkOut = iVar10;\n    iVar10 = pParse->nMem + 1;\n    pParse->nMem = iVar10;\n    pSort->regReturn = iVar10;\n    (*pcVar14)(pVVar12,0xc,iVar10,pSort->labelBkOut,0);\n    (*pcVar14)(pVVar12,0x8a,pSort->iECursor,0,0);\n    if (iVar13 != 0) {\n      (*pcVar14)(pVVar12,0x14,iVar13,pSort->labelDone,0);\n    }\n    if (iStack_3c < 0) {\n      iStack_3c = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iStack_3c;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    pOVar7->p2 = pVVar12->nOp;\n    (*pcVar14)(pParse->pVdbe,0x4d,target,iVar3,pSort->nOBSat);\n    if (iStack_34 < 0) {\n      iStack_34 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iStack_34;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    pOVar7->p2 = pVVar12->nOp;\n    if (iVar13 != 0) {\n      iVar10 = pVVar12->nOp;\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }\n  iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                           (int)pSelect,target,pSort_1);\nLAB_000c3588:\n  iStack_3c = target + iVar15;\n  uVar9 = 0x83;\n  if ((pSort->sortFlags & 1) == 0) {\n    uVar9 = 0x84;\n  }\n  (*(code *)(PTR_LAB_0015b710 + -0x35f0))\n            (pVVar12,uVar9,pSort->iECursor,iVar6,iStack_3c,(int)pSort_1 - iVar15);\n  if (iVar13 != 0) {\n    iVar5 = pSort->labelOBLopt;\n    if (iVar5 == 0) {\n      iVar5 = pVVar12->nOp;\n    }\n    if (iVar13 < 0) {\n      iVar13 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pVVar12->aOp[iVar13].p2 = iVar5;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar5;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "pushOntoSorter(Parse *pParse,SortCtx *pSort,Select *pSelect,int regData,int regOrigData,\n                   int nData,int nPrefixReg)" identifier (parameter_list "(Parse *pParse,SortCtx *pSort,Select *pSelect,int regData,int regOrigData,\n                   int nData,int nPrefixReg)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "SortCtx *pSort" type_identifier (pointer_declarator "*pSort" * identifier)) , (parameter_declaration "Select *pSelect" type_identifier (pointer_declarator "*pSelect" * identifier)) , (parameter_declaration "int regData" primitive_type identifier) , (parameter_declaration "int regOrigData" primitive_type identifier) , (parameter_declaration "int nData" primitive_type identifier) , (parameter_declaration "int nPrefixReg" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  Op *pOVar7;\n  uint uVar8;\n  u8 flags;\n  undefined4 uVar9;\n  int iVar10;\n  KeyInfo *pKVar11;\n  Vdbe *pVVar12;\n  int iVar13;\n  code *pcVar14;\n  SortCtx *pSort_1;\n  int target;\n  int iVar15;\n  int iStack_3c;\n  int iStack_34;\n  \n  bVar1 = pSort->sortFlags;\n  pVVar12 = pParse->pVdbe;\n  iVar5 = pSort->pOrderBy->nExpr;\n  uVar8 = ~(uint)bVar1 & 1;\n  iVar15 = pSort->nOBSat;\n  pSort_1 = (SortCtx *)(uVar8 + iVar5 + nData);\n  if (nPrefixReg == 0) {\n    target = pParse->nMem + 1;\n    pParse->nMem = (int)&pSort_1->pOrderBy + pParse->nMem;\n  }\n  else {\n    target = regData - nPrefixReg;\n  }\n  if (pSelect->iOffset == 0) {\n    iVar13 = pSelect->iLimit;\n  }\n  else {\n    iVar13 = pSelect->iOffset + 1;\n  }\n  flags = '\x01';\n  if (regOrigData != 0) {\n    flags = '\x05';\n  }\n  iVar6 = pParse->nLabel + -1;\n  pParse->nLabel = iVar6;\n  pSort->labelDone = iVar6;\n  sqlite3ExprCodeExprList(pParse,pSort->pOrderBy,target,regOrigData,flags);\n  if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x78,pSort->iECursor,target + iVar5,0);\n  }\n  if ((nPrefixReg == 0) && (0 < nData)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(pParse->pVdbe,0x4d,regData,target + iVar5 + uVar8,nData)\n    ;\n  }\n  if (iVar15 < 1) {\n    if (iVar13 != 0) {\n      iVar6 = 0;\n      pcVar14 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar10 = pVVar12->nOp;\nLAB_000c34ac:\n      iStack_3c = target + iVar15;\n      iVar3 = pSort->iECursor;\n      (*pcVar14)(pVVar12,0x30,iVar13,iVar10 + 4,0);\n      (*pcVar14)(pVVar12,0x20,iVar3,0,0);\n      iVar13 = (*pcVar14)(pVVar12,0x25,iVar3,0,iStack_3c);\n      if (pVVar12->db->mallocFailed == '\0') {\n        pOVar7 = pVVar12->aOp;\n        pOVar7[iVar13].p4.p = (void *)(iVar5 - iVar15);\n        pOVar7[iVar13].p4type = -3;\n      }\n      (*pcVar14)(pVVar12,0x7b,iVar3,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                             (int)pSelect,target,pSort_1);\n    iVar3 = pParse->nMem + 1;\n    pParse->nMem = pSort->nOBSat + pParse->nMem;\n    puVar2 = PTR_LAB_0015b710;\n    iVar10 = pSort->nOBSat;\n    if ((bVar1 & 1) == 0) {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x14,target + iVar5,0,0);\n    }\n    else {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x73,pSort->iECursor,0,0);\n    }\n    pcVar14 = (code *)(puVar2 + -0x3890);\n    (*pcVar14)(pVVar12,0x57,iVar3,target,pSort->nOBSat);\n    puVar2 = PTR_memset_0015b9b4;\n    iVar4 = pSort->addrSortIndex;\n    if (iVar4 < 0) {\n      iVar4 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iVar4;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    if (pParse->db->mallocFailed != '\0') {\n      return;\n    }\n    pKVar11 = (pOVar7->p4).pKeyInfo;\n    pOVar7->p2 = (iVar5 - iVar10) + uVar8 + nData;\n    (*(code *)puVar2)(pKVar11->aSortOrder,0,pKVar11->nKeyField);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(pVVar12,0xffffffff,pKVar11,0xfffffff7);\n    iVar10 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                       (pParse,pSort->pOrderBy,iVar15,\n                        ((uint)pKVar11->nAllField - (uint)pKVar11->nKeyField) + -1);\n    (pOVar7->p4).i = iVar10;\n    iStack_34 = pVVar12->nOp;\n    (*pcVar14)(pVVar12,0x10,iStack_34 + 1,0,iStack_34 + 1);\n    iVar10 = pParse->nLabel + -1;\n    pParse->nLabel = iVar10;\n    pSort->labelBkOut = iVar10;\n    iVar10 = pParse->nMem + 1;\n    pParse->nMem = iVar10;\n    pSort->regReturn = iVar10;\n    (*pcVar14)(pVVar12,0xc,iVar10,pSort->labelBkOut,0);\n    (*pcVar14)(pVVar12,0x8a,pSort->iECursor,0,0);\n    if (iVar13 != 0) {\n      (*pcVar14)(pVVar12,0x14,iVar13,pSort->labelDone,0);\n    }\n    if (iStack_3c < 0) {\n      iStack_3c = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iStack_3c;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    pOVar7->p2 = pVVar12->nOp;\n    (*pcVar14)(pParse->pVdbe,0x4d,target,iVar3,pSort->nOBSat);\n    if (iStack_34 < 0) {\n      iStack_34 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iStack_34;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    pOVar7->p2 = pVVar12->nOp;\n    if (iVar13 != 0) {\n      iVar10 = pVVar12->nOp;\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }\n  iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                           (int)pSelect,target,pSort_1);\nLAB_000c3588:\n  iStack_3c = target + iVar15;\n  uVar9 = 0x83;\n  if ((pSort->sortFlags & 1) == 0) {\n    uVar9 = 0x84;\n  }\n  (*(code *)(PTR_LAB_0015b710 + -0x35f0))\n            (pVVar12,uVar9,pSort->iECursor,iVar6,iStack_3c,(int)pSort_1 - iVar15);\n  if (iVar13 != 0) {\n    iVar5 = pSort->labelOBLopt;\n    if (iVar5 == 0) {\n      iVar5 = pVVar12->nOp;\n    }\n    if (iVar13 < 0) {\n      iVar13 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pVVar12->aOp[iVar13].p2 = iVar5;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar5;\n    }\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "Op *pOVar7;" type_identifier (pointer_declarator "*pOVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "u8 flags;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "KeyInfo *pKVar11;" type_identifier (pointer_declarator "*pKVar11" * identifier) ;) (declaration "Vdbe *pVVar12;" type_identifier (pointer_declarator "*pVVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "SortCtx *pSort_1;" type_identifier (pointer_declarator "*pSort_1" * identifier) ;) (declaration "int target;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iStack_3c;" primitive_type identifier ;) (declaration "int iStack_34;" primitive_type identifier ;) (expression_statement "bVar1 = pSort->sortFlags;" (assignment_expression "bVar1 = pSort->sortFlags" identifier = (field_expression "pSort->sortFlags" identifier -> field_identifier)) ;) (expression_statement "pVVar12 = pParse->pVdbe;" (assignment_expression "pVVar12 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (expression_statement "iVar5 = pSort->pOrderBy->nExpr;" (assignment_expression "iVar5 = pSort->pOrderBy->nExpr" identifier = (field_expression "pSort->pOrderBy->nExpr" (field_expression "pSort->pOrderBy" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "uVar8 = ~(uint)bVar1 & 1;" (assignment_expression "uVar8 = ~(uint)bVar1 & 1" identifier = (binary_expression "~(uint)bVar1 & 1" (unary_expression "~(uint)bVar1" ~ (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal)) ;) (expression_statement "iVar15 = pSort->nOBSat;" (assignment_expression "iVar15 = pSort->nOBSat" identifier = (field_expression "pSort->nOBSat" identifier -> field_identifier)) ;) (expression_statement "pSort_1 = (SortCtx *)(uVar8 + iVar5 + nData);" (assignment_expression "pSort_1 = (SortCtx *)(uVar8 + iVar5 + nData)" identifier = (cast_expression "(SortCtx *)(uVar8 + iVar5 + nData)" ( (type_descriptor "SortCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + iVar5 + nData)" ( (binary_expression "uVar8 + iVar5 + nData" (binary_expression "uVar8 + iVar5" identifier + identifier) + identifier) )))) ;) (if_statement "if (nPrefixReg == 0) {\n    target = pParse->nMem + 1;\n    pParse->nMem = (int)&pSort_1->pOrderBy + pParse->nMem;\n  }\n  else {\n    target = regData - nPrefixReg;\n  }" if (parenthesized_expression "(nPrefixReg == 0)" ( (binary_expression "nPrefixReg == 0" identifier == number_literal) )) (compound_statement "{\n    target = pParse->nMem + 1;\n    pParse->nMem = (int)&pSort_1->pOrderBy + pParse->nMem;\n  }" { (expression_statement "target = pParse->nMem + 1;" (assignment_expression "target = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = (int)&pSort_1->pOrderBy + pParse->nMem;" (assignment_expression "pParse->nMem = (int)&pSort_1->pOrderBy + pParse->nMem" (field_expression "pParse->nMem" identifier -> field_identifier) = (binary_expression "(int)&pSort_1->pOrderBy + pParse->nMem" (cast_expression "(int)&pSort_1->pOrderBy" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pSort_1->pOrderBy" & (field_expression "pSort_1->pOrderBy" identifier -> field_identifier))) + (field_expression "pParse->nMem" identifier -> field_identifier))) ;) }) (else_clause "else {\n    target = regData - nPrefixReg;\n  }" else (compound_statement "{\n    target = regData - nPrefixReg;\n  }" { (expression_statement "target = regData - nPrefixReg;" (assignment_expression "target = regData - nPrefixReg" identifier = (binary_expression "regData - nPrefixReg" identifier - identifier)) ;) }))) (if_statement "if (pSelect->iOffset == 0) {\n    iVar13 = pSelect->iLimit;\n  }\n  else {\n    iVar13 = pSelect->iOffset + 1;\n  }" if (parenthesized_expression "(pSelect->iOffset == 0)" ( (binary_expression "pSelect->iOffset == 0" (field_expression "pSelect->iOffset" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    iVar13 = pSelect->iLimit;\n  }" { (expression_statement "iVar13 = pSelect->iLimit;" (assignment_expression "iVar13 = pSelect->iLimit" identifier = (field_expression "pSelect->iLimit" identifier -> field_identifier)) ;) }) (else_clause "else {\n    iVar13 = pSelect->iOffset + 1;\n  }" else (compound_statement "{\n    iVar13 = pSelect->iOffset + 1;\n  }" { (expression_statement "iVar13 = pSelect->iOffset + 1;" (assignment_expression "iVar13 = pSelect->iOffset + 1" identifier = (binary_expression "pSelect->iOffset + 1" (field_expression "pSelect->iOffset" identifier -> field_identifier) + number_literal)) ;) }))) (expression_statement "flags = '\x01';" (assignment_expression "flags = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (regOrigData != 0) {\n    flags = '\x05';\n  }" if (parenthesized_expression "(regOrigData != 0)" ( (binary_expression "regOrigData != 0" identifier != number_literal) )) (compound_statement "{\n    flags = '\x05';\n  }" { (expression_statement "flags = '\x05';" (assignment_expression "flags = '\x05'" identifier = (char_literal "'\x05'" ' escape_sequence ')) ;) })) (expression_statement "iVar6 = pParse->nLabel + -1;" (assignment_expression "iVar6 = pParse->nLabel + -1" identifier = (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nLabel = iVar6;" (assignment_expression "pParse->nLabel = iVar6" (field_expression "pParse->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "pSort->labelDone = iVar6;" (assignment_expression "pSort->labelDone = iVar6" (field_expression "pSort->labelDone" identifier -> field_identifier) = identifier) ;) (expression_statement "sqlite3ExprCodeExprList(pParse,pSort->pOrderBy,target,regOrigData,flags);" (call_expression "sqlite3ExprCodeExprList(pParse,pSort->pOrderBy,target,regOrigData,flags)" identifier (argument_list "(pParse,pSort->pOrderBy,target,regOrigData,flags)" ( identifier , (field_expression "pSort->pOrderBy" identifier -> field_identifier) , identifier , identifier , identifier ))) ;) (if_statement "if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x78,pSort->iECursor,target + iVar5,0);\n  }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x78,pSort->iECursor,target + iVar5,0);\n  }" { (expression_statement "(*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x78,pSort->iECursor,target + iVar5,0);" (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x78,pSort->iECursor,target + iVar5,0)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) )) (argument_list "(pVVar12,0x78,pSort->iECursor,target + iVar5,0)" ( identifier , number_literal , (field_expression "pSort->iECursor" identifier -> field_identifier) , (binary_expression "target + iVar5" identifier + identifier) , number_literal ))) ;) })) (if_statement "if ((nPrefixReg == 0) && (0 < nData)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(pParse->pVdbe,0x4d,regData,target + iVar5 + uVar8,nData)\n    ;\n  }" if (parenthesized_expression "((nPrefixReg == 0) && (0 < nData))" ( (binary_expression "(nPrefixReg == 0) && (0 < nData)" (parenthesized_expression "(nPrefixReg == 0)" ( (binary_expression "nPrefixReg == 0" identifier == number_literal) )) && (parenthesized_expression "(0 < nData)" ( (binary_expression "0 < nData" number_literal < identifier) ))) )) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(pParse->pVdbe,0x4d,regData,target + iVar5 + uVar8,nData)\n    ;\n  }" { (expression_statement "(*(code *)(PTR_LAB_0015b710 + -0x3890))(pParse->pVdbe,0x4d,regData,target + iVar5 + uVar8,nData)\n    ;" (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(pParse->pVdbe,0x4d,regData,target + iVar5 + uVar8,nData)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) )) (argument_list "(pParse->pVdbe,0x4d,regData,target + iVar5 + uVar8,nData)" ( (field_expression "pParse->pVdbe" identifier -> field_identifier) , number_literal , identifier , (binary_expression "target + iVar5 + uVar8" (binary_expression "target + iVar5" identifier + identifier) + identifier) , identifier ))) ;) })) (if_statement "if (iVar15 < 1) {\n    if (iVar13 != 0) {\n      iVar6 = 0;\n      pcVar14 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar10 = pVVar12->nOp;\nLAB_000c34ac:\n      iStack_3c = target + iVar15;\n      iVar3 = pSort->iECursor;\n      (*pcVar14)(pVVar12,0x30,iVar13,iVar10 + 4,0);\n      (*pcVar14)(pVVar12,0x20,iVar3,0,0);\n      iVar13 = (*pcVar14)(pVVar12,0x25,iVar3,0,iStack_3c);\n      if (pVVar12->db->mallocFailed == '\0') {\n        pOVar7 = pVVar12->aOp;\n        pOVar7[iVar13].p4.p = (void *)(iVar5 - iVar15);\n        pOVar7[iVar13].p4type = -3;\n      }\n      (*pcVar14)(pVVar12,0x7b,iVar3,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                             (int)pSelect,target,pSort_1);\n    iVar3 = pParse->nMem + 1;\n    pParse->nMem = pSort->nOBSat + pParse->nMem;\n    puVar2 = PTR_LAB_0015b710;\n    iVar10 = pSort->nOBSat;\n    if ((bVar1 & 1) == 0) {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x14,target + iVar5,0,0);\n    }\n    else {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x73,pSort->iECursor,0,0);\n    }\n    pcVar14 = (code *)(puVar2 + -0x3890);\n    (*pcVar14)(pVVar12,0x57,iVar3,target,pSort->nOBSat);\n    puVar2 = PTR_memset_0015b9b4;\n    iVar4 = pSort->addrSortIndex;\n    if (iVar4 < 0) {\n      iVar4 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iVar4;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    if (pParse->db->mallocFailed != '\0') {\n      return;\n    }\n    pKVar11 = (pOVar7->p4).pKeyInfo;\n    pOVar7->p2 = (iVar5 - iVar10) + uVar8 + nData;\n    (*(code *)puVar2)(pKVar11->aSortOrder,0,pKVar11->nKeyField);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(pVVar12,0xffffffff,pKVar11,0xfffffff7);\n    iVar10 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                       (pParse,pSort->pOrderBy,iVar15,\n                        ((uint)pKVar11->nAllField - (uint)pKVar11->nKeyField) + -1);\n    (pOVar7->p4).i = iVar10;\n    iStack_34 = pVVar12->nOp;\n    (*pcVar14)(pVVar12,0x10,iStack_34 + 1,0,iStack_34 + 1);\n    iVar10 = pParse->nLabel + -1;\n    pParse->nLabel = iVar10;\n    pSort->labelBkOut = iVar10;\n    iVar10 = pParse->nMem + 1;\n    pParse->nMem = iVar10;\n    pSort->regReturn = iVar10;\n    (*pcVar14)(pVVar12,0xc,iVar10,pSort->labelBkOut,0);\n    (*pcVar14)(pVVar12,0x8a,pSort->iECursor,0,0);\n    if (iVar13 != 0) {\n      (*pcVar14)(pVVar12,0x14,iVar13,pSort->labelDone,0);\n    }\n    if (iStack_3c < 0) {\n      iStack_3c = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iStack_3c;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    pOVar7->p2 = pVVar12->nOp;\n    (*pcVar14)(pParse->pVdbe,0x4d,target,iVar3,pSort->nOBSat);\n    if (iStack_34 < 0) {\n      iStack_34 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iStack_34;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    pOVar7->p2 = pVVar12->nOp;\n    if (iVar13 != 0) {\n      iVar10 = pVVar12->nOp;\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }" if (parenthesized_expression "(iVar15 < 1)" ( (binary_expression "iVar15 < 1" identifier < number_literal) )) (compound_statement "{\n    if (iVar13 != 0) {\n      iVar6 = 0;\n      pcVar14 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar10 = pVVar12->nOp;\nLAB_000c34ac:\n      iStack_3c = target + iVar15;\n      iVar3 = pSort->iECursor;\n      (*pcVar14)(pVVar12,0x30,iVar13,iVar10 + 4,0);\n      (*pcVar14)(pVVar12,0x20,iVar3,0,0);\n      iVar13 = (*pcVar14)(pVVar12,0x25,iVar3,0,iStack_3c);\n      if (pVVar12->db->mallocFailed == '\0') {\n        pOVar7 = pVVar12->aOp;\n        pOVar7[iVar13].p4.p = (void *)(iVar5 - iVar15);\n        pOVar7[iVar13].p4type = -3;\n      }\n      (*pcVar14)(pVVar12,0x7b,iVar3,0,0);\n      goto LAB_000c3544;\n    }\n  }" { (if_statement "if (iVar13 != 0) {\n      iVar6 = 0;\n      pcVar14 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar10 = pVVar12->nOp;\nLAB_000c34ac:\n      iStack_3c = target + iVar15;\n      iVar3 = pSort->iECursor;\n      (*pcVar14)(pVVar12,0x30,iVar13,iVar10 + 4,0);\n      (*pcVar14)(pVVar12,0x20,iVar3,0,0);\n      iVar13 = (*pcVar14)(pVVar12,0x25,iVar3,0,iStack_3c);\n      if (pVVar12->db->mallocFailed == '\0') {\n        pOVar7 = pVVar12->aOp;\n        pOVar7[iVar13].p4.p = (void *)(iVar5 - iVar15);\n        pOVar7[iVar13].p4type = -3;\n      }\n      (*pcVar14)(pVVar12,0x7b,iVar3,0,0);\n      goto LAB_000c3544;\n    }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar6 = 0;\n      pcVar14 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar10 = pVVar12->nOp;\nLAB_000c34ac:\n      iStack_3c = target + iVar15;\n      iVar3 = pSort->iECursor;\n      (*pcVar14)(pVVar12,0x30,iVar13,iVar10 + 4,0);\n      (*pcVar14)(pVVar12,0x20,iVar3,0,0);\n      iVar13 = (*pcVar14)(pVVar12,0x25,iVar3,0,iStack_3c);\n      if (pVVar12->db->mallocFailed == '\0') {\n        pOVar7 = pVVar12->aOp;\n        pOVar7[iVar13].p4.p = (void *)(iVar5 - iVar15);\n        pOVar7[iVar13].p4type = -3;\n      }\n      (*pcVar14)(pVVar12,0x7b,iVar3,0,0);\n      goto LAB_000c3544;\n    }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "pcVar14 = (code *)(PTR_LAB_0015b710 + -0x3890);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0015b710 + -0x3890)" identifier = (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) ;) (expression_statement "iVar10 = pVVar12->nOp;" (assignment_expression "iVar10 = pVVar12->nOp" identifier = (field_expression "pVVar12->nOp" identifier -> field_identifier)) ;) (labeled_statement "LAB_000c34ac:\n      iStack_3c = target + iVar15;" statement_identifier : (expression_statement "iStack_3c = target + iVar15;" (assignment_expression "iStack_3c = target + iVar15" identifier = (binary_expression "target + iVar15" identifier + identifier)) ;)) (expression_statement "iVar3 = pSort->iECursor;" (assignment_expression "iVar3 = pSort->iECursor" identifier = (field_expression "pSort->iECursor" identifier -> field_identifier)) ;) (expression_statement "(*pcVar14)(pVVar12,0x30,iVar13,iVar10 + 4,0);" (call_expression "(*pcVar14)(pVVar12,0x30,iVar13,iVar10 + 4,0)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pVVar12,0x30,iVar13,iVar10 + 4,0)" ( identifier , number_literal , identifier , (binary_expression "iVar10 + 4" identifier + number_literal) , number_literal ))) ;) (expression_statement "(*pcVar14)(pVVar12,0x20,iVar3,0,0);" (call_expression "(*pcVar14)(pVVar12,0x20,iVar3,0,0)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pVVar12,0x20,iVar3,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal ))) ;) (expression_statement "iVar13 = (*pcVar14)(pVVar12,0x25,iVar3,0,iStack_3c);" (assignment_expression "iVar13 = (*pcVar14)(pVVar12,0x25,iVar3,0,iStack_3c)" identifier = (call_expression "(*pcVar14)(pVVar12,0x25,iVar3,0,iStack_3c)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pVVar12,0x25,iVar3,0,iStack_3c)" ( identifier , number_literal , identifier , number_literal , identifier )))) ;) (if_statement "if (pVVar12->db->mallocFailed == '\0') {\n        pOVar7 = pVVar12->aOp;\n        pOVar7[iVar13].p4.p = (void *)(iVar5 - iVar15);\n        pOVar7[iVar13].p4type = -3;\n      }" if (parenthesized_expression "(pVVar12->db->mallocFailed == '\0')" ( (binary_expression "pVVar12->db->mallocFailed == '\0'" (field_expression "pVVar12->db->mallocFailed" (field_expression "pVVar12->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pOVar7 = pVVar12->aOp;\n        pOVar7[iVar13].p4.p = (void *)(iVar5 - iVar15);\n        pOVar7[iVar13].p4type = -3;\n      }" { (expression_statement "pOVar7 = pVVar12->aOp;" (assignment_expression "pOVar7 = pVVar12->aOp" identifier = (field_expression "pVVar12->aOp" identifier -> field_identifier)) ;) (expression_statement "pOVar7[iVar13].p4.p = (void *)(iVar5 - iVar15);" (assignment_expression "pOVar7[iVar13].p4.p = (void *)(iVar5 - iVar15)" (field_expression "pOVar7[iVar13].p4.p" (field_expression "pOVar7[iVar13].p4" (subscript_expression "pOVar7[iVar13]" identifier [ identifier ]) . field_identifier) . field_identifier) = (cast_expression "(void *)(iVar5 - iVar15)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 - iVar15)" ( (binary_expression "iVar5 - iVar15" identifier - identifier) )))) ;) (expression_statement "pOVar7[iVar13].p4type = -3;" (assignment_expression "pOVar7[iVar13].p4type = -3" (field_expression "pOVar7[iVar13].p4type" (subscript_expression "pOVar7[iVar13]" identifier [ identifier ]) . field_identifier) = number_literal) ;) })) (expression_statement "(*pcVar14)(pVVar12,0x7b,iVar3,0,0);" (call_expression "(*pcVar14)(pVVar12,0x7b,iVar3,0,0)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pVVar12,0x7b,iVar3,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal ))) ;) (goto_statement "goto LAB_000c3544;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                             (int)pSelect,target,pSort_1);\n    iVar3 = pParse->nMem + 1;\n    pParse->nMem = pSort->nOBSat + pParse->nMem;\n    puVar2 = PTR_LAB_0015b710;\n    iVar10 = pSort->nOBSat;\n    if ((bVar1 & 1) == 0) {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x14,target + iVar5,0,0);\n    }\n    else {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x73,pSort->iECursor,0,0);\n    }\n    pcVar14 = (code *)(puVar2 + -0x3890);\n    (*pcVar14)(pVVar12,0x57,iVar3,target,pSort->nOBSat);\n    puVar2 = PTR_memset_0015b9b4;\n    iVar4 = pSort->addrSortIndex;\n    if (iVar4 < 0) {\n      iVar4 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iVar4;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    if (pParse->db->mallocFailed != '\0') {\n      return;\n    }\n    pKVar11 = (pOVar7->p4).pKeyInfo;\n    pOVar7->p2 = (iVar5 - iVar10) + uVar8 + nData;\n    (*(code *)puVar2)(pKVar11->aSortOrder,0,pKVar11->nKeyField);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(pVVar12,0xffffffff,pKVar11,0xfffffff7);\n    iVar10 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                       (pParse,pSort->pOrderBy,iVar15,\n                        ((uint)pKVar11->nAllField - (uint)pKVar11->nKeyField) + -1);\n    (pOVar7->p4).i = iVar10;\n    iStack_34 = pVVar12->nOp;\n    (*pcVar14)(pVVar12,0x10,iStack_34 + 1,0,iStack_34 + 1);\n    iVar10 = pParse->nLabel + -1;\n    pParse->nLabel = iVar10;\n    pSort->labelBkOut = iVar10;\n    iVar10 = pParse->nMem + 1;\n    pParse->nMem = iVar10;\n    pSort->regReturn = iVar10;\n    (*pcVar14)(pVVar12,0xc,iVar10,pSort->labelBkOut,0);\n    (*pcVar14)(pVVar12,0x8a,pSort->iECursor,0,0);\n    if (iVar13 != 0) {\n      (*pcVar14)(pVVar12,0x14,iVar13,pSort->labelDone,0);\n    }\n    if (iStack_3c < 0) {\n      iStack_3c = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iStack_3c;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    pOVar7->p2 = pVVar12->nOp;\n    (*pcVar14)(pParse->pVdbe,0x4d,target,iVar3,pSort->nOBSat);\n    if (iStack_34 < 0) {\n      iStack_34 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iStack_34;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    pOVar7->p2 = pVVar12->nOp;\n    if (iVar13 != 0) {\n      iVar10 = pVVar12->nOp;\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }" else (compound_statement "{\n    iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                             (int)pSelect,target,pSort_1);\n    iVar3 = pParse->nMem + 1;\n    pParse->nMem = pSort->nOBSat + pParse->nMem;\n    puVar2 = PTR_LAB_0015b710;\n    iVar10 = pSort->nOBSat;\n    if ((bVar1 & 1) == 0) {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x14,target + iVar5,0,0);\n    }\n    else {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x73,pSort->iECursor,0,0);\n    }\n    pcVar14 = (code *)(puVar2 + -0x3890);\n    (*pcVar14)(pVVar12,0x57,iVar3,target,pSort->nOBSat);\n    puVar2 = PTR_memset_0015b9b4;\n    iVar4 = pSort->addrSortIndex;\n    if (iVar4 < 0) {\n      iVar4 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iVar4;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    if (pParse->db->mallocFailed != '\0') {\n      return;\n    }\n    pKVar11 = (pOVar7->p4).pKeyInfo;\n    pOVar7->p2 = (iVar5 - iVar10) + uVar8 + nData;\n    (*(code *)puVar2)(pKVar11->aSortOrder,0,pKVar11->nKeyField);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(pVVar12,0xffffffff,pKVar11,0xfffffff7);\n    iVar10 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                       (pParse,pSort->pOrderBy,iVar15,\n                        ((uint)pKVar11->nAllField - (uint)pKVar11->nKeyField) + -1);\n    (pOVar7->p4).i = iVar10;\n    iStack_34 = pVVar12->nOp;\n    (*pcVar14)(pVVar12,0x10,iStack_34 + 1,0,iStack_34 + 1);\n    iVar10 = pParse->nLabel + -1;\n    pParse->nLabel = iVar10;\n    pSort->labelBkOut = iVar10;\n    iVar10 = pParse->nMem + 1;\n    pParse->nMem = iVar10;\n    pSort->regReturn = iVar10;\n    (*pcVar14)(pVVar12,0xc,iVar10,pSort->labelBkOut,0);\n    (*pcVar14)(pVVar12,0x8a,pSort->iECursor,0,0);\n    if (iVar13 != 0) {\n      (*pcVar14)(pVVar12,0x14,iVar13,pSort->labelDone,0);\n    }\n    if (iStack_3c < 0) {\n      iStack_3c = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iStack_3c;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    pOVar7->p2 = pVVar12->nOp;\n    (*pcVar14)(pParse->pVdbe,0x4d,target,iVar3,pSort->nOBSat);\n    if (iStack_34 < 0) {\n      iStack_34 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iStack_34;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }\n    pOVar7->p2 = pVVar12->nOp;\n    if (iVar13 != 0) {\n      iVar10 = pVVar12->nOp;\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }" { (expression_statement "iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                             (int)pSelect,target,pSort_1);" (assignment_expression "iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                             (int)pSelect,target,pSort_1)" identifier = (call_expression "makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                             (int)pSelect,target,pSort_1)" identifier (argument_list "(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                             (int)pSelect,target,pSort_1)" ( identifier , (cast_expression "(SortCtx *)pSort->nOBSat" ( (type_descriptor "SortCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSort->nOBSat" identifier -> field_identifier)) , (cast_expression "(Select *)&pSort->pDeferredRowLoad" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pSort->pDeferredRowLoad" & (field_expression "pSort->pDeferredRowLoad" identifier -> field_identifier))) , (cast_expression "(int)pSelect" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier )))) ;) (expression_statement "iVar3 = pParse->nMem + 1;" (assignment_expression "iVar3 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = pSort->nOBSat + pParse->nMem;" (assignment_expression "pParse->nMem = pSort->nOBSat + pParse->nMem" (field_expression "pParse->nMem" identifier -> field_identifier) = (binary_expression "pSort->nOBSat + pParse->nMem" (field_expression "pSort->nOBSat" identifier -> field_identifier) + (field_expression "pParse->nMem" identifier -> field_identifier))) ;) (expression_statement "puVar2 = PTR_LAB_0015b710;" (assignment_expression "puVar2 = PTR_LAB_0015b710" identifier = identifier) ;) (expression_statement "iVar10 = pSort->nOBSat;" (assignment_expression "iVar10 = pSort->nOBSat" identifier = (field_expression "pSort->nOBSat" identifier -> field_identifier)) ;) (if_statement "if ((bVar1 & 1) == 0) {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x14,target + iVar5,0,0);\n    }\n    else {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x73,pSort->iECursor,0,0);\n    }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x14,target + iVar5,0,0);\n    }" { (expression_statement "iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x14,target + iVar5,0,0);" (assignment_expression "iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x14,target + iVar5,0,0)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x14,target + iVar5,0,0)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) )) (argument_list "(pVVar12,0x14,target + iVar5,0,0)" ( identifier , number_literal , (binary_expression "target + iVar5" identifier + identifier) , number_literal , number_literal )))) ;) }) (else_clause "else {\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x73,pSort->iECursor,0,0);\n    }" else (compound_statement "{\n      iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x73,pSort->iECursor,0,0);\n    }" { (expression_statement "iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x73,pSort->iECursor,0,0);" (assignment_expression "iStack_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x73,pSort->iECursor,0,0)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(pVVar12,0x73,pSort->iECursor,0,0)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) )) (argument_list "(pVVar12,0x73,pSort->iECursor,0,0)" ( identifier , number_literal , (field_expression "pSort->iECursor" identifier -> field_identifier) , number_literal , number_literal )))) ;) }))) (expression_statement "pcVar14 = (code *)(puVar2 + -0x3890);" (assignment_expression "pcVar14 = (code *)(puVar2 + -0x3890)" identifier = (cast_expression "(code *)(puVar2 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x3890)" ( (binary_expression "puVar2 + -0x3890" identifier + number_literal) )))) ;) (expression_statement "(*pcVar14)(pVVar12,0x57,iVar3,target,pSort->nOBSat);" (call_expression "(*pcVar14)(pVVar12,0x57,iVar3,target,pSort->nOBSat)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pVVar12,0x57,iVar3,target,pSort->nOBSat)" ( identifier , number_literal , identifier , identifier , (field_expression "pSort->nOBSat" identifier -> field_identifier) ))) ;) (expression_statement "puVar2 = PTR_memset_0015b9b4;" (assignment_expression "puVar2 = PTR_memset_0015b9b4" identifier = identifier) ;) (expression_statement "iVar4 = pSort->addrSortIndex;" (assignment_expression "iVar4 = pSort->addrSortIndex" identifier = (field_expression "pSort->addrSortIndex" identifier -> field_identifier)) ;) (if_statement "if (iVar4 < 0) {\n      iVar4 = pVVar12->nOp + -1;\n    }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar4 = pVVar12->nOp + -1;\n    }" { (expression_statement "iVar4 = pVVar12->nOp + -1;" (assignment_expression "iVar4 = pVVar12->nOp + -1" identifier = (binary_expression "pVVar12->nOp + -1" (field_expression "pVVar12->nOp" identifier -> field_identifier) + number_literal)) ;) })) (if_statement "if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iVar4;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }" if (parenthesized_expression "(pVVar12->db->mallocFailed == '\0')" ( (binary_expression "pVVar12->db->mallocFailed == '\0'" (field_expression "pVVar12->db->mallocFailed" (field_expression "pVVar12->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pOVar7 = pVVar12->aOp + iVar4;\n    }" { (expression_statement "pOVar7 = pVVar12->aOp + iVar4;" (assignment_expression "pOVar7 = pVVar12->aOp + iVar4" identifier = (binary_expression "pVVar12->aOp + iVar4" (field_expression "pVVar12->aOp" identifier -> field_identifier) + identifier)) ;) }) (else_clause "else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }" else (compound_statement "{\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }" { (expression_statement "pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);" (assignment_expression "pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514)" identifier = (cast_expression "(Op *)(PTR_DAT_0015b5d8 + -0x4514)" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b5d8 + -0x4514)" ( (binary_expression "PTR_DAT_0015b5d8 + -0x4514" identifier + number_literal) )))) ;) }))) (if_statement "if (pParse->db->mallocFailed != '\0') {\n      return;\n    }" if (parenthesized_expression "(pParse->db->mallocFailed != '\0')" ( (binary_expression "pParse->db->mallocFailed != '\0'" (field_expression "pParse->db->mallocFailed" (field_expression "pParse->db" identifier -> field_identifier) -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "pKVar11 = (pOVar7->p4).pKeyInfo;" (assignment_expression "pKVar11 = (pOVar7->p4).pKeyInfo" identifier = (field_expression "(pOVar7->p4).pKeyInfo" (parenthesized_expression "(pOVar7->p4)" ( (field_expression "pOVar7->p4" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pOVar7->p2 = (iVar5 - iVar10) + uVar8 + nData;" (assignment_expression "pOVar7->p2 = (iVar5 - iVar10) + uVar8 + nData" (field_expression "pOVar7->p2" identifier -> field_identifier) = (binary_expression "(iVar5 - iVar10) + uVar8 + nData" (binary_expression "(iVar5 - iVar10) + uVar8" (parenthesized_expression "(iVar5 - iVar10)" ( (binary_expression "iVar5 - iVar10" identifier - identifier) )) + identifier) + identifier)) ;) (expression_statement "(*(code *)puVar2)(pKVar11->aSortOrder,0,pKVar11->nKeyField);" (call_expression "(*(code *)puVar2)(pKVar11->aSortOrder,0,pKVar11->nKeyField)" (parenthesized_expression "(*(code *)puVar2)" ( (pointer_expression "*(code *)puVar2" * (cast_expression "(code *)puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pKVar11->aSortOrder,0,pKVar11->nKeyField)" ( (field_expression "pKVar11->aSortOrder" identifier -> field_identifier) , number_literal , (field_expression "pKVar11->nKeyField" identifier -> field_identifier) ))) ;) (expression_statement "(*(code *)(PTR_LAB_0015b6c0 + 0x4110))(pVVar12,0xffffffff,pKVar11,0xfffffff7);" (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x4110))(pVVar12,0xffffffff,pKVar11,0xfffffff7)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x4110))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x4110)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x4110)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x4110)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x4110" identifier + number_literal) )))) )) (argument_list "(pVVar12,0xffffffff,pKVar11,0xfffffff7)" ( identifier , number_literal , identifier , number_literal ))) ;) (expression_statement "iVar10 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                       (pParse,pSort->pOrderBy,iVar15,\n                        ((uint)pKVar11->nAllField - (uint)pKVar11->nKeyField) + -1);" (assignment_expression "iVar10 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                       (pParse,pSort->pOrderBy,iVar15,\n                        ((uint)pKVar11->nAllField - (uint)pKVar11->nKeyField) + -1)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                       (pParse,pSort->pOrderBy,iVar15,\n                        ((uint)pKVar11->nAllField - (uint)pKVar11->nKeyField) + -1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b714 + -0x7fc4))" ( (pointer_expression "*(code *)(PTR_LAB_0015b714 + -0x7fc4)" * (cast_expression "(code *)(PTR_LAB_0015b714 + -0x7fc4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b714 + -0x7fc4)" ( (binary_expression "PTR_LAB_0015b714 + -0x7fc4" identifier + number_literal) )))) )) (argument_list "(pParse,pSort->pOrderBy,iVar15,\n                        ((uint)pKVar11->nAllField - (uint)pKVar11->nKeyField) + -1)" ( identifier , (field_expression "pSort->pOrderBy" identifier -> field_identifier) , identifier , (binary_expression "((uint)pKVar11->nAllField - (uint)pKVar11->nKeyField) + -1" (parenthesized_expression "((uint)pKVar11->nAllField - (uint)pKVar11->nKeyField)" ( (binary_expression "(uint)pKVar11->nAllField - (uint)pKVar11->nKeyField" (cast_expression "(uint)pKVar11->nAllField" ( (type_descriptor "uint" type_identifier) ) (field_expression "pKVar11->nAllField" identifier -> field_identifier)) - (cast_expression "(uint)pKVar11->nKeyField" ( (type_descriptor "uint" type_identifier) ) (field_expression "pKVar11->nKeyField" identifier -> field_identifier))) )) + number_literal) )))) ;) (expression_statement "(pOVar7->p4).i = iVar10;" (assignment_expression "(pOVar7->p4).i = iVar10" (field_expression "(pOVar7->p4).i" (parenthesized_expression "(pOVar7->p4)" ( (field_expression "pOVar7->p4" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "iStack_34 = pVVar12->nOp;" (assignment_expression "iStack_34 = pVVar12->nOp" identifier = (field_expression "pVVar12->nOp" identifier -> field_identifier)) ;) (expression_statement "(*pcVar14)(pVVar12,0x10,iStack_34 + 1,0,iStack_34 + 1);" (call_expression "(*pcVar14)(pVVar12,0x10,iStack_34 + 1,0,iStack_34 + 1)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pVVar12,0x10,iStack_34 + 1,0,iStack_34 + 1)" ( identifier , number_literal , (binary_expression "iStack_34 + 1" identifier + number_literal) , number_literal , (binary_expression "iStack_34 + 1" identifier + number_literal) ))) ;) (expression_statement "iVar10 = pParse->nLabel + -1;" (assignment_expression "iVar10 = pParse->nLabel + -1" identifier = (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nLabel = iVar10;" (assignment_expression "pParse->nLabel = iVar10" (field_expression "pParse->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "pSort->labelBkOut = iVar10;" (assignment_expression "pSort->labelBkOut = iVar10" (field_expression "pSort->labelBkOut" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar10 = pParse->nMem + 1;" (assignment_expression "iVar10 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = iVar10;" (assignment_expression "pParse->nMem = iVar10" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "pSort->regReturn = iVar10;" (assignment_expression "pSort->regReturn = iVar10" (field_expression "pSort->regReturn" identifier -> field_identifier) = identifier) ;) (expression_statement "(*pcVar14)(pVVar12,0xc,iVar10,pSort->labelBkOut,0);" (call_expression "(*pcVar14)(pVVar12,0xc,iVar10,pSort->labelBkOut,0)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pVVar12,0xc,iVar10,pSort->labelBkOut,0)" ( identifier , number_literal , identifier , (field_expression "pSort->labelBkOut" identifier -> field_identifier) , number_literal ))) ;) (expression_statement "(*pcVar14)(pVVar12,0x8a,pSort->iECursor,0,0);" (call_expression "(*pcVar14)(pVVar12,0x8a,pSort->iECursor,0,0)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pVVar12,0x8a,pSort->iECursor,0,0)" ( identifier , number_literal , (field_expression "pSort->iECursor" identifier -> field_identifier) , number_literal , number_literal ))) ;) (if_statement "if (iVar13 != 0) {\n      (*pcVar14)(pVVar12,0x14,iVar13,pSort->labelDone,0);\n    }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      (*pcVar14)(pVVar12,0x14,iVar13,pSort->labelDone,0);\n    }" { (expression_statement "(*pcVar14)(pVVar12,0x14,iVar13,pSort->labelDone,0);" (call_expression "(*pcVar14)(pVVar12,0x14,iVar13,pSort->labelDone,0)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pVVar12,0x14,iVar13,pSort->labelDone,0)" ( identifier , number_literal , identifier , (field_expression "pSort->labelDone" identifier -> field_identifier) , number_literal ))) ;) })) (if_statement "if (iStack_3c < 0) {\n      iStack_3c = pVVar12->nOp + -1;\n    }" if (parenthesized_expression "(iStack_3c < 0)" ( (binary_expression "iStack_3c < 0" identifier < number_literal) )) (compound_statement "{\n      iStack_3c = pVVar12->nOp + -1;\n    }" { (expression_statement "iStack_3c = pVVar12->nOp + -1;" (assignment_expression "iStack_3c = pVVar12->nOp + -1" identifier = (binary_expression "pVVar12->nOp + -1" (field_expression "pVVar12->nOp" identifier -> field_identifier) + number_literal)) ;) })) (if_statement "if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iStack_3c;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }" if (parenthesized_expression "(pVVar12->db->mallocFailed == '\0')" ( (binary_expression "pVVar12->db->mallocFailed == '\0'" (field_expression "pVVar12->db->mallocFailed" (field_expression "pVVar12->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pOVar7 = pVVar12->aOp + iStack_3c;\n    }" { (expression_statement "pOVar7 = pVVar12->aOp + iStack_3c;" (assignment_expression "pOVar7 = pVVar12->aOp + iStack_3c" identifier = (binary_expression "pVVar12->aOp + iStack_3c" (field_expression "pVVar12->aOp" identifier -> field_identifier) + identifier)) ;) }) (else_clause "else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }" else (compound_statement "{\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }" { (expression_statement "pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);" (assignment_expression "pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514)" identifier = (cast_expression "(Op *)(PTR_DAT_0015b5d8 + -0x4514)" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b5d8 + -0x4514)" ( (binary_expression "PTR_DAT_0015b5d8 + -0x4514" identifier + number_literal) )))) ;) }))) (expression_statement "pOVar7->p2 = pVVar12->nOp;" (assignment_expression "pOVar7->p2 = pVVar12->nOp" (field_expression "pOVar7->p2" identifier -> field_identifier) = (field_expression "pVVar12->nOp" identifier -> field_identifier)) ;) (expression_statement "(*pcVar14)(pParse->pVdbe,0x4d,target,iVar3,pSort->nOBSat);" (call_expression "(*pcVar14)(pParse->pVdbe,0x4d,target,iVar3,pSort->nOBSat)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pParse->pVdbe,0x4d,target,iVar3,pSort->nOBSat)" ( (field_expression "pParse->pVdbe" identifier -> field_identifier) , number_literal , identifier , identifier , (field_expression "pSort->nOBSat" identifier -> field_identifier) ))) ;) (if_statement "if (iStack_34 < 0) {\n      iStack_34 = pVVar12->nOp + -1;\n    }" if (parenthesized_expression "(iStack_34 < 0)" ( (binary_expression "iStack_34 < 0" identifier < number_literal) )) (compound_statement "{\n      iStack_34 = pVVar12->nOp + -1;\n    }" { (expression_statement "iStack_34 = pVVar12->nOp + -1;" (assignment_expression "iStack_34 = pVVar12->nOp + -1" identifier = (binary_expression "pVVar12->nOp + -1" (field_expression "pVVar12->nOp" identifier -> field_identifier) + number_literal)) ;) })) (if_statement "if (pVVar12->db->mallocFailed == '\0') {\n      pOVar7 = pVVar12->aOp + iStack_34;\n    }\n    else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }" if (parenthesized_expression "(pVVar12->db->mallocFailed == '\0')" ( (binary_expression "pVVar12->db->mallocFailed == '\0'" (field_expression "pVVar12->db->mallocFailed" (field_expression "pVVar12->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pOVar7 = pVVar12->aOp + iStack_34;\n    }" { (expression_statement "pOVar7 = pVVar12->aOp + iStack_34;" (assignment_expression "pOVar7 = pVVar12->aOp + iStack_34" identifier = (binary_expression "pVVar12->aOp + iStack_34" (field_expression "pVVar12->aOp" identifier -> field_identifier) + identifier)) ;) }) (else_clause "else {\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }" else (compound_statement "{\n      pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);\n    }" { (expression_statement "pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514);" (assignment_expression "pOVar7 = (Op *)(PTR_DAT_0015b5d8 + -0x4514)" identifier = (cast_expression "(Op *)(PTR_DAT_0015b5d8 + -0x4514)" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b5d8 + -0x4514)" ( (binary_expression "PTR_DAT_0015b5d8 + -0x4514" identifier + number_literal) )))) ;) }))) (expression_statement "pOVar7->p2 = pVVar12->nOp;" (assignment_expression "pOVar7->p2 = pVVar12->nOp" (field_expression "pOVar7->p2" identifier -> field_identifier) = (field_expression "pVVar12->nOp" identifier -> field_identifier)) ;) (if_statement "if (iVar13 != 0) {\n      iVar10 = pVVar12->nOp;\n      goto LAB_000c34ac;\n    }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar10 = pVVar12->nOp;\n      goto LAB_000c34ac;\n    }" { (expression_statement "iVar10 = pVVar12->nOp;" (assignment_expression "iVar10 = pVVar12->nOp" identifier = (field_expression "pVVar12->nOp" identifier -> field_identifier)) ;) (goto_statement "goto LAB_000c34ac;" goto statement_identifier ;) })) (labeled_statement "LAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;" statement_identifier : (if_statement "if (iVar6 != 0) goto LAB_000c3588;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000c3588;" goto statement_identifier ;))) }))) (expression_statement "iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                           (int)pSelect,target,pSort_1);" (assignment_expression "iVar6 = makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                           (int)pSelect,target,pSort_1)" identifier = (call_expression "makeSorterRecord(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                           (int)pSelect,target,pSort_1)" identifier (argument_list "(pParse,(SortCtx *)pSort->nOBSat,(Select *)&pSort->pDeferredRowLoad,\n                           (int)pSelect,target,pSort_1)" ( identifier , (cast_expression "(SortCtx *)pSort->nOBSat" ( (type_descriptor "SortCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSort->nOBSat" identifier -> field_identifier)) , (cast_expression "(Select *)&pSort->pDeferredRowLoad" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pSort->pDeferredRowLoad" & (field_expression "pSort->pDeferredRowLoad" identifier -> field_identifier))) , (cast_expression "(int)pSelect" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier )))) ;) (labeled_statement "LAB_000c3588:\n  iStack_3c = target + iVar15;" statement_identifier : (expression_statement "iStack_3c = target + iVar15;" (assignment_expression "iStack_3c = target + iVar15" identifier = (binary_expression "target + iVar15" identifier + identifier)) ;)) (expression_statement "uVar9 = 0x83;" (assignment_expression "uVar9 = 0x83" identifier = number_literal) ;) (if_statement "if ((pSort->sortFlags & 1) == 0) {\n    uVar9 = 0x84;\n  }" if (parenthesized_expression "((pSort->sortFlags & 1) == 0)" ( (binary_expression "(pSort->sortFlags & 1) == 0" (parenthesized_expression "(pSort->sortFlags & 1)" ( (binary_expression "pSort->sortFlags & 1" (field_expression "pSort->sortFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar9 = 0x84;\n  }" { (expression_statement "uVar9 = 0x84;" (assignment_expression "uVar9 = 0x84" identifier = number_literal) ;) })) (expression_statement "(*(code *)(PTR_LAB_0015b710 + -0x35f0))\n            (pVVar12,uVar9,pSort->iECursor,iVar6,iStack_3c,(int)pSort_1 - iVar15);" (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x35f0))\n            (pVVar12,uVar9,pSort->iECursor,iVar6,iStack_3c,(int)pSort_1 - iVar15)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x35f0))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x35f0)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x35f0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x35f0)" ( (binary_expression "PTR_LAB_0015b710 + -0x35f0" identifier + number_literal) )))) )) (argument_list "(pVVar12,uVar9,pSort->iECursor,iVar6,iStack_3c,(int)pSort_1 - iVar15)" ( identifier , identifier , (field_expression "pSort->iECursor" identifier -> field_identifier) , identifier , identifier , (binary_expression "(int)pSort_1 - iVar15" (cast_expression "(int)pSort_1" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ))) ;) (if_statement "if (iVar13 != 0) {\n    iVar5 = pSort->labelOBLopt;\n    if (iVar5 == 0) {\n      iVar5 = pVVar12->nOp;\n    }\n    if (iVar13 < 0) {\n      iVar13 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pVVar12->aOp[iVar13].p2 = iVar5;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar5;\n    }\n  }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar5 = pSort->labelOBLopt;\n    if (iVar5 == 0) {\n      iVar5 = pVVar12->nOp;\n    }\n    if (iVar13 < 0) {\n      iVar13 = pVVar12->nOp + -1;\n    }\n    if (pVVar12->db->mallocFailed == '\0') {\n      pVVar12->aOp[iVar13].p2 = iVar5;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar5;\n    }\n  }" { (expression_statement "iVar5 = pSort->labelOBLopt;" (assignment_expression "iVar5 = pSort->labelOBLopt" identifier = (field_expression "pSort->labelOBLopt" identifier -> field_identifier)) ;) (if_statement "if (iVar5 == 0) {\n      iVar5 = pVVar12->nOp;\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar5 = pVVar12->nOp;\n    }" { (expression_statement "iVar5 = pVVar12->nOp;" (assignment_expression "iVar5 = pVVar12->nOp" identifier = (field_expression "pVVar12->nOp" identifier -> field_identifier)) ;) })) (if_statement "if (iVar13 < 0) {\n      iVar13 = pVVar12->nOp + -1;\n    }" if (parenthesized_expression "(iVar13 < 0)" ( (binary_expression "iVar13 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar13 = pVVar12->nOp + -1;\n    }" { (expression_statement "iVar13 = pVVar12->nOp + -1;" (assignment_expression "iVar13 = pVVar12->nOp + -1" identifier = (binary_expression "pVVar12->nOp + -1" (field_expression "pVVar12->nOp" identifier -> field_identifier) + number_literal)) ;) })) (if_statement "if (pVVar12->db->mallocFailed == '\0') {\n      pVVar12->aOp[iVar13].p2 = iVar5;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar5;\n    }" if (parenthesized_expression "(pVVar12->db->mallocFailed == '\0')" ( (binary_expression "pVVar12->db->mallocFailed == '\0'" (field_expression "pVVar12->db->mallocFailed" (field_expression "pVVar12->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pVVar12->aOp[iVar13].p2 = iVar5;\n    }" { (expression_statement "pVVar12->aOp[iVar13].p2 = iVar5;" (assignment_expression "pVVar12->aOp[iVar13].p2 = iVar5" (field_expression "pVVar12->aOp[iVar13].p2" (subscript_expression "pVVar12->aOp[iVar13]" (field_expression "pVVar12->aOp" identifier -> field_identifier) [ identifier ]) . field_identifier) = identifier) ;) }) (else_clause "else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar5;\n    }" else (compound_statement "{\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar5;\n    }" { (expression_statement "*(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar5;" (assignment_expression "*(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar5" (pointer_expression "*(int *)(PTR_DAT_0015b5d8 + -0x450c)" * (cast_expression "(int *)(PTR_DAT_0015b5d8 + -0x450c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b5d8 + -0x450c)" ( (binary_expression "PTR_DAT_0015b5d8 + -0x450c" identifier + number_literal) )))) = identifier) ;) }))) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000c3350(int *param_1,undefined4 *param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  int *piVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  int local_3c;\n  int local_34;\n  \n  bVar1 = *(byte *)(param_2 + 8);\n  piVar11 = (int *)param_1[2];\n  iVar4 = *(int *)*param_2;\n  uVar7 = ~(uint)bVar1 & 1;\n  iVar16 = param_2[1];\n  iVar14 = uVar7 + iVar4 + param_6;\n  if (param_7 == 0) {\n    iVar15 = param_1[0xb] + 1;\n    param_1[0xb] = param_1[0xb] + iVar14;\n  }\n  else {\n    iVar15 = param_4 - param_7;\n  }\n  if (*(int *)(param_3 + 0x10) == 0) {\n    iVar12 = *(int *)(param_3 + 0xc);\n  }\n  else {\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }\n  iVar6 = param_1[0xe];\n  uVar8 = 1;\n  if (param_5 != 0) {\n    uVar8 = 5;\n  }\n  param_1[0xe] = iVar6 + -1;\n  param_2[6] = iVar6 + -1;\n  FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8);\n  if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);\n  }\n  if ((param_7 == 0) && (0 < param_6)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);\n  }\n  if (iVar16 < 1) {\n    if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }\n  iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\nLAB_000c3588:\n  local_3c = iVar15 + iVar16;\n  uVar8 = 0x83;\n  if ((*(byte *)(param_2 + 8) & 1) == 0) {\n    uVar8 = 0x84;\n  }\n  (*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16);\n  if (iVar12 != 0) {\n    iVar4 = param_2[7];\n    if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }\n    if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_000c3350(int *param_1,undefined4 *param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  int *piVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  int local_3c;\n  int local_34;\n  \n  bVar1 = *(byte *)(param_2 + 8);\n  piVar11 = (int *)param_1[2];\n  iVar4 = *(int *)*param_2;\n  uVar7 = ~(uint)bVar1 & 1;\n  iVar16 = param_2[1];\n  iVar14 = uVar7 + iVar4 + param_6;\n  if (param_7 == 0) {\n    iVar15 = param_1[0xb] + 1;\n    param_1[0xb] = param_1[0xb] + iVar14;\n  }\n  else {\n    iVar15 = param_4 - param_7;\n  }\n  if (*(int *)(param_3 + 0x10) == 0) {\n    iVar12 = *(int *)(param_3 + 0xc);\n  }\n  else {\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }\n  iVar6 = param_1[0xe];\n  uVar8 = 1;\n  if (param_5 != 0) {\n    uVar8 = 5;\n  }\n  param_1[0xe] = iVar6 + -1;\n  param_2[6] = iVar6 + -1;\n  FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8);\n  if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);\n  }\n  if ((param_7 == 0) && (0 < param_6)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);\n  }\n  if (iVar16 < 1) {\n    if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }\n  iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\nLAB_000c3588:\n  local_3c = iVar15 + iVar16;\n  uVar8 = 0x83;\n  if ((*(byte *)(param_2 + 8) & 1) == 0) {\n    uVar8 = 0x84;\n  }\n  (*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16);\n  if (iVar12 != 0) {\n    iVar4 = param_2[7];\n    if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }\n    if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000c3350(int *param_1,undefined4 *param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7)" identifier (parameter_list "(int *param_1,undefined4 *param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  int *piVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  int local_3c;\n  int local_34;\n  \n  bVar1 = *(byte *)(param_2 + 8);\n  piVar11 = (int *)param_1[2];\n  iVar4 = *(int *)*param_2;\n  uVar7 = ~(uint)bVar1 & 1;\n  iVar16 = param_2[1];\n  iVar14 = uVar7 + iVar4 + param_6;\n  if (param_7 == 0) {\n    iVar15 = param_1[0xb] + 1;\n    param_1[0xb] = param_1[0xb] + iVar14;\n  }\n  else {\n    iVar15 = param_4 - param_7;\n  }\n  if (*(int *)(param_3 + 0x10) == 0) {\n    iVar12 = *(int *)(param_3 + 0xc);\n  }\n  else {\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }\n  iVar6 = param_1[0xe];\n  uVar8 = 1;\n  if (param_5 != 0) {\n    uVar8 = 5;\n  }\n  param_1[0xe] = iVar6 + -1;\n  param_2[6] = iVar6 + -1;\n  FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8);\n  if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);\n  }\n  if ((param_7 == 0) && (0 < param_6)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);\n  }\n  if (iVar16 < 1) {\n    if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }\n  iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\nLAB_000c3588:\n  local_3c = iVar15 + iVar16;\n  uVar8 = 0x83;\n  if ((*(byte *)(param_2 + 8) & 1) == 0) {\n    uVar8 = 0x84;\n  }\n  (*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16);\n  if (iVar12 != 0) {\n    iVar4 = param_2[7];\n    if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }\n    if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (expression_statement "bVar1 = *(byte *)(param_2 + 8);" (assignment_expression "bVar1 = *(byte *)(param_2 + 8)" identifier = (pointer_expression "*(byte *)(param_2 + 8)" * (cast_expression "(byte *)(param_2 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "piVar11 = (int *)param_1[2];" (assignment_expression "piVar11 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar4 = *(int *)*param_2;" (assignment_expression "iVar4 = *(int *)*param_2" identifier = (pointer_expression "*(int *)*param_2" * (cast_expression "(int *)*param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)))) ;) (expression_statement "uVar7 = ~(uint)bVar1 & 1;" (assignment_expression "uVar7 = ~(uint)bVar1 & 1" identifier = (binary_expression "~(uint)bVar1 & 1" (unary_expression "~(uint)bVar1" ~ (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal)) ;) (expression_statement "iVar16 = param_2[1];" (assignment_expression "iVar16 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "iVar14 = uVar7 + iVar4 + param_6;" (assignment_expression "iVar14 = uVar7 + iVar4 + param_6" identifier = (binary_expression "uVar7 + iVar4 + param_6" (binary_expression "uVar7 + iVar4" identifier + identifier) + identifier)) ;) (if_statement "if (param_7 == 0) {\n    iVar15 = param_1[0xb] + 1;\n    param_1[0xb] = param_1[0xb] + iVar14;\n  }\n  else {\n    iVar15 = param_4 - param_7;\n  }" if (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar15 = param_1[0xb] + 1;\n    param_1[0xb] = param_1[0xb] + iVar14;\n  }" { (expression_statement "iVar15 = param_1[0xb] + 1;" (assignment_expression "iVar15 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = param_1[0xb] + iVar14;" (assignment_expression "param_1[0xb] = param_1[0xb] + iVar14" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_1[0xb] + iVar14" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + identifier)) ;) }) (else_clause "else {\n    iVar15 = param_4 - param_7;\n  }" else (compound_statement "{\n    iVar15 = param_4 - param_7;\n  }" { (expression_statement "iVar15 = param_4 - param_7;" (assignment_expression "iVar15 = param_4 - param_7" identifier = (binary_expression "param_4 - param_7" identifier - identifier)) ;) }))) (if_statement "if (*(int *)(param_3 + 0x10) == 0) {\n    iVar12 = *(int *)(param_3 + 0xc);\n  }\n  else {\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }" if (parenthesized_expression "(*(int *)(param_3 + 0x10) == 0)" ( (binary_expression "*(int *)(param_3 + 0x10) == 0" (pointer_expression "*(int *)(param_3 + 0x10)" * (cast_expression "(int *)(param_3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    iVar12 = *(int *)(param_3 + 0xc);\n  }" { (expression_statement "iVar12 = *(int *)(param_3 + 0xc);" (assignment_expression "iVar12 = *(int *)(param_3 + 0xc)" identifier = (pointer_expression "*(int *)(param_3 + 0xc)" * (cast_expression "(int *)(param_3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }" else (compound_statement "{\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }" { (expression_statement "iVar12 = *(int *)(param_3 + 0x10) + 1;" (assignment_expression "iVar12 = *(int *)(param_3 + 0x10) + 1" identifier = (binary_expression "*(int *)(param_3 + 0x10) + 1" (pointer_expression "*(int *)(param_3 + 0x10)" * (cast_expression "(int *)(param_3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) + number_literal)) ;) }))) (expression_statement "iVar6 = param_1[0xe];" (assignment_expression "iVar6 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (if_statement "if (param_5 != 0) {\n    uVar8 = 5;\n  }" if (parenthesized_expression "(param_5 != 0)" ( (binary_expression "param_5 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar8 = 5;\n  }" { (expression_statement "uVar8 = 5;" (assignment_expression "uVar8 = 5" identifier = number_literal) ;) })) (expression_statement "param_1[0xe] = iVar6 + -1;" (assignment_expression "param_1[0xe] = iVar6 + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "param_2[6] = iVar6 + -1;" (assignment_expression "param_2[6] = iVar6 + -1" (subscript_expression "param_2[6]" identifier [ number_literal ]) = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8);" (call_expression "FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8)" identifier (argument_list "(param_1,*param_2,iVar15,param_5,uVar8)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , identifier , identifier ))) ;) (if_statement "if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);\n  }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);\n  }" { (expression_statement "(*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);" (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) )) (argument_list "(piVar11,0x78,param_2[2],iVar15 + iVar4,0)" ( identifier , number_literal , (subscript_expression "param_2[2]" identifier [ number_literal ]) , (binary_expression "iVar15 + iVar4" identifier + identifier) , number_literal ))) ;) })) (if_statement "if ((param_7 == 0) && (0 < param_6)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);\n  }" if (parenthesized_expression "((param_7 == 0) && (0 < param_6))" ( (binary_expression "(param_7 == 0) && (0 < param_6)" (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) )) && (parenthesized_expression "(0 < param_6)" ( (binary_expression "0 < param_6" number_literal < identifier) ))) )) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);\n  }" { (expression_statement "(*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);" (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) )) (argument_list "(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6)" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , number_literal , identifier , (binary_expression "iVar15 + iVar4 + uVar7" (binary_expression "iVar15 + iVar4" identifier + identifier) + identifier) , identifier ))) ;) })) (if_statement "if (iVar16 < 1) {\n    if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }" if (parenthesized_expression "(iVar16 < 1)" ( (binary_expression "iVar16 < 1" identifier < number_literal) )) (compound_statement "{\n    if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }\n  }" { (if_statement "if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);" (assignment_expression "pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890)" identifier = (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) ;) (expression_statement "iVar9 = piVar11[0x1b];" (assignment_expression "iVar9 = piVar11[0x1b]" identifier = (subscript_expression "piVar11[0x1b]" identifier [ number_literal ])) ;) (labeled_statement "LAB_000c34ac:\n      local_3c = iVar15 + iVar16;" statement_identifier : (expression_statement "local_3c = iVar15 + iVar16;" (assignment_expression "local_3c = iVar15 + iVar16" identifier = (binary_expression "iVar15 + iVar16" identifier + identifier)) ;)) (expression_statement "uVar8 = param_2[2];" (assignment_expression "uVar8 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "(*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);" (call_expression "(*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x30,iVar12,iVar9 + 4,0)" ( identifier , number_literal , identifier , (binary_expression "iVar9 + 4" identifier + number_literal) , number_literal ))) ;) (expression_statement "(*pcVar13)(piVar11,0x20,uVar8,0,0);" (call_expression "(*pcVar13)(piVar11,0x20,uVar8,0,0)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x20,uVar8,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal ))) ;) (expression_statement "iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);" (assignment_expression "iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c)" identifier = (call_expression "(*pcVar13)(piVar11,0x25,uVar8,0,local_3c)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x25,uVar8,0,local_3c)" ( identifier , number_literal , identifier , number_literal , identifier )))) ;) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" * (cast_expression "(char *)(*piVar11 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x51)" ( (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }" { (expression_statement "iVar9 = piVar11[0x1a] + iVar12 * 0x14;" (assignment_expression "iVar9 = piVar11[0x1a] + iVar12 * 0x14" identifier = (binary_expression "piVar11[0x1a] + iVar12 * 0x14" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + (binary_expression "iVar12 * 0x14" identifier * number_literal))) ;) (expression_statement "*(int *)(iVar9 + 0x10) = iVar4 - iVar16;" (assignment_expression "*(int *)(iVar9 + 0x10) = iVar4 - iVar16" (pointer_expression "*(int *)(iVar9 + 0x10)" * (cast_expression "(int *)(iVar9 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x10)" ( (binary_expression "iVar9 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar4 - iVar16" identifier - identifier)) ;) (expression_statement "*(undefined1 *)(iVar9 + 1) = 0xfd;" (assignment_expression "*(undefined1 *)(iVar9 + 1) = 0xfd" (pointer_expression "*(undefined1 *)(iVar9 + 1)" * (cast_expression "(undefined1 *)(iVar9 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 1)" ( (binary_expression "iVar9 + 1" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "(*pcVar13)(piVar11,0x7b,uVar8,0,0);" (call_expression "(*pcVar13)(piVar11,0x7b,uVar8,0,0)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x7b,uVar8,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal ))) ;) (goto_statement "goto LAB_000c3544;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }" else (compound_statement "{\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }" { (expression_statement "iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);" (assignment_expression "iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" identifier = (call_expression "FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" identifier (argument_list "(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" ( identifier , (subscript_expression "param_2[1]" identifier [ number_literal ]) , (binary_expression "param_2 + 9" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "iVar5 = param_1[0xb] + 1;" (assignment_expression "iVar5 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = param_2[1] + param_1[0xb];" (assignment_expression "param_1[0xb] = param_2[1] + param_1[0xb]" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_2[1] + param_1[0xb]" (subscript_expression "param_2[1]" identifier [ number_literal ]) + (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ;) (expression_statement "puVar3 = PTR_LAB_0015b710;" (assignment_expression "puVar3 = PTR_LAB_0015b710" identifier = identifier) ;) (expression_statement "iVar9 = param_2[1];" (assignment_expression "iVar9 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }" { (expression_statement "local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);" (assignment_expression "local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) )) (argument_list "(piVar11,0x14,iVar15 + iVar4,0,0)" ( identifier , number_literal , (binary_expression "iVar15 + iVar4" identifier + identifier) , number_literal , number_literal )))) ;) }) (else_clause "else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }" else (compound_statement "{\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }" { (expression_statement "local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);" (assignment_expression "local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" ( (binary_expression "PTR_LAB_0015b710 + -0x3890" identifier + number_literal) )))) )) (argument_list "(piVar11,0x73,param_2[2],0,0)" ( identifier , number_literal , (subscript_expression "param_2[2]" identifier [ number_literal ]) , number_literal , number_literal )))) ;) }))) (expression_statement "pcVar13 = (code *)(puVar3 + -0x3890);" (assignment_expression "pcVar13 = (code *)(puVar3 + -0x3890)" identifier = (cast_expression "(code *)(puVar3 + -0x3890)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3890)" ( (binary_expression "puVar3 + -0x3890" identifier + number_literal) )))) ;) (expression_statement "(*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);" (call_expression "(*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1])" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x57,iVar5,iVar15,param_2[1])" ( identifier , number_literal , identifier , identifier , (subscript_expression "param_2[1]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar3 = PTR_memset_0015b9b4;" (assignment_expression "puVar3 = PTR_memset_0015b9b4" identifier = identifier) ;) (expression_statement "iVar2 = param_2[5];" (assignment_expression "iVar2 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) (if_statement "if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar2 = piVar11[0x1b] + -1;\n    }" { (expression_statement "iVar2 = piVar11[0x1b] + -1;" (assignment_expression "iVar2 = piVar11[0x1b] + -1" identifier = (binary_expression "piVar11[0x1b] + -1" (subscript_expression "piVar11[0x1b]" identifier [ number_literal ]) + number_literal)) ;) })) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" * (cast_expression "(char *)(*piVar11 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x51)" ( (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }" { (expression_statement "puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);" (assignment_expression "puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14)" identifier = (cast_expression "(undefined *)(piVar11[0x1a] + iVar2 * 0x14)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x1a] + iVar2 * 0x14)" ( (binary_expression "piVar11[0x1a] + iVar2 * 0x14" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + (binary_expression "iVar2 * 0x14" identifier * number_literal)) )))) ;) }) (else_clause "else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }" else (compound_statement "{\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }" { (expression_statement "puVar10 = PTR_DAT_0015b5d8 + -0x4514;" (assignment_expression "puVar10 = PTR_DAT_0015b5d8 + -0x4514" identifier = (binary_expression "PTR_DAT_0015b5d8 + -0x4514" identifier + number_literal)) ;) }))) (if_statement "if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }" if (parenthesized_expression "(*(char *)(*param_1 + 0x51) != '\0')" ( (binary_expression "*(char *)(*param_1 + 0x51) != '\0'" (pointer_expression "*(char *)(*param_1 + 0x51)" * (cast_expression "(char *)(*param_1 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x51)" ( (binary_expression "*param_1 + 0x51" (pointer_expression "*param_1" * identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "iVar2 = *(int *)(puVar10 + 0x10);" (assignment_expression "iVar2 = *(int *)(puVar10 + 0x10)" identifier = (pointer_expression "*(int *)(puVar10 + 0x10)" * (cast_expression "(int *)(puVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x10)" ( (binary_expression "puVar10 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;" (assignment_expression "*(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6" (pointer_expression "*(uint *)(puVar10 + 8)" * (cast_expression "(uint *)(puVar10 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 8)" ( (binary_expression "puVar10 + 8" identifier + number_literal) )))) = (binary_expression "(iVar4 - iVar9) + uVar7 + param_6" (binary_expression "(iVar4 - iVar9) + uVar7" (parenthesized_expression "(iVar4 - iVar9)" ( (binary_expression "iVar4 - iVar9" identifier - identifier) )) + identifier) + identifier)) ;) (expression_statement "(*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));" (call_expression "(*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6))" (parenthesized_expression "(*(code *)puVar3)" ( (pointer_expression "*(code *)puVar3" * (cast_expression "(code *)puVar3" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x10)" * (cast_expression "(undefined4 *)(iVar2 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) , number_literal , (pointer_expression "*(undefined2 *)(iVar2 + 6)" * (cast_expression "(undefined2 *)(iVar2 + 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 6)" ( (binary_expression "iVar2 + 6" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);" (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x4110))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x4110)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x4110)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x4110)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x4110" identifier + number_literal) )))) )) (argument_list "(piVar11,0xffffffff,iVar2,0xfffffff7)" ( identifier , number_literal , identifier , number_literal ))) ;) (expression_statement "uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);" (assignment_expression "uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b714 + -0x7fc4))" ( (pointer_expression "*(code *)(PTR_LAB_0015b714 + -0x7fc4)" * (cast_expression "(code *)(PTR_LAB_0015b714 + -0x7fc4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b714 + -0x7fc4)" ( (binary_expression "PTR_LAB_0015b714 + -0x7fc4" identifier + number_literal) )))) )) (argument_list "(param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1" (parenthesized_expression "((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6))" ( (binary_expression "(uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)" (binary_expression "(uint)*(ushort *)(iVar2 + 8)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar2 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) - (binary_expression "(uint)*(ushort *)(iVar2 + 6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar2 + 6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 6)" ( (binary_expression "iVar2 + 6" identifier + number_literal) ))))) )) + number_literal) )))) ;) (expression_statement "*(undefined4 *)(puVar10 + 0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar10 + 0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar10 + 0x10)" * (cast_expression "(undefined4 *)(puVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x10)" ( (binary_expression "puVar10 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_34 = piVar11[0x1b];" (assignment_expression "local_34 = piVar11[0x1b]" identifier = (subscript_expression "piVar11[0x1b]" identifier [ number_literal ])) ;) (expression_statement "(*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);" (call_expression "(*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x10,local_34 + 1,0,local_34 + 1)" ( identifier , number_literal , (binary_expression "local_34 + 1" identifier + number_literal) , number_literal , (binary_expression "local_34 + 1" identifier + number_literal) ))) ;) (expression_statement "iVar9 = param_1[0xe];" (assignment_expression "iVar9 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xe] = iVar9 + -1;" (assignment_expression "param_1[0xe] = iVar9 + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "param_2[4] = iVar9 + -1;" (assignment_expression "param_2[4] = iVar9 + -1" (subscript_expression "param_2[4]" identifier [ number_literal ]) = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "iVar9 = param_1[0xb] + 1;" (assignment_expression "iVar9 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = iVar9;" (assignment_expression "param_1[0xb] = iVar9" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[3] = iVar9;" (assignment_expression "param_2[3] = iVar9" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);" (call_expression "(*pcVar13)(piVar11,0xc,iVar9,param_2[4],0)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0xc,iVar9,param_2[4],0)" ( identifier , number_literal , identifier , (subscript_expression "param_2[4]" identifier [ number_literal ]) , number_literal ))) ;) (expression_statement "(*pcVar13)(piVar11,0x8a,param_2[2],0,0);" (call_expression "(*pcVar13)(piVar11,0x8a,param_2[2],0,0)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x8a,param_2[2],0,0)" ( identifier , number_literal , (subscript_expression "param_2[2]" identifier [ number_literal ]) , number_literal , number_literal ))) ;) (if_statement "if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }" { (expression_statement "(*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);" (call_expression "(*pcVar13)(piVar11,0x14,iVar12,param_2[6],0)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(piVar11,0x14,iVar12,param_2[6],0)" ( identifier , number_literal , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) , number_literal ))) ;) })) (if_statement "if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }" if (parenthesized_expression "(local_3c < 0)" ( (binary_expression "local_3c < 0" identifier < number_literal) )) (compound_statement "{\n      local_3c = piVar11[0x1b] + -1;\n    }" { (expression_statement "local_3c = piVar11[0x1b] + -1;" (assignment_expression "local_3c = piVar11[0x1b] + -1" identifier = (binary_expression "piVar11[0x1b] + -1" (subscript_expression "piVar11[0x1b]" identifier [ number_literal ]) + number_literal)) ;) })) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" * (cast_expression "(char *)(*piVar11 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x51)" ( (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }" { (expression_statement "puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);" (assignment_expression "puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14)" identifier = (cast_expression "(undefined *)(piVar11[0x1a] + local_3c * 0x14)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x1a] + local_3c * 0x14)" ( (binary_expression "piVar11[0x1a] + local_3c * 0x14" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + (binary_expression "local_3c * 0x14" identifier * number_literal)) )))) ;) }) (else_clause "else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" else (compound_statement "{\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" { (expression_statement "puVar3 = PTR_DAT_0015b5d8 + -0x4514;" (assignment_expression "puVar3 = PTR_DAT_0015b5d8 + -0x4514" identifier = (binary_expression "PTR_DAT_0015b5d8 + -0x4514" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(puVar3 + 8) = piVar11[0x1b];" (assignment_expression "*(int *)(puVar3 + 8) = piVar11[0x1b]" (pointer_expression "*(int *)(puVar3 + 8)" * (cast_expression "(int *)(puVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 8)" ( (binary_expression "puVar3 + 8" identifier + number_literal) )))) = (subscript_expression "piVar11[0x1b]" identifier [ number_literal ])) ;) (expression_statement "(*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);" (call_expression "(*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1])" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_1[2],0x4d,iVar15,iVar5,param_2[1])" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , number_literal , identifier , identifier , (subscript_expression "param_2[1]" identifier [ number_literal ]) ))) ;) (if_statement "if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }" if (parenthesized_expression "(local_34 < 0)" ( (binary_expression "local_34 < 0" identifier < number_literal) )) (compound_statement "{\n      local_34 = piVar11[0x1b] + -1;\n    }" { (expression_statement "local_34 = piVar11[0x1b] + -1;" (assignment_expression "local_34 = piVar11[0x1b] + -1" identifier = (binary_expression "piVar11[0x1b] + -1" (subscript_expression "piVar11[0x1b]" identifier [ number_literal ]) + number_literal)) ;) })) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" * (cast_expression "(char *)(*piVar11 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x51)" ( (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }" { (expression_statement "puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);" (assignment_expression "puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14)" identifier = (cast_expression "(undefined *)(piVar11[0x1a] + local_34 * 0x14)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x1a] + local_34 * 0x14)" ( (binary_expression "piVar11[0x1a] + local_34 * 0x14" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + (binary_expression "local_34 * 0x14" identifier * number_literal)) )))) ;) }) (else_clause "else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" else (compound_statement "{\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" { (expression_statement "puVar3 = PTR_DAT_0015b5d8 + -0x4514;" (assignment_expression "puVar3 = PTR_DAT_0015b5d8 + -0x4514" identifier = (binary_expression "PTR_DAT_0015b5d8 + -0x4514" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(puVar3 + 8) = piVar11[0x1b];" (assignment_expression "*(int *)(puVar3 + 8) = piVar11[0x1b]" (pointer_expression "*(int *)(puVar3 + 8)" * (cast_expression "(int *)(puVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 8)" ( (binary_expression "puVar3 + 8" identifier + number_literal) )))) = (subscript_expression "piVar11[0x1b]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }" { (expression_statement "iVar9 = piVar11[0x1b];" (assignment_expression "iVar9 = piVar11[0x1b]" identifier = (subscript_expression "piVar11[0x1b]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_000c34ac;" goto statement_identifier ;) })) (labeled_statement "LAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;" statement_identifier : (if_statement "if (iVar6 != 0) goto LAB_000c3588;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000c3588;" goto statement_identifier ;))) }))) (expression_statement "iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);" (assignment_expression "iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" identifier = (call_expression "FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" identifier (argument_list "(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" ( identifier , (subscript_expression "param_2[1]" identifier [ number_literal ]) , (binary_expression "param_2 + 9" identifier + number_literal) , identifier , identifier , identifier )))) ;) (labeled_statement "LAB_000c3588:\n  local_3c = iVar15 + iVar16;" statement_identifier : (expression_statement "local_3c = iVar15 + iVar16;" (assignment_expression "local_3c = iVar15 + iVar16" identifier = (binary_expression "iVar15 + iVar16" identifier + identifier)) ;)) (expression_statement "uVar8 = 0x83;" (assignment_expression "uVar8 = 0x83" identifier = number_literal) ;) (if_statement "if ((*(byte *)(param_2 + 8) & 1) == 0) {\n    uVar8 = 0x84;\n  }" if (parenthesized_expression "((*(byte *)(param_2 + 8) & 1) == 0)" ( (binary_expression "(*(byte *)(param_2 + 8) & 1) == 0" (parenthesized_expression "(*(byte *)(param_2 + 8) & 1)" ( (binary_expression "*(byte *)(param_2 + 8) & 1" (pointer_expression "*(byte *)(param_2 + 8)" * (cast_expression "(byte *)(param_2 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar8 = 0x84;\n  }" { (expression_statement "uVar8 = 0x84;" (assignment_expression "uVar8 = 0x84" identifier = number_literal) ;) })) (expression_statement "(*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16);" (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x35f0))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x35f0)" * (cast_expression "(code *)(PTR_LAB_0015b710 + -0x35f0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + -0x35f0)" ( (binary_expression "PTR_LAB_0015b710 + -0x35f0" identifier + number_literal) )))) )) (argument_list "(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16)" ( identifier , identifier , (subscript_expression "param_2[2]" identifier [ number_literal ]) , identifier , identifier , (binary_expression "iVar14 - iVar16" identifier - identifier) ))) ;) (if_statement "if (iVar12 != 0) {\n    iVar4 = param_2[7];\n    if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }\n    if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }\n  }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar4 = param_2[7];\n    if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }\n    if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }\n  }" { (expression_statement "iVar4 = param_2[7];" (assignment_expression "iVar4 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (if_statement "if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar4 = piVar11[0x1b];\n    }" { (expression_statement "iVar4 = piVar11[0x1b];" (assignment_expression "iVar4 = piVar11[0x1b]" identifier = (subscript_expression "piVar11[0x1b]" identifier [ number_literal ])) ;) })) (if_statement "if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }" if (parenthesized_expression "(iVar12 < 0)" ( (binary_expression "iVar12 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar12 = piVar11[0x1b] + -1;\n    }" { (expression_statement "iVar12 = piVar11[0x1b] + -1;" (assignment_expression "iVar12 = piVar11[0x1b] + -1" identifier = (binary_expression "piVar11[0x1b] + -1" (subscript_expression "piVar11[0x1b]" identifier [ number_literal ]) + number_literal)) ;) })) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" * (cast_expression "(char *)(*piVar11 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x51)" ( (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }" { (expression_statement "*(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;" (assignment_expression "*(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4" (pointer_expression "*(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8)" * (cast_expression "(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x1a] + iVar12 * 0x14 + 8)" ( (binary_expression "piVar11[0x1a] + iVar12 * 0x14 + 8" (binary_expression "piVar11[0x1a] + iVar12 * 0x14" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + (binary_expression "iVar12 * 0x14" identifier * number_literal)) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }" else (compound_statement "{\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }" { (expression_statement "*(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;" (assignment_expression "*(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4" (pointer_expression "*(int *)(PTR_DAT_0015b5d8 + -0x450c)" * (cast_expression "(int *)(PTR_DAT_0015b5d8 + -0x450c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b5d8 + -0x450c)" ( (binary_expression "PTR_DAT_0015b5d8 + -0x450c" identifier + number_literal) )))) = identifier) ;) }))) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) }))) (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 { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , LIT , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT + IDENT) , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT , IDENT , (binary_expression (binary_expression IDENT + IDENT) + IDENT) , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , IDENT , (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , IDENT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , IDENT , LIT , LIT ))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , LIT , (binary_expression IDENT + IDENT) , LIT , LIT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , LIT , (subscript_expression IDENT [ LIT ]) , LIT , LIT )))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , IDENT , IDENT , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (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 (pointer_expression * IDENT) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + IDENT) + IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , LIT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , IDENT , (subscript_expression IDENT [ LIT ]) , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , (subscript_expression IDENT [ LIT ]) , LIT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , IDENT , (subscript_expression IDENT [ LIT ]) , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT , IDENT , IDENT , (subscript_expression IDENT [ LIT ]) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , (binary_expression IDENT - IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) })) (return_statement return ;) })))
(function_definition "void FUN_000c3350(int *param_1,undefined4 *param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  int *piVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  int local_3c;\n  int local_34;\n  \n  bVar1 = *(byte *)(param_2 + 8);\n  piVar11 = (int *)param_1[2];\n  iVar4 = *(int *)*param_2;\n  uVar7 = ~(uint)bVar1 & 1;\n  iVar16 = param_2[1];\n  iVar14 = uVar7 + iVar4 + param_6;\n  if (param_7 == 0) {\n    iVar15 = param_1[0xb] + 1;\n    param_1[0xb] = param_1[0xb] + iVar14;\n  }\n  else {\n    iVar15 = param_4 - param_7;\n  }\n  if (*(int *)(param_3 + 0x10) == 0) {\n    iVar12 = *(int *)(param_3 + 0xc);\n  }\n  else {\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }\n  iVar6 = param_1[0xe];\n  uVar8 = 1;\n  if (param_5 != 0) {\n    uVar8 = 5;\n  }\n  param_1[0xe] = iVar6 + -1;\n  param_2[6] = iVar6 + -1;\n  FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8);\n  if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);\n  }\n  if ((param_7 == 0) && (0 < param_6)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);\n  }\n  if (iVar16 < 1) {\n    if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }\n  iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\nLAB_000c3588:\n  local_3c = iVar15 + iVar16;\n  uVar8 = 0x83;\n  if ((*(byte *)(param_2 + 8) & 1) == 0) {\n    uVar8 = 0x84;\n  }\n  (*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16);\n  if (iVar12 != 0) {\n    iVar4 = param_2[7];\n    if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }\n    if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000c3350(int *param_1,undefined4 *param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7)" (identifier "FUN_000c3350") (parameter_list "(int *param_1,undefined4 *param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  int *piVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  int local_3c;\n  int local_34;\n  \n  bVar1 = *(byte *)(param_2 + 8);\n  piVar11 = (int *)param_1[2];\n  iVar4 = *(int *)*param_2;\n  uVar7 = ~(uint)bVar1 & 1;\n  iVar16 = param_2[1];\n  iVar14 = uVar7 + iVar4 + param_6;\n  if (param_7 == 0) {\n    iVar15 = param_1[0xb] + 1;\n    param_1[0xb] = param_1[0xb] + iVar14;\n  }\n  else {\n    iVar15 = param_4 - param_7;\n  }\n  if (*(int *)(param_3 + 0x10) == 0) {\n    iVar12 = *(int *)(param_3 + 0xc);\n  }\n  else {\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }\n  iVar6 = param_1[0xe];\n  uVar8 = 1;\n  if (param_5 != 0) {\n    uVar8 = 5;\n  }\n  param_1[0xe] = iVar6 + -1;\n  param_2[6] = iVar6 + -1;\n  FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8);\n  if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);\n  }\n  if ((param_7 == 0) && (0 < param_6)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);\n  }\n  if (iVar16 < 1) {\n    if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }\n  iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\nLAB_000c3588:\n  local_3c = iVar15 + iVar16;\n  uVar8 = 0x83;\n  if ((*(byte *)(param_2 + 8) & 1) == 0) {\n    uVar8 = 0x84;\n  }\n  (*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16);\n  if (iVar12 != 0) {\n    iVar4 = param_2[7];\n    if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }\n    if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }\n  }\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "code *pcVar13;" (type_identifier "code") (pointer_declarator "*pcVar13" (* "*") (identifier "pcVar13")) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (expression_statement "bVar1 = *(byte *)(param_2 + 8);" (assignment_expression "bVar1 = *(byte *)(param_2 + 8)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_2 + 8)" (* "*") (cast_expression "(byte *)(param_2 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "piVar11 = (int *)param_1[2];" (assignment_expression "piVar11 = (int *)param_1[2]" (identifier "piVar11") (= "=") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "iVar4 = *(int *)*param_2;" (assignment_expression "iVar4 = *(int *)*param_2" (identifier "iVar4") (= "=") (pointer_expression "*(int *)*param_2" (* "*") (cast_expression "(int *)*param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))))) (; ";")) (expression_statement "uVar7 = ~(uint)bVar1 & 1;" (assignment_expression "uVar7 = ~(uint)bVar1 & 1" (identifier "uVar7") (= "=") (binary_expression "~(uint)bVar1 & 1" (unary_expression "~(uint)bVar1" (~ "~") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (& "&") (number_literal "1"))) (; ";")) (expression_statement "iVar16 = param_2[1];" (assignment_expression "iVar16 = param_2[1]" (identifier "iVar16") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar14 = uVar7 + iVar4 + param_6;" (assignment_expression "iVar14 = uVar7 + iVar4 + param_6" (identifier "iVar14") (= "=") (binary_expression "uVar7 + iVar4 + param_6" (binary_expression "uVar7 + iVar4" (identifier "uVar7") (+ "+") (identifier "iVar4")) (+ "+") (identifier "param_6"))) (; ";")) (if_statement "if (param_7 == 0) {\n    iVar15 = param_1[0xb] + 1;\n    param_1[0xb] = param_1[0xb] + iVar14;\n  }\n  else {\n    iVar15 = param_4 - param_7;\n  }" (if "if") (parenthesized_expression "(param_7 == 0)" (( "(") (binary_expression "param_7 == 0" (identifier "param_7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar15 = param_1[0xb] + 1;\n    param_1[0xb] = param_1[0xb] + iVar14;\n  }" ({ "{") (expression_statement "iVar15 = param_1[0xb] + 1;" (assignment_expression "iVar15 = param_1[0xb] + 1" (identifier "iVar15") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[0xb] = param_1[0xb] + iVar14;" (assignment_expression "param_1[0xb] = param_1[0xb] + iVar14" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "param_1[0xb] + iVar14" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (identifier "iVar14"))) (; ";")) (} "}")) (else_clause "else {\n    iVar15 = param_4 - param_7;\n  }" (else "else") (compound_statement "{\n    iVar15 = param_4 - param_7;\n  }" ({ "{") (expression_statement "iVar15 = param_4 - param_7;" (assignment_expression "iVar15 = param_4 - param_7" (identifier "iVar15") (= "=") (binary_expression "param_4 - param_7" (identifier "param_4") (- "-") (identifier "param_7"))) (; ";")) (} "}")))) (if_statement "if (*(int *)(param_3 + 0x10) == 0) {\n    iVar12 = *(int *)(param_3 + 0xc);\n  }\n  else {\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_3 + 0x10) == 0)" (( "(") (binary_expression "*(int *)(param_3 + 0x10) == 0" (pointer_expression "*(int *)(param_3 + 0x10)" (* "*") (cast_expression "(int *)(param_3 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x10)" (( "(") (binary_expression "param_3 + 0x10" (identifier "param_3") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar12 = *(int *)(param_3 + 0xc);\n  }" ({ "{") (expression_statement "iVar12 = *(int *)(param_3 + 0xc);" (assignment_expression "iVar12 = *(int *)(param_3 + 0xc)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(param_3 + 0xc)" (* "*") (cast_expression "(int *)(param_3 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }" (else "else") (compound_statement "{\n    iVar12 = *(int *)(param_3 + 0x10) + 1;\n  }" ({ "{") (expression_statement "iVar12 = *(int *)(param_3 + 0x10) + 1;" (assignment_expression "iVar12 = *(int *)(param_3 + 0x10) + 1" (identifier "iVar12") (= "=") (binary_expression "*(int *)(param_3 + 0x10) + 1" (pointer_expression "*(int *)(param_3 + 0x10)" (* "*") (cast_expression "(int *)(param_3 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x10)" (( "(") (binary_expression "param_3 + 0x10" (identifier "param_3") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "iVar6 = param_1[0xe];" (assignment_expression "iVar6 = param_1[0xe]" (identifier "iVar6") (= "=") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" (identifier "uVar8") (= "=") (number_literal "1")) (; ";")) (if_statement "if (param_5 != 0) {\n    uVar8 = 5;\n  }" (if "if") (parenthesized_expression "(param_5 != 0)" (( "(") (binary_expression "param_5 != 0" (identifier "param_5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar8 = 5;\n  }" ({ "{") (expression_statement "uVar8 = 5;" (assignment_expression "uVar8 = 5" (identifier "uVar8") (= "=") (number_literal "5")) (; ";")) (} "}"))) (expression_statement "param_1[0xe] = iVar6 + -1;" (assignment_expression "param_1[0xe] = iVar6 + -1" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_2[6] = iVar6 + -1;" (assignment_expression "param_2[6] = iVar6 + -1" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8);" (call_expression "FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8)" (identifier "FUN_000c2b34") (argument_list "(param_1,*param_2,iVar15,param_5,uVar8)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "iVar15") (, ",") (identifier "param_5") (, ",") (identifier "uVar8") () ")"))) (; ";")) (if_statement "if ((bVar1 & 1) == 0) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);\n  }" (if "if") (parenthesized_expression "((bVar1 & 1) == 0)" (( "(") (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" (( "(") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);\n  }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);" (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" (( "(") (binary_expression "PTR_LAB_0015b710 + -0x3890" (identifier "PTR_LAB_0015b710") (+ "+") (number_literal "-0x3890")) () ")")))) () ")")) (argument_list "(piVar11,0x78,param_2[2],iVar15 + iVar4,0)" (( "(") (identifier "piVar11") (, ",") (number_literal "0x78") (, ",") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (, ",") (binary_expression "iVar15 + iVar4" (identifier "iVar15") (+ "+") (identifier "iVar4")) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (if_statement "if ((param_7 == 0) && (0 < param_6)) {\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);\n  }" (if "if") (parenthesized_expression "((param_7 == 0) && (0 < param_6))" (( "(") (binary_expression "(param_7 == 0) && (0 < param_6)" (parenthesized_expression "(param_7 == 0)" (( "(") (binary_expression "param_7 == 0" (identifier "param_7") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(0 < param_6)" (( "(") (binary_expression "0 < param_6" (number_literal "0") (< "<") (identifier "param_6")) () ")"))) () ")")) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);\n  }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);" (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" (( "(") (binary_expression "PTR_LAB_0015b710 + -0x3890" (identifier "PTR_LAB_0015b710") (+ "+") (number_literal "-0x3890")) () ")")))) () ")")) (argument_list "(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6)" (( "(") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (, ",") (number_literal "0x4d") (, ",") (identifier "param_4") (, ",") (binary_expression "iVar15 + iVar4 + uVar7" (binary_expression "iVar15 + iVar4" (identifier "iVar15") (+ "+") (identifier "iVar4")) (+ "+") (identifier "uVar7")) (, ",") (identifier "param_6") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar16 < 1) {\n    if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }\n  }\n  else {\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }" (if "if") (parenthesized_expression "(iVar16 < 1)" (( "(") (binary_expression "iVar16 < 1" (identifier "iVar16") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }\n  }" ({ "{") (if_statement "if (iVar12 != 0) {\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar6 = 0;\n      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);\n      iVar9 = piVar11[0x1b];\nLAB_000c34ac:\n      local_3c = iVar15 + iVar16;\n      uVar8 = param_2[2];\n      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);\n      (*pcVar13)(piVar11,0x20,uVar8,0,0);\n      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);\n      if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }\n      (*pcVar13)(piVar11,0x7b,uVar8,0,0);\n      goto LAB_000c3544;\n    }" ({ "{") (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);" (assignment_expression "pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890)" (identifier "pcVar13") (= "=") (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" (( "(") (binary_expression "PTR_LAB_0015b710 + -0x3890" (identifier "PTR_LAB_0015b710") (+ "+") (number_literal "-0x3890")) () ")")))) (; ";")) (expression_statement "iVar9 = piVar11[0x1b];" (assignment_expression "iVar9 = piVar11[0x1b]" (identifier "iVar9") (= "=") (subscript_expression "piVar11[0x1b]" (identifier "piVar11") ([ "[") (number_literal "0x1b") (] "]"))) (; ";")) (labeled_statement "LAB_000c34ac:\n      local_3c = iVar15 + iVar16;" (statement_identifier "LAB_000c34ac") (: ":") (expression_statement "local_3c = iVar15 + iVar16;" (assignment_expression "local_3c = iVar15 + iVar16" (identifier "local_3c") (= "=") (binary_expression "iVar15 + iVar16" (identifier "iVar15") (+ "+") (identifier "iVar16"))) (; ";"))) (expression_statement "uVar8 = param_2[2];" (assignment_expression "uVar8 = param_2[2]" (identifier "uVar8") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "(*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);" (call_expression "(*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(piVar11,0x30,iVar12,iVar9 + 4,0)" (( "(") (identifier "piVar11") (, ",") (number_literal "0x30") (, ",") (identifier "iVar12") (, ",") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "(*pcVar13)(piVar11,0x20,uVar8,0,0);" (call_expression "(*pcVar13)(piVar11,0x20,uVar8,0,0)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(piVar11,0x20,uVar8,0,0)" (( "(") (identifier "piVar11") (, ",") (number_literal "0x20") (, ",") (identifier "uVar8") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);" (assignment_expression "iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c)" (identifier "iVar12") (= "=") (call_expression "(*pcVar13)(piVar11,0x25,uVar8,0,local_3c)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(piVar11,0x25,uVar8,0,local_3c)" (( "(") (identifier "piVar11") (, ",") (number_literal "0x25") (, ",") (identifier "uVar8") (, ",") (number_literal "0") (, ",") (identifier "local_3c") () ")")))) (; ";")) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }" (if "if") (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" (( "(") (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" (* "*") (cast_expression "(char *)(*piVar11 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar11 + 0x51)" (( "(") (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "0x51")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        iVar9 = piVar11[0x1a] + iVar12 * 0x14;\n        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;\n        *(undefined1 *)(iVar9 + 1) = 0xfd;\n      }" ({ "{") (expression_statement "iVar9 = piVar11[0x1a] + iVar12 * 0x14;" (assignment_expression "iVar9 = piVar11[0x1a] + iVar12 * 0x14" (identifier "iVar9") (= "=") (binary_expression "piVar11[0x1a] + iVar12 * 0x14" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (binary_expression "iVar12 * 0x14" (identifier "iVar12") (* "*") (number_literal "0x14")))) (; ";")) (expression_statement "*(int *)(iVar9 + 0x10) = iVar4 - iVar16;" (assignment_expression "*(int *)(iVar9 + 0x10) = iVar4 - iVar16" (pointer_expression "*(int *)(iVar9 + 0x10)" (* "*") (cast_expression "(int *)(iVar9 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x10)" (( "(") (binary_expression "iVar9 + 0x10" (identifier "iVar9") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (binary_expression "iVar4 - iVar16" (identifier "iVar4") (- "-") (identifier "iVar16"))) (; ";")) (expression_statement "*(undefined1 *)(iVar9 + 1) = 0xfd;" (assignment_expression "*(undefined1 *)(iVar9 + 1) = 0xfd" (pointer_expression "*(undefined1 *)(iVar9 + 1)" (* "*") (cast_expression "(undefined1 *)(iVar9 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 1)" (( "(") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0xfd")) (; ";")) (} "}"))) (expression_statement "(*pcVar13)(piVar11,0x7b,uVar8,0,0);" (call_expression "(*pcVar13)(piVar11,0x7b,uVar8,0,0)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(piVar11,0x7b,uVar8,0,0)" (( "(") (identifier "piVar11") (, ",") (number_literal "0x7b") (, ",") (identifier "uVar8") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (goto_statement "goto LAB_000c3544;" (goto "goto") (statement_identifier "LAB_000c3544") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }" (else "else") (compound_statement "{\n    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);\n    iVar5 = param_1[0xb] + 1;\n    param_1[0xb] = param_2[1] + param_1[0xb];\n    puVar3 = PTR_LAB_0015b710;\n    iVar9 = param_2[1];\n    if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }\n    pcVar13 = (code *)(puVar3 + -0x3890);\n    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);\n    puVar3 = PTR_memset_0015b9b4;\n    iVar2 = param_2[5];\n    if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }\n    iVar2 = *(int *)(puVar10 + 0x10);\n    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;\n    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));\n    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);\n    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);\n    *(undefined4 *)(puVar10 + 0x10) = uVar8;\n    local_34 = piVar11[0x1b];\n    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);\n    iVar9 = param_1[0xe];\n    param_1[0xe] = iVar9 + -1;\n    param_2[4] = iVar9 + -1;\n    iVar9 = param_1[0xb] + 1;\n    param_1[0xb] = iVar9;\n    param_2[3] = iVar9;\n    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);\n    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);\n    if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }\n    if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);\n    if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }\n    *(int *)(puVar3 + 8) = piVar11[0x1b];\n    if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }\nLAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;\n  }" ({ "{") (expression_statement "iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);" (assignment_expression "iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" (identifier "iVar6") (= "=") (call_expression "FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" (identifier "FUN_000c32a4") (argument_list "(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (, ",") (binary_expression "param_2 + 9" (identifier "param_2") (+ "+") (number_literal "9")) (, ",") (identifier "param_3") (, ",") (identifier "iVar15") (, ",") (identifier "iVar14") () ")")))) (; ";")) (expression_statement "iVar5 = param_1[0xb] + 1;" (assignment_expression "iVar5 = param_1[0xb] + 1" (identifier "iVar5") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[0xb] = param_2[1] + param_1[0xb];" (assignment_expression "param_1[0xb] = param_2[1] + param_1[0xb]" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "param_2[1] + param_1[0xb]" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (+ "+") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")))) (; ";")) (expression_statement "puVar3 = PTR_LAB_0015b710;" (assignment_expression "puVar3 = PTR_LAB_0015b710" (identifier "puVar3") (= "=") (identifier "PTR_LAB_0015b710")) (; ";")) (expression_statement "iVar9 = param_2[1];" (assignment_expression "iVar9 = param_2[1]" (identifier "iVar9") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((bVar1 & 1) == 0) {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }\n    else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }" (if "if") (parenthesized_expression "((bVar1 & 1) == 0)" (( "(") (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" (( "(") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);\n    }" ({ "{") (expression_statement "local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);" (assignment_expression "local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0)" (identifier "local_3c") (= "=") (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" (( "(") (binary_expression "PTR_LAB_0015b710 + -0x3890" (identifier "PTR_LAB_0015b710") (+ "+") (number_literal "-0x3890")) () ")")))) () ")")) (argument_list "(piVar11,0x14,iVar15 + iVar4,0,0)" (( "(") (identifier "piVar11") (, ",") (number_literal "0x14") (, ",") (binary_expression "iVar15 + iVar4" (identifier "iVar15") (+ "+") (identifier "iVar4")) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }" (else "else") (compound_statement "{\n      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);\n    }" ({ "{") (expression_statement "local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);" (assignment_expression "local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0)" (identifier "local_3c") (= "=") (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x3890))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x3890)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b710 + -0x3890)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b710 + -0x3890)" (( "(") (binary_expression "PTR_LAB_0015b710 + -0x3890" (identifier "PTR_LAB_0015b710") (+ "+") (number_literal "-0x3890")) () ")")))) () ")")) (argument_list "(piVar11,0x73,param_2[2],0,0)" (( "(") (identifier "piVar11") (, ",") (number_literal "0x73") (, ",") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")))) (expression_statement "pcVar13 = (code *)(puVar3 + -0x3890);" (assignment_expression "pcVar13 = (code *)(puVar3 + -0x3890)" (identifier "pcVar13") (= "=") (cast_expression "(code *)(puVar3 + -0x3890)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3890)" (( "(") (binary_expression "puVar3 + -0x3890" (identifier "puVar3") (+ "+") (number_literal "-0x3890")) () ")")))) (; ";")) (expression_statement "(*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);" (call_expression "(*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1])" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(piVar11,0x57,iVar5,iVar15,param_2[1])" (( "(") (identifier "piVar11") (, ",") (number_literal "0x57") (, ",") (identifier "iVar5") (, ",") (identifier "iVar15") (, ",") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (expression_statement "puVar3 = PTR_memset_0015b9b4;" (assignment_expression "puVar3 = PTR_memset_0015b9b4" (identifier "puVar3") (= "=") (identifier "PTR_memset_0015b9b4")) (; ";")) (expression_statement "iVar2 = param_2[5];" (assignment_expression "iVar2 = param_2[5]" (identifier "iVar2") (= "=") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if (iVar2 < 0) {\n      iVar2 = piVar11[0x1b] + -1;\n    }" (if "if") (parenthesized_expression "(iVar2 < 0)" (( "(") (binary_expression "iVar2 < 0" (identifier "iVar2") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      iVar2 = piVar11[0x1b] + -1;\n    }" ({ "{") (expression_statement "iVar2 = piVar11[0x1b] + -1;" (assignment_expression "iVar2 = piVar11[0x1b] + -1" (identifier "iVar2") (= "=") (binary_expression "piVar11[0x1b] + -1" (subscript_expression "piVar11[0x1b]" (identifier "piVar11") ([ "[") (number_literal "0x1b") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }\n    else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }" (if "if") (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" (( "(") (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" (* "*") (cast_expression "(char *)(*piVar11 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar11 + 0x51)" (( "(") (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "0x51")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);\n    }" ({ "{") (expression_statement "puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);" (assignment_expression "puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14)" (identifier "puVar10") (= "=") (cast_expression "(undefined *)(piVar11[0x1a] + iVar2 * 0x14)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11[0x1a] + iVar2 * 0x14)" (( "(") (binary_expression "piVar11[0x1a] + iVar2 * 0x14" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (binary_expression "iVar2 * 0x14" (identifier "iVar2") (* "*") (number_literal "0x14"))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }" (else "else") (compound_statement "{\n      puVar10 = PTR_DAT_0015b5d8 + -0x4514;\n    }" ({ "{") (expression_statement "puVar10 = PTR_DAT_0015b5d8 + -0x4514;" (assignment_expression "puVar10 = PTR_DAT_0015b5d8 + -0x4514" (identifier "puVar10") (= "=") (binary_expression "PTR_DAT_0015b5d8 + -0x4514" (identifier "PTR_DAT_0015b5d8") (+ "+") (number_literal "-0x4514"))) (; ";")) (} "}")))) (if_statement "if (*(char *)(*param_1 + 0x51) != '\0') {\n      return;\n    }" (if "if") (parenthesized_expression "(*(char *)(*param_1 + 0x51) != '\0')" (( "(") (binary_expression "*(char *)(*param_1 + 0x51) != '\0'" (pointer_expression "*(char *)(*param_1 + 0x51)" (* "*") (cast_expression "(char *)(*param_1 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x51)" (( "(") (binary_expression "*param_1 + 0x51" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x51")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar2 = *(int *)(puVar10 + 0x10);" (assignment_expression "iVar2 = *(int *)(puVar10 + 0x10)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar10 + 0x10)" (* "*") (cast_expression "(int *)(puVar10 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x10)" (( "(") (binary_expression "puVar10 + 0x10" (identifier "puVar10") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;" (assignment_expression "*(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6" (pointer_expression "*(uint *)(puVar10 + 8)" (* "*") (cast_expression "(uint *)(puVar10 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 8)" (( "(") (binary_expression "puVar10 + 8" (identifier "puVar10") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "(iVar4 - iVar9) + uVar7 + param_6" (binary_expression "(iVar4 - iVar9) + uVar7" (parenthesized_expression "(iVar4 - iVar9)" (( "(") (binary_expression "iVar4 - iVar9" (identifier "iVar4") (- "-") (identifier "iVar9")) () ")")) (+ "+") (identifier "uVar7")) (+ "+") (identifier "param_6"))) (; ";")) (expression_statement "(*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));" (call_expression "(*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6))" (parenthesized_expression "(*(code *)puVar3)" (( "(") (pointer_expression "*(code *)puVar3" (* "*") (cast_expression "(code *)puVar3" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) () ")")) (argument_list "(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6))" (( "(") (pointer_expression "*(undefined4 *)(iVar2 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (number_literal "0") (, ",") (pointer_expression "*(undefined2 *)(iVar2 + 6)" (* "*") (cast_expression "(undefined2 *)(iVar2 + 6)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 6)" (( "(") (binary_expression "iVar2 + 6" (identifier "iVar2") (+ "+") (number_literal "6")) () ")")))) () ")"))) (; ";")) (expression_statement "(*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);" (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x4110))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x4110)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x4110)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x4110)" (( "(") (binary_expression "PTR_LAB_0015b6c0 + 0x4110" (identifier "PTR_LAB_0015b6c0") (+ "+") (number_literal "0x4110")) () ")")))) () ")")) (argument_list "(piVar11,0xffffffff,iVar2,0xfffffff7)" (( "(") (identifier "piVar11") (, ",") (number_literal "0xffffffff") (, ",") (identifier "iVar2") (, ",") (number_literal "0xfffffff7") () ")"))) (; ";")) (expression_statement "uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);" (assignment_expression "uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1)" (identifier "uVar8") (= "=") (call_expression "(*(code *)(PTR_LAB_0015b714 + -0x7fc4))\n                      (param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b714 + -0x7fc4))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b714 + -0x7fc4)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b714 + -0x7fc4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b714 + -0x7fc4)" (( "(") (binary_expression "PTR_LAB_0015b714 + -0x7fc4" (identifier "PTR_LAB_0015b714") (+ "+") (number_literal "-0x7fc4")) () ")")))) () ")")) (argument_list "(param_1,*param_2,iVar16,\n                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "iVar16") (, ",") (binary_expression "((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1" (parenthesized_expression "((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6))" (( "(") (binary_expression "(uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)" (binary_expression "(uint)*(ushort *)(iVar2 + 8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar2 + 8)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")")))) (- "-") (binary_expression "(uint)*(ushort *)(iVar2 + 6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar2 + 6)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 6)" (( "(") (binary_expression "iVar2 + 6" (identifier "iVar2") (+ "+") (number_literal "6")) () ")"))))) () ")")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + 0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar10 + 0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar10 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar10 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x10)" (( "(") (binary_expression "puVar10 + 0x10" (identifier "puVar10") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "local_34 = piVar11[0x1b];" (assignment_expression "local_34 = piVar11[0x1b]" (identifier "local_34") (= "=") (subscript_expression "piVar11[0x1b]" (identifier "piVar11") ([ "[") (number_literal "0x1b") (] "]"))) (; ";")) (expression_statement "(*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);" (call_expression "(*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(piVar11,0x10,local_34 + 1,0,local_34 + 1)" (( "(") (identifier "piVar11") (, ",") (number_literal "0x10") (, ",") (binary_expression "local_34 + 1" (identifier "local_34") (+ "+") (number_literal "1")) (, ",") (number_literal "0") (, ",") (binary_expression "local_34 + 1" (identifier "local_34") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "iVar9 = param_1[0xe];" (assignment_expression "iVar9 = param_1[0xe]" (identifier "iVar9") (= "=") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "param_1[0xe] = iVar9 + -1;" (assignment_expression "param_1[0xe] = iVar9 + -1" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_2[4] = iVar9 + -1;" (assignment_expression "param_2[4] = iVar9 + -1" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar9 = param_1[0xb] + 1;" (assignment_expression "iVar9 = param_1[0xb] + 1" (identifier "iVar9") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[0xb] = iVar9;" (assignment_expression "param_1[0xb] = iVar9" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "param_2[3] = iVar9;" (assignment_expression "param_2[3] = iVar9" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "(*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);" (call_expression "(*pcVar13)(piVar11,0xc,iVar9,param_2[4],0)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(piVar11,0xc,iVar9,param_2[4],0)" (( "(") (identifier "piVar11") (, ",") (number_literal "0xc") (, ",") (identifier "iVar9") (, ",") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "(*pcVar13)(piVar11,0x8a,param_2[2],0,0);" (call_expression "(*pcVar13)(piVar11,0x8a,param_2[2],0,0)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(piVar11,0x8a,param_2[2],0,0)" (( "(") (identifier "piVar11") (, ",") (number_literal "0x8a") (, ",") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (iVar12 != 0) {\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);\n    }" ({ "{") (expression_statement "(*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);" (call_expression "(*pcVar13)(piVar11,0x14,iVar12,param_2[6],0)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(piVar11,0x14,iVar12,param_2[6],0)" (( "(") (identifier "piVar11") (, ",") (number_literal "0x14") (, ",") (identifier "iVar12") (, ",") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_3c < 0) {\n      local_3c = piVar11[0x1b] + -1;\n    }" (if "if") (parenthesized_expression "(local_3c < 0)" (( "(") (binary_expression "local_3c < 0" (identifier "local_3c") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      local_3c = piVar11[0x1b] + -1;\n    }" ({ "{") (expression_statement "local_3c = piVar11[0x1b] + -1;" (assignment_expression "local_3c = piVar11[0x1b] + -1" (identifier "local_3c") (= "=") (binary_expression "piVar11[0x1b] + -1" (subscript_expression "piVar11[0x1b]" (identifier "piVar11") ([ "[") (number_literal "0x1b") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" (if "if") (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" (( "(") (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" (* "*") (cast_expression "(char *)(*piVar11 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar11 + 0x51)" (( "(") (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "0x51")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);\n    }" ({ "{") (expression_statement "puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);" (assignment_expression "puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14)" (identifier "puVar3") (= "=") (cast_expression "(undefined *)(piVar11[0x1a] + local_3c * 0x14)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11[0x1a] + local_3c * 0x14)" (( "(") (binary_expression "piVar11[0x1a] + local_3c * 0x14" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (binary_expression "local_3c * 0x14" (identifier "local_3c") (* "*") (number_literal "0x14"))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" (else "else") (compound_statement "{\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" ({ "{") (expression_statement "puVar3 = PTR_DAT_0015b5d8 + -0x4514;" (assignment_expression "puVar3 = PTR_DAT_0015b5d8 + -0x4514" (identifier "puVar3") (= "=") (binary_expression "PTR_DAT_0015b5d8 + -0x4514" (identifier "PTR_DAT_0015b5d8") (+ "+") (number_literal "-0x4514"))) (; ";")) (} "}")))) (expression_statement "*(int *)(puVar3 + 8) = piVar11[0x1b];" (assignment_expression "*(int *)(puVar3 + 8) = piVar11[0x1b]" (pointer_expression "*(int *)(puVar3 + 8)" (* "*") (cast_expression "(int *)(puVar3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 8)" (( "(") (binary_expression "puVar3 + 8" (identifier "puVar3") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "piVar11[0x1b]" (identifier "piVar11") ([ "[") (number_literal "0x1b") (] "]"))) (; ";")) (expression_statement "(*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);" (call_expression "(*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1])" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_1[2],0x4d,iVar15,iVar5,param_2[1])" (( "(") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (, ",") (number_literal "0x4d") (, ",") (identifier "iVar15") (, ",") (identifier "iVar5") (, ",") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (if_statement "if (local_34 < 0) {\n      local_34 = piVar11[0x1b] + -1;\n    }" (if "if") (parenthesized_expression "(local_34 < 0)" (( "(") (binary_expression "local_34 < 0" (identifier "local_34") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      local_34 = piVar11[0x1b] + -1;\n    }" ({ "{") (expression_statement "local_34 = piVar11[0x1b] + -1;" (assignment_expression "local_34 = piVar11[0x1b] + -1" (identifier "local_34") (= "=") (binary_expression "piVar11[0x1b] + -1" (subscript_expression "piVar11[0x1b]" (identifier "piVar11") ([ "[") (number_literal "0x1b") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }\n    else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" (if "if") (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" (( "(") (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" (* "*") (cast_expression "(char *)(*piVar11 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar11 + 0x51)" (( "(") (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "0x51")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);\n    }" ({ "{") (expression_statement "puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);" (assignment_expression "puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14)" (identifier "puVar3") (= "=") (cast_expression "(undefined *)(piVar11[0x1a] + local_34 * 0x14)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11[0x1a] + local_34 * 0x14)" (( "(") (binary_expression "piVar11[0x1a] + local_34 * 0x14" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (binary_expression "local_34 * 0x14" (identifier "local_34") (* "*") (number_literal "0x14"))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" (else "else") (compound_statement "{\n      puVar3 = PTR_DAT_0015b5d8 + -0x4514;\n    }" ({ "{") (expression_statement "puVar3 = PTR_DAT_0015b5d8 + -0x4514;" (assignment_expression "puVar3 = PTR_DAT_0015b5d8 + -0x4514" (identifier "puVar3") (= "=") (binary_expression "PTR_DAT_0015b5d8 + -0x4514" (identifier "PTR_DAT_0015b5d8") (+ "+") (number_literal "-0x4514"))) (; ";")) (} "}")))) (expression_statement "*(int *)(puVar3 + 8) = piVar11[0x1b];" (assignment_expression "*(int *)(puVar3 + 8) = piVar11[0x1b]" (pointer_expression "*(int *)(puVar3 + 8)" (* "*") (cast_expression "(int *)(puVar3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 8)" (( "(") (binary_expression "puVar3 + 8" (identifier "puVar3") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "piVar11[0x1b]" (identifier "piVar11") ([ "[") (number_literal "0x1b") (] "]"))) (; ";")) (if_statement "if (iVar12 != 0) {\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar9 = piVar11[0x1b];\n      goto LAB_000c34ac;\n    }" ({ "{") (expression_statement "iVar9 = piVar11[0x1b];" (assignment_expression "iVar9 = piVar11[0x1b]" (identifier "iVar9") (= "=") (subscript_expression "piVar11[0x1b]" (identifier "piVar11") ([ "[") (number_literal "0x1b") (] "]"))) (; ";")) (goto_statement "goto LAB_000c34ac;" (goto "goto") (statement_identifier "LAB_000c34ac") (; ";")) (} "}"))) (labeled_statement "LAB_000c3544:\n    if (iVar6 != 0) goto LAB_000c3588;" (statement_identifier "LAB_000c3544") (: ":") (if_statement "if (iVar6 != 0) goto LAB_000c3588;" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000c3588;" (goto "goto") (statement_identifier "LAB_000c3588") (; ";")))) (} "}")))) (expression_statement "iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);" (assignment_expression "iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" (identifier "iVar6") (= "=") (call_expression "FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" (identifier "FUN_000c32a4") (argument_list "(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14)" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (, ",") (binary_expression "param_2 + 9" (identifier "param_2") (+ "+") (number_literal "9")) (, ",") (identifier "param_3") (, ",") (identifier "iVar15") (, ",") (identifier "iVar14") () ")")))) (; ";")) (labeled_statement "LAB_000c3588:\n  local_3c = iVar15 + iVar16;" (statement_identifier "LAB_000c3588") (: ":") (expression_statement "local_3c = iVar15 + iVar16;" (assignment_expression "local_3c = iVar15 + iVar16" (identifier "local_3c") (= "=") (binary_expression "iVar15 + iVar16" (identifier "iVar15") (+ "+") (identifier "iVar16"))) (; ";"))) (expression_statement "uVar8 = 0x83;" (assignment_expression "uVar8 = 0x83" (identifier "uVar8") (= "=") (number_literal "0x83")) (; ";")) (if_statement "if ((*(byte *)(param_2 + 8) & 1) == 0) {\n    uVar8 = 0x84;\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_2 + 8) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 8) & 1) == 0" (parenthesized_expression "(*(byte *)(param_2 + 8) & 1)" (( "(") (binary_expression "*(byte *)(param_2 + 8) & 1" (pointer_expression "*(byte *)(param_2 + 8)" (* "*") (cast_expression "(byte *)(param_2 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar8 = 0x84;\n  }" ({ "{") (expression_statement "uVar8 = 0x84;" (assignment_expression "uVar8 = 0x84" (identifier "uVar8") (= "=") (number_literal "0x84")) (; ";")) (} "}"))) (expression_statement "(*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16);" (call_expression "(*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + -0x35f0))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b710 + -0x35f0)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b710 + -0x35f0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b710 + -0x35f0)" (( "(") (binary_expression "PTR_LAB_0015b710 + -0x35f0" (identifier "PTR_LAB_0015b710") (+ "+") (number_literal "-0x35f0")) () ")")))) () ")")) (argument_list "(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16)" (( "(") (identifier "piVar11") (, ",") (identifier "uVar8") (, ",") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "iVar6") (, ",") (identifier "local_3c") (, ",") (binary_expression "iVar14 - iVar16" (identifier "iVar14") (- "-") (identifier "iVar16")) () ")"))) (; ";")) (if_statement "if (iVar12 != 0) {\n    iVar4 = param_2[7];\n    if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }\n    if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }\n  }" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar4 = param_2[7];\n    if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }\n    if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }\n    if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }\n  }" ({ "{") (expression_statement "iVar4 = param_2[7];" (assignment_expression "iVar4 = param_2[7]" (identifier "iVar4") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if (iVar4 == 0) {\n      iVar4 = piVar11[0x1b];\n    }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar4 = piVar11[0x1b];\n    }" ({ "{") (expression_statement "iVar4 = piVar11[0x1b];" (assignment_expression "iVar4 = piVar11[0x1b]" (identifier "iVar4") (= "=") (subscript_expression "piVar11[0x1b]" (identifier "piVar11") ([ "[") (number_literal "0x1b") (] "]"))) (; ";")) (} "}"))) (if_statement "if (iVar12 < 0) {\n      iVar12 = piVar11[0x1b] + -1;\n    }" (if "if") (parenthesized_expression "(iVar12 < 0)" (( "(") (binary_expression "iVar12 < 0" (identifier "iVar12") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      iVar12 = piVar11[0x1b] + -1;\n    }" ({ "{") (expression_statement "iVar12 = piVar11[0x1b] + -1;" (assignment_expression "iVar12 = piVar11[0x1b] + -1" (identifier "iVar12") (= "=") (binary_expression "piVar11[0x1b] + -1" (subscript_expression "piVar11[0x1b]" (identifier "piVar11") ([ "[") (number_literal "0x1b") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*piVar11 + 0x51) == '\0') {\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }\n    else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }" (if "if") (parenthesized_expression "(*(char *)(*piVar11 + 0x51) == '\0')" (( "(") (binary_expression "*(char *)(*piVar11 + 0x51) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x51)" (* "*") (cast_expression "(char *)(*piVar11 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar11 + 0x51)" (( "(") (binary_expression "*piVar11 + 0x51" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "0x51")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;\n    }" ({ "{") (expression_statement "*(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;" (assignment_expression "*(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4" (pointer_expression "*(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8)" (* "*") (cast_expression "(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11[0x1a] + iVar12 * 0x14 + 8)" (( "(") (binary_expression "piVar11[0x1a] + iVar12 * 0x14 + 8" (binary_expression "piVar11[0x1a] + iVar12 * 0x14" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (binary_expression "iVar12 * 0x14" (identifier "iVar12") (* "*") (number_literal "0x14"))) (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (} "}")) (else_clause "else {\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }" (else "else") (compound_statement "{\n      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;\n    }" ({ "{") (expression_statement "*(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;" (assignment_expression "*(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4" (pointer_expression "*(int *)(PTR_DAT_0015b5d8 + -0x450c)" (* "*") (cast_expression "(int *)(PTR_DAT_0015b5d8 + -0x450c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0015b5d8 + -0x450c)" (( "(") (binary_expression "PTR_DAT_0015b5d8 + -0x450c" (identifier "PTR_DAT_0015b5d8") (+ "+") (number_literal "-0x450c")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (} "}")))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *pParse,type_2 *pSort,type_3 *pSelect,int var_5,int var_6,
                   int var_3,int var_4)

{
  type_4 var_8;
  type_5 *var_15;
  int iVar3;
  int var_16;
  int var_2;
  int var_22;
  type_6 *pOVar7;
  type_7 var_1;
  type_8 flags;
  type_9 uVar9;
  int var_13;
  type_10 *pKVar11;
  type_11 *pVVar12;
  int var_12;
  type_12 *pcVar14;
  type_2 *pSort_1;
  int var_10;
  int var_11;
  int var_21;
  int var_20;
  
  var_8 = pSort->sortFlags;
  pVVar12 = pParse->pVdbe;
  var_2 = pSort->pOrderBy->nExpr;
  var_1 = ~(type_7)var_8 & 1;
  var_11 = pSort->nOBSat;
  pSort_1 = (type_2 *)(var_1 + var_2 + var_3);
  if (var_4 == 0) {
    var_10 = pParse->nMem + 1;
    pParse->nMem = (int)&pSort_1->pOrderBy + pParse->nMem;
  }
  else {
    var_10 = var_5 - var_4;
  }
  if (pSelect->iOffset == 0) {
    var_12 = pSelect->iLimit;
  }
  else {
    var_12 = pSelect->iOffset + 1;
  }
  flags = '\x01';
  if (var_6 != 0) {
    flags = '\x05';
  }
  var_22 = pParse->nLabel + -1;
  pParse->nLabel = var_22;
  pSort->labelDone = var_22;
  var_7(pParse,pSort->pOrderBy,var_10,var_6,flags);
  if ((var_8 & 1) == 0) {
    (*(type_12 *)(var_9 + -0x3890))(pVVar12,0x78,pSort->iECursor,var_10 + var_2,0);
  }
  if ((var_4 == 0) && (0 < var_3)) {
    (*(type_12 *)(var_9 + -0x3890))(pParse->pVdbe,0x4d,var_5,var_10 + var_2 + var_1,var_3)
    ;
  }
  if (var_11 < 1) {
    if (var_12 != 0) {
      var_22 = 0;
      pcVar14 = (type_12 *)(var_9 + -0x3890);
      var_13 = pVVar12->nOp;
LAB_000c34ac:
      var_21 = var_10 + var_11;
      iVar3 = pSort->iECursor;
      (*pcVar14)(pVVar12,0x30,var_12,var_13 + 4,0);
      (*pcVar14)(pVVar12,0x20,iVar3,0,0);
      var_12 = (*pcVar14)(pVVar12,0x25,iVar3,0,var_21);
      if (pVVar12->db->mallocFailed == '\0') {
        pOVar7 = pVVar12->aOp;
        pOVar7[var_12].p4.p = (void *)(var_2 - var_11);
        pOVar7[var_12].p4type = -3;
      }
      (*pcVar14)(pVVar12,0x7b,iVar3,0,0);
      goto LAB_000c3544;
    }
  }
  else {
    var_22 = var_14(pParse,(type_2 *)pSort->nOBSat,(type_3 *)&pSort->pDeferredRowLoad,
                             (int)pSelect,var_10,pSort_1);
    iVar3 = pParse->nMem + 1;
    pParse->nMem = pSort->nOBSat + pParse->nMem;
    var_15 = var_9;
    var_13 = pSort->nOBSat;
    if ((var_8 & 1) == 0) {
      var_21 = (*(type_12 *)(var_9 + -0x3890))(pVVar12,0x14,var_10 + var_2,0,0);
    }
    else {
      var_21 = (*(type_12 *)(var_9 + -0x3890))(pVVar12,0x73,pSort->iECursor,0,0);
    }
    pcVar14 = (type_12 *)(var_15 + -0x3890);
    (*pcVar14)(pVVar12,0x57,iVar3,var_10,pSort->nOBSat);
    var_15 = PTR_memset_0015b9b4;
    var_16 = pSort->addrSortIndex;
    if (var_16 < 0) {
      var_16 = pVVar12->nOp + -1;
    }
    if (pVVar12->db->mallocFailed == '\0') {
      pOVar7 = pVVar12->aOp + var_16;
    }
    else {
      pOVar7 = (type_6 *)(var_17 + -0x4514);
    }
    if (pParse->db->mallocFailed != '\0') {
      return;
    }
    pKVar11 = (pOVar7->p4).pKeyInfo;
    pOVar7->p2 = (var_2 - var_13) + var_1 + var_3;
    (*(type_12 *)var_15)(pKVar11->aSortOrder,0,pKVar11->nKeyField);
    (*(type_12 *)(var_18 + 0x4110))(pVVar12,0xffffffff,pKVar11,0xfffffff7);
    var_13 = (*(type_12 *)(var_19 + -0x7fc4))
                       (pParse,pSort->pOrderBy,var_11,
                        ((type_7)pKVar11->nAllField - (type_7)pKVar11->nKeyField) + -1);
    (pOVar7->p4).i = var_13;
    var_20 = pVVar12->nOp;
    (*pcVar14)(pVVar12,0x10,var_20 + 1,0,var_20 + 1);
    var_13 = pParse->nLabel + -1;
    pParse->nLabel = var_13;
    pSort->labelBkOut = var_13;
    var_13 = pParse->nMem + 1;
    pParse->nMem = var_13;
    pSort->regReturn = var_13;
    (*pcVar14)(pVVar12,0xc,var_13,pSort->labelBkOut,0);
    (*pcVar14)(pVVar12,0x8a,pSort->iECursor,0,0);
    if (var_12 != 0) {
      (*pcVar14)(pVVar12,0x14,var_12,pSort->labelDone,0);
    }
    if (var_21 < 0) {
      var_21 = pVVar12->nOp + -1;
    }
    if (pVVar12->db->mallocFailed == '\0') {
      pOVar7 = pVVar12->aOp + var_21;
    }
    else {
      pOVar7 = (type_6 *)(var_17 + -0x4514);
    }
    pOVar7->p2 = pVVar12->nOp;
    (*pcVar14)(pParse->pVdbe,0x4d,var_10,iVar3,pSort->nOBSat);
    if (var_20 < 0) {
      var_20 = pVVar12->nOp + -1;
    }
    if (pVVar12->db->mallocFailed == '\0') {
      pOVar7 = pVVar12->aOp + var_20;
    }
    else {
      pOVar7 = (type_6 *)(var_17 + -0x4514);
    }
    pOVar7->p2 = pVVar12->nOp;
    if (var_12 != 0) {
      var_13 = pVVar12->nOp;
      goto LAB_000c34ac;
    }
LAB_000c3544:
    if (var_22 != 0) goto LAB_000c3588;
  }
  var_22 = var_14(pParse,(type_2 *)pSort->nOBSat,(type_3 *)&pSort->pDeferredRowLoad,
                           (int)pSelect,var_10,pSort_1);
LAB_000c3588:
  var_21 = var_10 + var_11;
  uVar9 = 0x83;
  if ((pSort->sortFlags & 1) == 0) {
    uVar9 = 0x84;
  }
  (*(type_12 *)(var_9 + -0x35f0))
            (pVVar12,uVar9,pSort->iECursor,var_22,var_21,(int)pSort_1 - var_11);
  if (var_12 != 0) {
    var_2 = pSort->labelOBLopt;
    if (var_2 == 0) {
      var_2 = pVVar12->nOp;
    }
    if (var_12 < 0) {
      var_12 = pVVar12->nOp + -1;
    }
    if (pVVar12->db->mallocFailed == '\0') {
      pVVar12->aOp[var_12].p2 = var_2;
    }
    else {
      *(int *)(var_17 + -0x450c) = var_2;
    }
  }
  return;
}


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

void MASKED(int *param_1,undefined4 *param_2,int param_3,int param_4,int param_5,int param_6,
                 int param_7)

{
  byte bVar1;
  int iVar2;
  undefined *puVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  undefined4 uVar8;
  int iVar9;
  undefined *puVar10;
  int *piVar11;
  int iVar12;
  code *pcVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  int local_3c;
  int local_34;
  
  bVar1 = *(byte *)(param_2 + 8);
  piVar11 = (int *)param_1[2];
  iVar4 = *(int *)*param_2;
  uVar7 = ~(uint)bVar1 & 1;
  iVar16 = param_2[1];
  iVar14 = uVar7 + iVar4 + param_6;
  if (param_7 == 0) {
    iVar15 = param_1[0xb] + 1;
    param_1[0xb] = param_1[0xb] + iVar14;
  }
  else {
    iVar15 = param_4 - param_7;
  }
  if (*(int *)(param_3 + 0x10) == 0) {
    iVar12 = *(int *)(param_3 + 0xc);
  }
  else {
    iVar12 = *(int *)(param_3 + 0x10) + 1;
  }
  iVar6 = param_1[0xe];
  uVar8 = 1;
  if (param_5 != 0) {
    uVar8 = 5;
  }
  param_1[0xe] = iVar6 + -1;
  param_2[6] = iVar6 + -1;
  FUN_000c2b34(param_1,*param_2,iVar15,param_5,uVar8);
  if ((bVar1 & 1) == 0) {
    (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x78,param_2[2],iVar15 + iVar4,0);
  }
  if ((param_7 == 0) && (0 < param_6)) {
    (*(code *)(PTR_LAB_0015b710 + -0x3890))(param_1[2],0x4d,param_4,iVar15 + iVar4 + uVar7,param_6);
  }
  if (iVar16 < 1) {
    if (iVar12 != 0) {
      iVar6 = 0;
      pcVar13 = (code *)(PTR_LAB_0015b710 + -0x3890);
      iVar9 = piVar11[0x1b];
LAB_000c34ac:
      local_3c = iVar15 + iVar16;
      uVar8 = param_2[2];
      (*pcVar13)(piVar11,0x30,iVar12,iVar9 + 4,0);
      (*pcVar13)(piVar11,0x20,uVar8,0,0);
      iVar12 = (*pcVar13)(piVar11,0x25,uVar8,0,local_3c);
      if (*(char *)(*piVar11 + 0x51) == '\0') {
        iVar9 = piVar11[0x1a] + iVar12 * 0x14;
        *(int *)(iVar9 + 0x10) = iVar4 - iVar16;
        *(undefined1 *)(iVar9 + 1) = 0xfd;
      }
      (*pcVar13)(piVar11,0x7b,uVar8,0,0);
      goto LAB_000c3544;
    }
  }
  else {
    iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);
    iVar5 = param_1[0xb] + 1;
    param_1[0xb] = param_2[1] + param_1[0xb];
    puVar3 = PTR_LAB_0015b710;
    iVar9 = param_2[1];
    if ((bVar1 & 1) == 0) {
      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x14,iVar15 + iVar4,0,0);
    }
    else {
      local_3c = (*(code *)(PTR_LAB_0015b710 + -0x3890))(piVar11,0x73,param_2[2],0,0);
    }
    pcVar13 = (code *)(puVar3 + -0x3890);
    (*pcVar13)(piVar11,0x57,iVar5,iVar15,param_2[1]);
    puVar3 = PTR_memset_0015b9b4;
    iVar2 = param_2[5];
    if (iVar2 < 0) {
      iVar2 = piVar11[0x1b] + -1;
    }
    if (*(char *)(*piVar11 + 0x51) == '\0') {
      puVar10 = (undefined *)(piVar11[0x1a] + iVar2 * 0x14);
    }
    else {
      puVar10 = PTR_DAT_0015b5d8 + -0x4514;
    }
    if (*(char *)(*param_1 + 0x51) != '\0') {
      return;
    }
    iVar2 = *(int *)(puVar10 + 0x10);
    *(uint *)(puVar10 + 8) = (iVar4 - iVar9) + uVar7 + param_6;
    (*(code *)puVar3)(*(undefined4 *)(iVar2 + 0x10),0,*(undefined2 *)(iVar2 + 6));
    (*(code *)(PTR_LAB_0015b6c0 + 0x4110))(piVar11,0xffffffff,iVar2,0xfffffff7);
    uVar8 = (*(code *)(PTR_LAB_0015b714 + -0x7fc4))
                      (param_1,*param_2,iVar16,
                       ((uint)*(ushort *)(iVar2 + 8) - (uint)*(ushort *)(iVar2 + 6)) + -1);
    *(undefined4 *)(puVar10 + 0x10) = uVar8;
    local_34 = piVar11[0x1b];
    (*pcVar13)(piVar11,0x10,local_34 + 1,0,local_34 + 1);
    iVar9 = param_1[0xe];
    param_1[0xe] = iVar9 + -1;
    param_2[4] = iVar9 + -1;
    iVar9 = param_1[0xb] + 1;
    param_1[0xb] = iVar9;
    param_2[3] = iVar9;
    (*pcVar13)(piVar11,0xc,iVar9,param_2[4],0);
    (*pcVar13)(piVar11,0x8a,param_2[2],0,0);
    if (iVar12 != 0) {
      (*pcVar13)(piVar11,0x14,iVar12,param_2[6],0);
    }
    if (local_3c < 0) {
      local_3c = piVar11[0x1b] + -1;
    }
    if (*(char *)(*piVar11 + 0x51) == '\0') {
      puVar3 = (undefined *)(piVar11[0x1a] + local_3c * 0x14);
    }
    else {
      puVar3 = PTR_DAT_0015b5d8 + -0x4514;
    }
    *(int *)(puVar3 + 8) = piVar11[0x1b];
    (*pcVar13)(param_1[2],0x4d,iVar15,iVar5,param_2[1]);
    if (local_34 < 0) {
      local_34 = piVar11[0x1b] + -1;
    }
    if (*(char *)(*piVar11 + 0x51) == '\0') {
      puVar3 = (undefined *)(piVar11[0x1a] + local_34 * 0x14);
    }
    else {
      puVar3 = PTR_DAT_0015b5d8 + -0x4514;
    }
    *(int *)(puVar3 + 8) = piVar11[0x1b];
    if (iVar12 != 0) {
      iVar9 = piVar11[0x1b];
      goto LAB_000c34ac;
    }
LAB_000c3544:
    if (iVar6 != 0) goto LAB_000c3588;
  }
  iVar6 = FUN_000c32a4(param_1,param_2[1],param_2 + 9,param_3,iVar15,iVar14);
LAB_000c3588:
  local_3c = iVar15 + iVar16;
  uVar8 = 0x83;
  if ((*(byte *)(param_2 + 8) & 1) == 0) {
    uVar8 = 0x84;
  }
  (*(code *)(PTR_LAB_0015b710 + -0x35f0))(piVar11,uVar8,param_2[2],iVar6,local_3c,iVar14 - iVar16);
  if (iVar12 != 0) {
    iVar4 = param_2[7];
    if (iVar4 == 0) {
      iVar4 = piVar11[0x1b];
    }
    if (iVar12 < 0) {
      iVar12 = piVar11[0x1b] + -1;
    }
    if (*(char *)(*piVar11 + 0x51) == '\0') {
      *(int *)(piVar11[0x1a] + iVar12 * 0x14 + 8) = iVar4;
    }
    else {
      *(int *)(PTR_DAT_0015b5d8 + -0x450c) = iVar4;
    }
  }
  return;
}

