
int freeSpace(MemPage *pPage,u16 iStart,u16 iSize)

{
  byte bVar1;
  bool bVar2;
  uint uVar3;
  int iVar4;
  u8 *puVar5;
  uint uVar6;
  ushort uVar8;
  u8 *puVar7;
  undefined *lineno;
  undefined2 in_register_00000014;
  uint uVar9;
  undefined2 in_register_00000018;
  uint uVar10;
  uint uVar11;
  u8 *puVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  
  uVar10 = CONCAT22(in_register_00000018,iSize);
  uVar9 = CONCAT22(in_register_00000014,iStart);
  puVar12 = pPage->aData;
  uVar14 = uVar9 + uVar10;
  uVar13 = (uint)pPage->hdrOffset;
  uVar16 = uVar13 + 1;
  uVar8 = (ushort)(puVar12 + uVar16)[1];
  uVar3 = (uint)puVar12[uVar16];
  uVar11 = uVar16;
  uVar15 = uVar10;
  if ((uVar8 == 0) && (uVar3 == 0)) {
    puVar7 = puVar12 + uVar13 + 5;
    puVar5 = puVar12 + uVar13 + 6;
    uVar8 = 0;
    if (CONCAT11(*puVar7,*puVar5) < uVar9) {
LAB_0004602c:
      puVar12[uVar11] = (u8)(uVar9 >> 8);
      (puVar12 + uVar11)[1] = (u8)uVar9;
      goto LAB_00046044;
    }
    bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);
  }
  else {
    while( true ) {
      uVar8 = (ushort)(uVar3 << 8) | uVar8;
      iVar4 = (int)(short)uVar8;
      uVar17 = (uint)uVar8;
      if (uVar9 <= uVar17) break;
      if (uVar17 <= uVar11 + 3) {
        if (uVar17 != 0) {
          iVar4 = sqlite3CorruptError(0x102ac);
          return iVar4;
        }
        goto LAB_00045f90;
      }
      uVar3 = (uint)puVar12[uVar17];
      uVar8 = (ushort)(puVar12 + uVar17)[1];
      uVar11 = uVar17;
    }
    uVar3 = pPage->pBt->usableSize;
    if (uVar3 - 4 < uVar17) {
      lineno = &DAT_000102b1;
      goto LAB_000460a4;
    }
    if (uVar17 == 0) {
LAB_00045f90:
      uVar6 = 0;
    }
    else {
      uVar6 = 0;
      if (uVar17 <= uVar14 + 3) {
        if (uVar17 < uVar14) {
          lineno = (undefined *)0x102bd;
          goto LAB_000460a4;
        }
        uVar15 = *(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17;
        if (uVar3 < uVar15) {
          lineno = (undefined *)0x102c0;
          goto LAB_000460a4;
        }
        uVar8 = *(ushort *)(puVar12 + uVar17);
        uVar6 = iVar4 - uVar14 & 0xff;
        uVar14 = uVar15;
        uVar15 = uVar15 - uVar9 & 0xffff;
      }
    }
    if (uVar16 < uVar11) {
      iVar4 = *(ushort *)(puVar12 + uVar11 + 2) + uVar11;
      if ((int)uVar9 <= iVar4 + 3) {
        if ((int)uVar9 < iVar4) {
          lineno = (undefined *)0x102cd;
          goto LAB_000460a4;
        }
        uVar15 = uVar14 - uVar11 & 0xffff;
        uVar6 = (uVar6 + uVar9) - iVar4 & 0xff;
        uVar9 = uVar11;
      }
    }
    bVar1 = puVar12[uVar13 + 7];
    if (bVar1 < uVar6) {
      iVar4 = sqlite3CorruptError(0x102d3);
      return iVar4;
    }
    puVar12[uVar13 + 7] = bVar1 - (char)uVar6;
    puVar7 = puVar12 + uVar13 + 5;
    puVar5 = puVar12 + uVar13 + 6;
    bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);
    if (CONCAT11(*puVar7,*puVar5) < uVar9) goto LAB_0004602c;
  }
  if (bVar2) {
    lineno = (undefined *)0x102db;
  }
  else {
    if (uVar11 == uVar16) {
      puVar12[uVar13 + 1] = (u8)(uVar8 >> 8);
      puVar12[uVar13 + 2] = (u8)uVar8;
      *puVar7 = (u8)(uVar14 >> 8);
      *puVar5 = (u8)uVar14;
LAB_00046044:
      puVar12 = puVar12 + uVar9;
      if ((pPage->pBt->btsFlags & 0xc) != 0) {
        puVar12 = (u8 *)(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15);
      }
      *puVar12 = (u8)(uVar8 >> 8);
      puVar12[1] = (u8)uVar8;
      puVar12[2] = (u8)(uVar15 >> 8);
      puVar12[3] = (u8)uVar15;
      pPage->nFree = pPage->nFree + uVar10;
      return 0;
    }
    lineno = (undefined *)0x102dc;
  }
LAB_000460a4:
  iVar4 = sqlite3CorruptError((int)lineno);
  return iVar4;
}



undefined4 FUN_00045e10(int param_1,uint param_2,uint param_3)

{
  byte bVar1;
  bool bVar2;
  uint uVar3;
  int iVar4;
  byte *pbVar5;
  undefined4 uVar6;
  undefined1 *puVar7;
  uint uVar8;
  ushort uVar11;
  undefined1 *puVar9;
  undefined *puVar10;
  uint uVar12;
  int iVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  
  iVar13 = *(int *)(param_1 + 0x38);
  uVar15 = param_2 + param_3;
  uVar14 = (uint)*(byte *)(param_1 + 9);
  uVar17 = uVar14 + 1;
  uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1];
  uVar3 = (uint)*(byte *)(iVar13 + uVar17);
  uVar12 = uVar17;
  uVar16 = param_3;
  if ((uVar11 == 0) && (uVar3 == 0)) {
    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);
    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);
    uVar11 = 0;
    if (CONCAT11(*puVar9,*puVar7) < param_2) {
LAB_0004602c:
      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);
      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;
      goto LAB_00046044;
    }
    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);
  }
  else {
    while( true ) {
      uVar11 = (ushort)(uVar3 << 8) | uVar11;
      iVar4 = (int)(short)uVar11;
      uVar18 = (uint)uVar11;
      if (param_2 <= uVar18) break;
      if (uVar18 <= uVar12 + 3) {
        if (uVar18 != 0) {
          uVar6 = FUN_00044904(&DAT_000102ac);
          return uVar6;
        }
        goto LAB_00045f90;
      }
      uVar3 = (uint)*(byte *)(iVar13 + uVar18);
      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];
      uVar12 = uVar18;
    }
    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);
    if (uVar3 - 4 < uVar18) {
      puVar10 = &DAT_000102b1;
      goto LAB_000460a4;
    }
    if (uVar18 == 0) {
LAB_00045f90:
      uVar8 = 0;
    }
    else {
      uVar8 = 0;
      if (uVar18 <= uVar15 + 3) {
        if (uVar18 < uVar15) {
          puVar10 = (undefined *)0x102bd;
          goto LAB_000460a4;
        }
        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;
        if (uVar3 < uVar16) {
          puVar10 = (undefined *)0x102c0;
          goto LAB_000460a4;
        }
        uVar11 = *(ushort *)(iVar13 + uVar18);
        uVar8 = iVar4 - uVar15 & 0xff;
        uVar15 = uVar16;
        uVar16 = uVar16 - param_2 & 0xffff;
      }
    }
    if (uVar17 < uVar12) {
      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;
      if ((int)param_2 <= iVar4 + 3) {
        if ((int)param_2 < iVar4) {
          puVar10 = (undefined *)0x102cd;
          goto LAB_000460a4;
        }
        uVar16 = uVar15 - uVar12 & 0xffff;
        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;
        param_2 = uVar12;
      }
    }
    pbVar5 = (byte *)(iVar13 + uVar14 + 7);
    bVar1 = *pbVar5;
    if (bVar1 < uVar8) {
      uVar6 = FUN_00044904(0x102d3);
      return uVar6;
    }
    *pbVar5 = bVar1 - (char)uVar8;
    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);
    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);
    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);
    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;
  }
  if (bVar2) {
    puVar10 = (undefined *)0x102db;
  }
  else {
    if (uVar12 == uVar17) {
      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);
      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;
      *puVar9 = (char)(uVar15 >> 8);
      *puVar7 = (char)uVar15;
LAB_00046044:
      puVar7 = (undefined1 *)(iVar13 + param_2);
      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {
        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);
      }
      *puVar7 = (char)(uVar11 >> 8);
      puVar7[1] = (char)uVar11;
      puVar7[2] = (char)(uVar16 >> 8);
      puVar7[3] = (char)uVar16;
      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;
      return 0;
    }
    puVar10 = (undefined *)0x102dc;
  }
LAB_000460a4:
  uVar6 = FUN_00044904(puVar10);
  return uVar6;
}


lui gp,0xb
addiu gp,gp,0x7490
addu gp,gp,t9
addiu sp,sp,-0x30
lw a3,0x38(a0)
addu t2,a1,a2
sw s3,0x24(sp)
or s3,a2,zero
sw s2,0x20(sp)
or s2,a2,zero
sw s1,0x1c(sp)
or s1,a0,zero
sw gp,0x10(sp)
or t4,t2,zero
sw ra,0x2c(sp)
sw s4,0x28(sp)
sw s0,0x18(sp)
lbu t1,0x9(a0)
addiu t3,t1,0x1
andi a2,t3,0xffff
addu v0,a3,a2
lbu a0,0x1(v0)
bne a0,zero,0x00045eec
_lbu v0,0x0(v0)
bne v0,zero,0x00045ef0
_sll v0,v0,0x8
addiu a0,t1,0x5
addiu v1,t1,0x6
addu a0,a3,a0
addu v1,a3,v1
lbu v0,0x0(a0)
lbu t0,0x0(v1)
sll v0,v0,0x8
or v0,v0,t0
sltu t0,v0,a1
bne t0,zero,0x0004602c
_or s0,zero,zero
sltu v0,a1,v0
bne v0,zero,0x000460f8
_nop
bne a2,t3,0x00046150
_addu t1,a3,t1
srl s4,s0,0x8
srl v0,t2,0x8
andi s0,s0,0xff
sb s4,0x1(t1)
sb s0,0x2(t1)
sb v0,0x0(a0)
b 0x00046044
_sb t2,0x0(v1)
beq v1,zero,0x00045f88
_nop
lbu v0,0x0(a0)
or a2,s0,zero
lbu a0,0x1(a0)
sll v0,v0,0x8
addiu v1,a2,0x3
or v0,v0,a0
seh v0,v0
andi s0,v0,0xffff
sltu t0,s0,a1
addu a0,a3,s0
bne t0,zero,0x00045ed8
_slt v1,v1,s0
lw v1,0x34(s1)
lw a0,0x28(v1)
addiu v1,a0,-0x4
sltu v1,v1,s0
bne v1,zero,0x0004609c
_nop
beq s0,zero,0x00045f90
_addiu v1,t2,0x3
sltu v1,v1,s0
bne v1,zero,0x00045f94
_or v1,zero,zero
sltu t2,s0,t2
bne t2,zero,0x0004615c
_addu v1,a3,s0
lbu t2,0x2(v1)
lbu t0,0x3(v1)
sll t2,t2,0x8
or t2,t2,t0
addu t2,t2,s0
sltu a0,a0,t2
bne a0,zero,0x00046174
_subu s3,t2,a1
lbu s0,0x0(v1)
subu a0,v0,t4
lbu v0,0x1(v1)
andi v1,a0,0xff
sll s0,s0,0x8
andi s3,s3,0xffff
b 0x00045f94
_or s0,s0,v0
bne s0,zero,0x000460cc
_lw t9,-0x7fb8(gp)
or v1,zero,zero
slt v0,t3,a2
beq v0,zero,0x00045fe8
_addiu v0,t1,0x7
addu a0,a3,a2
lbu v0,0x2(a0)
lbu a0,0x3(a0)
sll v0,v0,0x8
or v0,v0,a0
addu v0,v0,a2
addiu a0,v0,0x3
slt a0,a0,a1
bne a0,zero,0x00045fe4
_slt a0,a1,v0
bne a0,zero,0x00046168
_addu v1,v1,a1
subu s3,t2,a2
subu v0,v1,v0
andi s3,s3,0xffff
andi v1,v0,0xff
or a1,a2,zero
addiu v0,t1,0x7
addu v0,a3,v0
lbu a0,0x0(v0)
sltu t0,a0,v1
bne t0,zero,0x00046120
_subu v1,a0,v1
addiu a0,t1,0x5
sb v1,0x0(v0)
addiu v1,t1,0x6
addu a0,a3,a0
addu v1,a3,v1
lbu v0,0x0(a0)
lbu t0,0x0(v1)
sll v0,v0,0x8
or v0,v0,t0
sltu t0,v0,a1
beq t0,zero,0x00045ea8
_sltu v0,a1,v0
addu v0,a3,a2
srl v1,a1,0x8
srl s4,s0,0x8
sb v1,0x0(v0)
andi s0,s0,0xff
sb a1,0x1(v0)
lw v0,0x34(s1)
lhu v0,0x18(v0)
andi v0,v0,0xc
bne v0,zero,0x00046104
_addu a3,a3,a1
srl a0,s3,0x8
sb s4,0x0(a3)
sb s0,0x1(a3)
or v0,zero,zero
sb a0,0x2(a3)
sb s3,0x3(a3)
lw v1,0x14(s1)
lw ra,0x2c(sp)
lw s4,0x28(sp)
addu s2,v1,s2
lw s3,0x24(sp)
lw s0,0x18(sp)
sw s2,0x14(s1)
lw s2,0x20(sp)
lw s1,0x1c(sp)
jr ra
_addiu sp,sp,0x30
lui a0,0x1
addiu a0,a0,0x2b1
lw t9,-0x7fb8(gp)
lw ra,0x2c(sp)
lw s4,0x28(sp)
lw s3,0x24(sp)
addiu t9,t9,0x4904
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
b 0x00044904
_addiu sp,sp,0x30
lui a0,0x1
lw ra,0x2c(sp)
lw s4,0x28(sp)
addiu a0,a0,0x2ac
lw s3,0x24(sp)
addiu t9,t9,0x4904
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
b 0x00044904
_addiu sp,sp,0x30
lui a0,0x1
b 0x000460a4
_addiu a0,a0,0x2db
lw t9,-0x7e50(gp)
or a1,zero,zero
or a0,a3,zero
jalr t9
_or a2,s3,zero
b 0x00046058
_or a3,v0,zero
lw t9,-0x7fb8(gp)
lui a0,0x1
lw ra,0x2c(sp)
lw s4,0x28(sp)
addiu a0,a0,0x2d3
lw s3,0x24(sp)
addiu t9,t9,0x4904
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
b 0x00044904
_addiu sp,sp,0x30
lui a0,0x1
b 0x000460a4
_addiu a0,a0,0x2dc
lui a0,0x1
b 0x000460a4
_addiu a0,a0,0x2bd
lui a0,0x1
b 0x000460a4
_addiu a0,a0,0x2cd
lui a0,0x1
b 0x000460a4
_addiu a0,a0,0x2c0
(translation_unit "undefined4 FUN_00045e10(int param_1,uint param_2,uint param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  ushort uVar11;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  iVar13 = *(int *)(param_1 + 0x38);\n  uVar15 = param_2 + param_3;\n  uVar14 = (uint)*(byte *)(param_1 + 9);\n  uVar17 = uVar14 + 1;\n  uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1];\n  uVar3 = (uint)*(byte *)(iVar13 + uVar17);\n  uVar12 = uVar17;\n  uVar16 = param_3;\n  if ((uVar11 == 0) && (uVar3 == 0)) {\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    uVar11 = 0;\n    if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n  }\n  else {\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }\n  if (bVar2) {\n    puVar10 = (undefined *)0x102db;\n  }\n  else {\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }\nLAB_000460a4:\n  uVar6 = FUN_00044904(puVar10);\n  return uVar6;\n}\n\n" (function_definition "undefined4 FUN_00045e10(int param_1,uint param_2,uint param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  ushort uVar11;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  iVar13 = *(int *)(param_1 + 0x38);\n  uVar15 = param_2 + param_3;\n  uVar14 = (uint)*(byte *)(param_1 + 9);\n  uVar17 = uVar14 + 1;\n  uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1];\n  uVar3 = (uint)*(byte *)(iVar13 + uVar17);\n  uVar12 = uVar17;\n  uVar16 = param_3;\n  if ((uVar11 == 0) && (uVar3 == 0)) {\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    uVar11 = 0;\n    if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n  }\n  else {\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }\n  if (bVar2) {\n    puVar10 = (undefined *)0x102db;\n  }\n  else {\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }\nLAB_000460a4:\n  uVar6 = FUN_00044904(puVar10);\n  return uVar6;\n}" type_identifier (function_declarator "FUN_00045e10(int param_1,uint param_2,uint param_3)" identifier (parameter_list "(int param_1,uint param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  ushort uVar11;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  iVar13 = *(int *)(param_1 + 0x38);\n  uVar15 = param_2 + param_3;\n  uVar14 = (uint)*(byte *)(param_1 + 9);\n  uVar17 = uVar14 + 1;\n  uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1];\n  uVar3 = (uint)*(byte *)(iVar13 + uVar17);\n  uVar12 = uVar17;\n  uVar16 = param_3;\n  if ((uVar11 == 0) && (uVar3 == 0)) {\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    uVar11 = 0;\n    if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n  }\n  else {\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }\n  if (bVar2) {\n    puVar10 = (undefined *)0x102db;\n  }\n  else {\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }\nLAB_000460a4:\n  uVar6 = FUN_00044904(puVar10);\n  return uVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "ushort uVar11;" type_identifier identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (expression_statement "iVar13 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x38)" identifier = (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = param_2 + param_3;" (assignment_expression "uVar15 = param_2 + param_3" identifier = (binary_expression "param_2 + param_3" identifier + identifier)) ;) (expression_statement "uVar14 = (uint)*(byte *)(param_1 + 9);" (assignment_expression "uVar14 = (uint)*(byte *)(param_1 + 9)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = uVar14 + 1;" (assignment_expression "uVar17 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1];" (assignment_expression "uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1]" identifier = (subscript_expression "(ushort)((byte *)(iVar13 + uVar17))[1]" (call_expression "(ushort)((byte *)(iVar13 + uVar17))" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((byte *)(iVar13 + uVar17))" ( (cast_expression "(byte *)(iVar13 + uVar17)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar17)" ( (binary_expression "iVar13 + uVar17" identifier + identifier) ))) ))) [ number_literal ])) ;) (expression_statement "uVar3 = (uint)*(byte *)(iVar13 + uVar17);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar13 + uVar17)" identifier = (binary_expression "(uint)*(byte *)(iVar13 + uVar17)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar13 + uVar17)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar17)" ( (binary_expression "iVar13 + uVar17" identifier + identifier) ))))) ;) (expression_statement "uVar12 = uVar17;" (assignment_expression "uVar12 = uVar17" identifier = identifier) ;) (expression_statement "uVar16 = param_3;" (assignment_expression "uVar16 = param_3" identifier = identifier) ;) (if_statement "if ((uVar11 == 0) && (uVar3 == 0)) {\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    uVar11 = 0;\n    if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n  }\n  else {\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }" if (parenthesized_expression "((uVar11 == 0) && (uVar3 == 0))" ( (binary_expression "(uVar11 == 0) && (uVar3 == 0)" (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    uVar11 = 0;\n    if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n  }" { (expression_statement "puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);" (assignment_expression "puVar9 = (undefined1 *)(iVar13 + uVar14 + 5)" identifier = (cast_expression "(undefined1 *)(iVar13 + uVar14 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar14 + 5)" ( (binary_expression "iVar13 + uVar14 + 5" (binary_expression "iVar13 + uVar14" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);" (assignment_expression "puVar7 = (undefined1 *)(iVar13 + uVar14 + 6)" identifier = (cast_expression "(undefined1 *)(iVar13 + uVar14 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar14 + 6)" ( (binary_expression "iVar13 + uVar14 + 6" (binary_expression "iVar13 + uVar14" identifier + identifier) + number_literal) )))) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }" if (parenthesized_expression "(CONCAT11(*puVar9,*puVar7) < param_2)" ( (binary_expression "CONCAT11(*puVar9,*puVar7) < param_2" (call_expression "CONCAT11(*puVar9,*puVar7)" identifier (argument_list "(*puVar9,*puVar7)" ( (pointer_expression "*puVar9" * identifier) , (pointer_expression "*puVar7" * identifier) ))) < identifier) )) (compound_statement "{\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }" { (labeled_statement "LAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);" statement_identifier : (expression_statement "*(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);" (assignment_expression "*(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8)" (pointer_expression "*(undefined1 *)(iVar13 + uVar12)" * (cast_expression "(undefined1 *)(iVar13 + uVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar12)" ( (binary_expression "iVar13 + uVar12" identifier + identifier) )))) = (cast_expression "(char)(param_2 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(param_2 >> 8)" ( (binary_expression "param_2 >> 8" identifier >> number_literal) )))) ;)) (expression_statement "((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;" (assignment_expression "((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2" (subscript_expression "((undefined1 *)(iVar13 + uVar12))[1]" (parenthesized_expression "((undefined1 *)(iVar13 + uVar12))" ( (cast_expression "(undefined1 *)(iVar13 + uVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar12)" ( (binary_expression "iVar13 + uVar12" identifier + identifier) ))) )) [ number_literal ]) = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00046044;" goto statement_identifier ;) })) (expression_statement "bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);" (assignment_expression "bVar2 = param_2 < CONCAT11(*puVar9,*puVar7)" identifier = (binary_expression "param_2 < CONCAT11(*puVar9,*puVar7)" identifier < (call_expression "CONCAT11(*puVar9,*puVar7)" identifier (argument_list "(*puVar9,*puVar7)" ( (pointer_expression "*puVar9" * identifier) , (pointer_expression "*puVar7" * identifier) ))))) ;) }) (else_clause "else {\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }" else (compound_statement "{\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }" { (while_statement "while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }" { (expression_statement "uVar11 = (ushort)(uVar3 << 8) | uVar11;" (assignment_expression "uVar11 = (ushort)(uVar3 << 8) | uVar11" identifier = (binary_expression "(ushort)(uVar3 << 8) | uVar11" (call_expression "(ushort)(uVar3 << 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 << 8)" ( (binary_expression "uVar3 << 8" identifier << number_literal) ))) | identifier)) ;) (expression_statement "iVar4 = (int)(short)uVar11;" (assignment_expression "iVar4 = (int)(short)uVar11" identifier = (cast_expression "(int)(short)uVar11" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)uVar11" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) (expression_statement "uVar18 = (uint)uVar11;" (assignment_expression "uVar18 = (uint)uVar11" identifier = (cast_expression "(uint)uVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (param_2 <= uVar18) break;" if (parenthesized_expression "(param_2 <= uVar18)" ( (binary_expression "param_2 <= uVar18" identifier <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }" if (parenthesized_expression "(uVar18 <= uVar12 + 3)" ( (binary_expression "uVar18 <= uVar12 + 3" identifier <= (binary_expression "uVar12 + 3" identifier + number_literal)) )) (compound_statement "{\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }" { (if_statement "if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }" if (parenthesized_expression "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }" { (expression_statement "uVar6 = FUN_00044904(&DAT_000102ac);" (assignment_expression "uVar6 = FUN_00044904(&DAT_000102ac)" identifier = (call_expression "FUN_00044904(&DAT_000102ac)" identifier (argument_list "(&DAT_000102ac)" ( (pointer_expression "&DAT_000102ac" & identifier) )))) ;) (return_statement "return uVar6;" return identifier ;) })) (goto_statement "goto LAB_00045f90;" goto statement_identifier ;) })) (expression_statement "uVar3 = (uint)*(byte *)(iVar13 + uVar18);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar13 + uVar18)" identifier = (binary_expression "(uint)*(byte *)(iVar13 + uVar18)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar13 + uVar18)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar18)" ( (binary_expression "iVar13 + uVar18" identifier + identifier) ))))) ;) (expression_statement "uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];" (assignment_expression "uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1]" identifier = (subscript_expression "(ushort)((byte *)(iVar13 + uVar18))[1]" (call_expression "(ushort)((byte *)(iVar13 + uVar18))" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((byte *)(iVar13 + uVar18))" ( (cast_expression "(byte *)(iVar13 + uVar18)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar18)" ( (binary_expression "iVar13 + uVar18" identifier + identifier) ))) ))) [ number_literal ])) ;) (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);" (assignment_expression "uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28)" identifier = (pointer_expression "*(uint *)(*(int *)(param_1 + 0x34) + 0x28)" * (cast_expression "(uint *)(*(int *)(param_1 + 0x34) + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x34) + 0x28)" ( (binary_expression "*(int *)(param_1 + 0x34) + 0x28" (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }" if (parenthesized_expression "(uVar3 - 4 < uVar18)" ( (binary_expression "uVar3 - 4 < uVar18" (binary_expression "uVar3 - 4" identifier - number_literal) < identifier) )) (compound_statement "{\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }" { (expression_statement "puVar10 = &DAT_000102b1;" (assignment_expression "puVar10 = &DAT_000102b1" identifier = (pointer_expression "&DAT_000102b1" & identifier)) ;) (goto_statement "goto LAB_000460a4;" goto statement_identifier ;) })) (if_statement "if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00045f90:\n      uVar8 = 0;\n    }" { (labeled_statement "LAB_00045f90:\n      uVar8 = 0;" statement_identifier : (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }" else (compound_statement "{\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }" if (parenthesized_expression "(uVar18 <= uVar15 + 3)" ( (binary_expression "uVar18 <= uVar15 + 3" identifier <= (binary_expression "uVar15 + 3" identifier + number_literal)) )) (compound_statement "{\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }" { (if_statement "if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }" if (parenthesized_expression "(uVar18 < uVar15)" ( (binary_expression "uVar18 < uVar15" identifier < identifier) )) (compound_statement "{\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }" { (expression_statement "puVar10 = (undefined *)0x102bd;" (assignment_expression "puVar10 = (undefined *)0x102bd" identifier = (cast_expression "(undefined *)0x102bd" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000460a4;" goto statement_identifier ;) })) (expression_statement "uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;" (assignment_expression "uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18" identifier = (binary_expression "((ushort *)(iVar13 + uVar18))[1] + uVar18" (subscript_expression "((ushort *)(iVar13 + uVar18))[1]" (parenthesized_expression "((ushort *)(iVar13 + uVar18))" ( (cast_expression "(ushort *)(iVar13 + uVar18)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar18)" ( (binary_expression "iVar13 + uVar18" identifier + identifier) ))) )) [ number_literal ]) + identifier)) ;) (if_statement "if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }" if (parenthesized_expression "(uVar3 < uVar16)" ( (binary_expression "uVar3 < uVar16" identifier < identifier) )) (compound_statement "{\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }" { (expression_statement "puVar10 = (undefined *)0x102c0;" (assignment_expression "puVar10 = (undefined *)0x102c0" identifier = (cast_expression "(undefined *)0x102c0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000460a4;" goto statement_identifier ;) })) (expression_statement "uVar11 = *(ushort *)(iVar13 + uVar18);" (assignment_expression "uVar11 = *(ushort *)(iVar13 + uVar18)" identifier = (pointer_expression "*(ushort *)(iVar13 + uVar18)" * (cast_expression "(ushort *)(iVar13 + uVar18)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar18)" ( (binary_expression "iVar13 + uVar18" identifier + identifier) ))))) ;) (expression_statement "uVar8 = iVar4 - uVar15 & 0xff;" (assignment_expression "uVar8 = iVar4 - uVar15 & 0xff" identifier = (binary_expression "iVar4 - uVar15 & 0xff" (binary_expression "iVar4 - uVar15" identifier - identifier) & number_literal)) ;) (expression_statement "uVar15 = uVar16;" (assignment_expression "uVar15 = uVar16" identifier = identifier) ;) (expression_statement "uVar16 = uVar16 - param_2 & 0xffff;" (assignment_expression "uVar16 = uVar16 - param_2 & 0xffff" identifier = (binary_expression "uVar16 - param_2 & 0xffff" (binary_expression "uVar16 - param_2" identifier - identifier) & number_literal)) ;) })) }))) (if_statement "if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }" if (parenthesized_expression "(uVar17 < uVar12)" ( (binary_expression "uVar17 < uVar12" identifier < identifier) )) (compound_statement "{\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }" { (expression_statement "iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;" (assignment_expression "iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12" identifier = (binary_expression "*(ushort *)(iVar13 + uVar12 + 2) + uVar12" (pointer_expression "*(ushort *)(iVar13 + uVar12 + 2)" * (cast_expression "(ushort *)(iVar13 + uVar12 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar12 + 2)" ( (binary_expression "iVar13 + uVar12 + 2" (binary_expression "iVar13 + uVar12" identifier + identifier) + number_literal) )))) + identifier)) ;) (if_statement "if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }" if (parenthesized_expression "((int)param_2 <= iVar4 + 3)" ( (binary_expression "(int)param_2 <= iVar4 + 3" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) <= (binary_expression "iVar4 + 3" identifier + number_literal)) )) (compound_statement "{\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }" { (if_statement "if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }" if (parenthesized_expression "((int)param_2 < iVar4)" ( (binary_expression "(int)param_2 < iVar4" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }" { (expression_statement "puVar10 = (undefined *)0x102cd;" (assignment_expression "puVar10 = (undefined *)0x102cd" identifier = (cast_expression "(undefined *)0x102cd" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000460a4;" goto statement_identifier ;) })) (expression_statement "uVar16 = uVar15 - uVar12 & 0xffff;" (assignment_expression "uVar16 = uVar15 - uVar12 & 0xffff" identifier = (binary_expression "uVar15 - uVar12 & 0xffff" (binary_expression "uVar15 - uVar12" identifier - identifier) & number_literal)) ;) (expression_statement "uVar8 = (uVar8 + param_2) - iVar4 & 0xff;" (assignment_expression "uVar8 = (uVar8 + param_2) - iVar4 & 0xff" identifier = (binary_expression "(uVar8 + param_2) - iVar4 & 0xff" (binary_expression "(uVar8 + param_2) - iVar4" (parenthesized_expression "(uVar8 + param_2)" ( (binary_expression "uVar8 + param_2" identifier + identifier) )) - identifier) & number_literal)) ;) (expression_statement "param_2 = uVar12;" (assignment_expression "param_2 = uVar12" identifier = identifier) ;) })) })) (expression_statement "pbVar5 = (byte *)(iVar13 + uVar14 + 7);" (assignment_expression "pbVar5 = (byte *)(iVar13 + uVar14 + 7)" identifier = (cast_expression "(byte *)(iVar13 + uVar14 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar14 + 7)" ( (binary_expression "iVar13 + uVar14 + 7" (binary_expression "iVar13 + uVar14" identifier + identifier) + number_literal) )))) ;) (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) (if_statement "if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }" if (parenthesized_expression "(bVar1 < uVar8)" ( (binary_expression "bVar1 < uVar8" identifier < identifier) )) (compound_statement "{\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }" { (expression_statement "uVar6 = FUN_00044904(0x102d3);" (assignment_expression "uVar6 = FUN_00044904(0x102d3)" identifier = (call_expression "FUN_00044904(0x102d3)" identifier (argument_list "(0x102d3)" ( number_literal )))) ;) (return_statement "return uVar6;" return identifier ;) })) (expression_statement "*pbVar5 = bVar1 - (char)uVar8;" (assignment_expression "*pbVar5 = bVar1 - (char)uVar8" (pointer_expression "*pbVar5" * identifier) = (binary_expression "bVar1 - (char)uVar8" identifier - (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);" (assignment_expression "puVar9 = (undefined1 *)(iVar13 + uVar14 + 5)" identifier = (cast_expression "(undefined1 *)(iVar13 + uVar14 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar14 + 5)" ( (binary_expression "iVar13 + uVar14 + 5" (binary_expression "iVar13 + uVar14" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);" (assignment_expression "puVar7 = (undefined1 *)(iVar13 + uVar14 + 6)" identifier = (cast_expression "(undefined1 *)(iVar13 + uVar14 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar14 + 6)" ( (binary_expression "iVar13 + uVar14 + 6" (binary_expression "iVar13 + uVar14" identifier + identifier) + number_literal) )))) ;) (expression_statement "bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);" (assignment_expression "bVar2 = param_2 < CONCAT11(*puVar9,*puVar7)" identifier = (binary_expression "param_2 < CONCAT11(*puVar9,*puVar7)" identifier < (call_expression "CONCAT11(*puVar9,*puVar7)" identifier (argument_list "(*puVar9,*puVar7)" ( (pointer_expression "*puVar9" * identifier) , (pointer_expression "*puVar7" * identifier) ))))) ;) (if_statement "if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;" if (parenthesized_expression "(CONCAT11(*puVar9,*puVar7) < param_2)" ( (binary_expression "CONCAT11(*puVar9,*puVar7) < param_2" (call_expression "CONCAT11(*puVar9,*puVar7)" identifier (argument_list "(*puVar9,*puVar7)" ( (pointer_expression "*puVar9" * identifier) , (pointer_expression "*puVar7" * identifier) ))) < identifier) )) (goto_statement "goto LAB_0004602c;" goto statement_identifier ;)) }))) (if_statement "if (bVar2) {\n    puVar10 = (undefined *)0x102db;\n  }\n  else {\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    puVar10 = (undefined *)0x102db;\n  }" { (expression_statement "puVar10 = (undefined *)0x102db;" (assignment_expression "puVar10 = (undefined *)0x102db" identifier = (cast_expression "(undefined *)0x102db" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }" else (compound_statement "{\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }" { (if_statement "if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }" if (parenthesized_expression "(uVar12 == uVar17)" ( (binary_expression "uVar12 == uVar17" identifier == identifier) )) (compound_statement "{\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }" { (expression_statement "*(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);" (assignment_expression "*(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8)" (pointer_expression "*(char *)(iVar13 + uVar14 + 1)" * (cast_expression "(char *)(iVar13 + uVar14 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar14 + 1)" ( (binary_expression "iVar13 + uVar14 + 1" (binary_expression "iVar13 + uVar14" identifier + identifier) + number_literal) )))) = (cast_expression "(char)(uVar11 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar11 >> 8)" ( (binary_expression "uVar11 >> 8" identifier >> number_literal) )))) ;) (expression_statement "*(char *)(iVar13 + uVar14 + 2) = (char)uVar11;" (assignment_expression "*(char *)(iVar13 + uVar14 + 2) = (char)uVar11" (pointer_expression "*(char *)(iVar13 + uVar14 + 2)" * (cast_expression "(char *)(iVar13 + uVar14 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar14 + 2)" ( (binary_expression "iVar13 + uVar14 + 2" (binary_expression "iVar13 + uVar14" identifier + identifier) + number_literal) )))) = (cast_expression "(char)uVar11" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*puVar9 = (char)(uVar15 >> 8);" (assignment_expression "*puVar9 = (char)(uVar15 >> 8)" (pointer_expression "*puVar9" * identifier) = (cast_expression "(char)(uVar15 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar15 >> 8)" ( (binary_expression "uVar15 >> 8" identifier >> number_literal) )))) ;) (expression_statement "*puVar7 = (char)uVar15;" (assignment_expression "*puVar7 = (char)uVar15" (pointer_expression "*puVar7" * identifier) = (cast_expression "(char)uVar15" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (labeled_statement "LAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);" statement_identifier : (expression_statement "puVar7 = (undefined1 *)(iVar13 + param_2);" (assignment_expression "puVar7 = (undefined1 *)(iVar13 + param_2)" identifier = (cast_expression "(undefined1 *)(iVar13 + param_2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + param_2)" ( (binary_expression "iVar13 + param_2" identifier + identifier) )))) ;)) (if_statement "if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }" if (parenthesized_expression "((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0)" ( (binary_expression "(*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0" (parenthesized_expression "(*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc)" ( (binary_expression "*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc" (pointer_expression "*(ushort *)(*(int *)(param_1 + 0x34) + 0x18)" * (cast_expression "(ushort *)(*(int *)(param_1 + 0x34) + 0x18)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x34) + 0x18)" ( (binary_expression "*(int *)(param_1 + 0x34) + 0x18" (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }" { (expression_statement "puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);" (assignment_expression "puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16)" identifier = (cast_expression "(undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16)" (parenthesized_expression "(*(code *)PTR_memset_000f5450)" ( (pointer_expression "*(code *)PTR_memset_000f5450" * (cast_expression "(code *)PTR_memset_000f5450" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar7,0,uVar16)" ( identifier , number_literal , identifier ))))) ;) })) (expression_statement "*puVar7 = (char)(uVar11 >> 8);" (assignment_expression "*puVar7 = (char)(uVar11 >> 8)" (pointer_expression "*puVar7" * identifier) = (cast_expression "(char)(uVar11 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar11 >> 8)" ( (binary_expression "uVar11 >> 8" identifier >> number_literal) )))) ;) (expression_statement "puVar7[1] = (char)uVar11;" (assignment_expression "puVar7[1] = (char)uVar11" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (cast_expression "(char)uVar11" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar7[2] = (char)(uVar16 >> 8);" (assignment_expression "puVar7[2] = (char)(uVar16 >> 8)" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (cast_expression "(char)(uVar16 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar16 >> 8)" ( (binary_expression "uVar16 >> 8" identifier >> number_literal) )))) ;) (expression_statement "puVar7[3] = (char)uVar16;" (assignment_expression "puVar7[3] = (char)uVar16" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = (cast_expression "(char)uVar16" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;" (assignment_expression "*(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x14) + param_3" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) + identifier)) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "puVar10 = (undefined *)0x102dc;" (assignment_expression "puVar10 = (undefined *)0x102dc" identifier = (cast_expression "(undefined *)0x102dc" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_000460a4:\n  uVar6 = FUN_00044904(puVar10);" statement_identifier : (expression_statement "uVar6 = FUN_00044904(puVar10);" (assignment_expression "uVar6 = FUN_00044904(puVar10)" identifier = (call_expression "FUN_00044904(puVar10)" identifier (argument_list "(puVar10)" ( identifier )))) ;)) (return_statement "return uVar6;" return identifier ;) })))
(translation_unit "int freeSpace(MemPage *pPage,u16 iStart,u16 iSize)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  int iVar4;\n  u8 *puVar5;\n  uint uVar6;\n  ushort uVar8;\n  u8 *puVar7;\n  undefined *lineno;\n  undefined2 in_register_00000014;\n  uint uVar9;\n  undefined2 in_register_00000018;\n  uint uVar10;\n  uint uVar11;\n  u8 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  \n  uVar10 = CONCAT22(in_register_00000018,iSize);\n  uVar9 = CONCAT22(in_register_00000014,iStart);\n  puVar12 = pPage->aData;\n  uVar14 = uVar9 + uVar10;\n  uVar13 = (uint)pPage->hdrOffset;\n  uVar16 = uVar13 + 1;\n  uVar8 = (ushort)(puVar12 + uVar16)[1];\n  uVar3 = (uint)puVar12[uVar16];\n  uVar11 = uVar16;\n  uVar15 = uVar10;\n  if ((uVar8 == 0) && (uVar3 == 0)) {\n    puVar7 = puVar12 + uVar13 + 5;\n    puVar5 = puVar12 + uVar13 + 6;\n    uVar8 = 0;\n    if (CONCAT11(*puVar7,*puVar5) < uVar9) {\nLAB_0004602c:\n      puVar12[uVar11] = (u8)(uVar9 >> 8);\n      (puVar12 + uVar11)[1] = (u8)uVar9;\n      goto LAB_00046044;\n    }\n    bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);\n  }\n  else {\n    while( true ) {\n      uVar8 = (ushort)(uVar3 << 8) | uVar8;\n      iVar4 = (int)(short)uVar8;\n      uVar17 = (uint)uVar8;\n      if (uVar9 <= uVar17) break;\n      if (uVar17 <= uVar11 + 3) {\n        if (uVar17 != 0) {\n          iVar4 = sqlite3CorruptError(0x102ac);\n          return iVar4;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)puVar12[uVar17];\n      uVar8 = (ushort)(puVar12 + uVar17)[1];\n      uVar11 = uVar17;\n    }\n    uVar3 = pPage->pBt->usableSize;\n    if (uVar3 - 4 < uVar17) {\n      lineno = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar17 == 0) {\nLAB_00045f90:\n      uVar6 = 0;\n    }\n    else {\n      uVar6 = 0;\n      if (uVar17 <= uVar14 + 3) {\n        if (uVar17 < uVar14) {\n          lineno = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar15 = *(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17;\n        if (uVar3 < uVar15) {\n          lineno = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar8 = *(ushort *)(puVar12 + uVar17);\n        uVar6 = iVar4 - uVar14 & 0xff;\n        uVar14 = uVar15;\n        uVar15 = uVar15 - uVar9 & 0xffff;\n      }\n    }\n    if (uVar16 < uVar11) {\n      iVar4 = *(ushort *)(puVar12 + uVar11 + 2) + uVar11;\n      if ((int)uVar9 <= iVar4 + 3) {\n        if ((int)uVar9 < iVar4) {\n          lineno = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar15 = uVar14 - uVar11 & 0xffff;\n        uVar6 = (uVar6 + uVar9) - iVar4 & 0xff;\n        uVar9 = uVar11;\n      }\n    }\n    bVar1 = puVar12[uVar13 + 7];\n    if (bVar1 < uVar6) {\n      iVar4 = sqlite3CorruptError(0x102d3);\n      return iVar4;\n    }\n    puVar12[uVar13 + 7] = bVar1 - (char)uVar6;\n    puVar7 = puVar12 + uVar13 + 5;\n    puVar5 = puVar12 + uVar13 + 6;\n    bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);\n    if (CONCAT11(*puVar7,*puVar5) < uVar9) goto LAB_0004602c;\n  }\n  if (bVar2) {\n    lineno = (undefined *)0x102db;\n  }\n  else {\n    if (uVar11 == uVar16) {\n      puVar12[uVar13 + 1] = (u8)(uVar8 >> 8);\n      puVar12[uVar13 + 2] = (u8)uVar8;\n      *puVar7 = (u8)(uVar14 >> 8);\n      *puVar5 = (u8)uVar14;\nLAB_00046044:\n      puVar12 = puVar12 + uVar9;\n      if ((pPage->pBt->btsFlags & 0xc) != 0) {\n        puVar12 = (u8 *)(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15);\n      }\n      *puVar12 = (u8)(uVar8 >> 8);\n      puVar12[1] = (u8)uVar8;\n      puVar12[2] = (u8)(uVar15 >> 8);\n      puVar12[3] = (u8)uVar15;\n      pPage->nFree = pPage->nFree + uVar10;\n      return 0;\n    }\n    lineno = (undefined *)0x102dc;\n  }\nLAB_000460a4:\n  iVar4 = sqlite3CorruptError((int)lineno);\n  return iVar4;\n}\n\n" (function_definition "int freeSpace(MemPage *pPage,u16 iStart,u16 iSize)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  int iVar4;\n  u8 *puVar5;\n  uint uVar6;\n  ushort uVar8;\n  u8 *puVar7;\n  undefined *lineno;\n  undefined2 in_register_00000014;\n  uint uVar9;\n  undefined2 in_register_00000018;\n  uint uVar10;\n  uint uVar11;\n  u8 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  \n  uVar10 = CONCAT22(in_register_00000018,iSize);\n  uVar9 = CONCAT22(in_register_00000014,iStart);\n  puVar12 = pPage->aData;\n  uVar14 = uVar9 + uVar10;\n  uVar13 = (uint)pPage->hdrOffset;\n  uVar16 = uVar13 + 1;\n  uVar8 = (ushort)(puVar12 + uVar16)[1];\n  uVar3 = (uint)puVar12[uVar16];\n  uVar11 = uVar16;\n  uVar15 = uVar10;\n  if ((uVar8 == 0) && (uVar3 == 0)) {\n    puVar7 = puVar12 + uVar13 + 5;\n    puVar5 = puVar12 + uVar13 + 6;\n    uVar8 = 0;\n    if (CONCAT11(*puVar7,*puVar5) < uVar9) {\nLAB_0004602c:\n      puVar12[uVar11] = (u8)(uVar9 >> 8);\n      (puVar12 + uVar11)[1] = (u8)uVar9;\n      goto LAB_00046044;\n    }\n    bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);\n  }\n  else {\n    while( true ) {\n      uVar8 = (ushort)(uVar3 << 8) | uVar8;\n      iVar4 = (int)(short)uVar8;\n      uVar17 = (uint)uVar8;\n      if (uVar9 <= uVar17) break;\n      if (uVar17 <= uVar11 + 3) {\n        if (uVar17 != 0) {\n          iVar4 = sqlite3CorruptError(0x102ac);\n          return iVar4;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)puVar12[uVar17];\n      uVar8 = (ushort)(puVar12 + uVar17)[1];\n      uVar11 = uVar17;\n    }\n    uVar3 = pPage->pBt->usableSize;\n    if (uVar3 - 4 < uVar17) {\n      lineno = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar17 == 0) {\nLAB_00045f90:\n      uVar6 = 0;\n    }\n    else {\n      uVar6 = 0;\n      if (uVar17 <= uVar14 + 3) {\n        if (uVar17 < uVar14) {\n          lineno = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar15 = *(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17;\n        if (uVar3 < uVar15) {\n          lineno = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar8 = *(ushort *)(puVar12 + uVar17);\n        uVar6 = iVar4 - uVar14 & 0xff;\n        uVar14 = uVar15;\n        uVar15 = uVar15 - uVar9 & 0xffff;\n      }\n    }\n    if (uVar16 < uVar11) {\n      iVar4 = *(ushort *)(puVar12 + uVar11 + 2) + uVar11;\n      if ((int)uVar9 <= iVar4 + 3) {\n        if ((int)uVar9 < iVar4) {\n          lineno = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar15 = uVar14 - uVar11 & 0xffff;\n        uVar6 = (uVar6 + uVar9) - iVar4 & 0xff;\n        uVar9 = uVar11;\n      }\n    }\n    bVar1 = puVar12[uVar13 + 7];\n    if (bVar1 < uVar6) {\n      iVar4 = sqlite3CorruptError(0x102d3);\n      return iVar4;\n    }\n    puVar12[uVar13 + 7] = bVar1 - (char)uVar6;\n    puVar7 = puVar12 + uVar13 + 5;\n    puVar5 = puVar12 + uVar13 + 6;\n    bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);\n    if (CONCAT11(*puVar7,*puVar5) < uVar9) goto LAB_0004602c;\n  }\n  if (bVar2) {\n    lineno = (undefined *)0x102db;\n  }\n  else {\n    if (uVar11 == uVar16) {\n      puVar12[uVar13 + 1] = (u8)(uVar8 >> 8);\n      puVar12[uVar13 + 2] = (u8)uVar8;\n      *puVar7 = (u8)(uVar14 >> 8);\n      *puVar5 = (u8)uVar14;\nLAB_00046044:\n      puVar12 = puVar12 + uVar9;\n      if ((pPage->pBt->btsFlags & 0xc) != 0) {\n        puVar12 = (u8 *)(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15);\n      }\n      *puVar12 = (u8)(uVar8 >> 8);\n      puVar12[1] = (u8)uVar8;\n      puVar12[2] = (u8)(uVar15 >> 8);\n      puVar12[3] = (u8)uVar15;\n      pPage->nFree = pPage->nFree + uVar10;\n      return 0;\n    }\n    lineno = (undefined *)0x102dc;\n  }\nLAB_000460a4:\n  iVar4 = sqlite3CorruptError((int)lineno);\n  return iVar4;\n}" primitive_type (function_declarator "freeSpace(MemPage *pPage,u16 iStart,u16 iSize)" identifier (parameter_list "(MemPage *pPage,u16 iStart,u16 iSize)" ( (parameter_declaration "MemPage *pPage" type_identifier (pointer_declarator "*pPage" * identifier)) , (parameter_declaration "u16 iStart" type_identifier identifier) , (parameter_declaration "u16 iSize" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  int iVar4;\n  u8 *puVar5;\n  uint uVar6;\n  ushort uVar8;\n  u8 *puVar7;\n  undefined *lineno;\n  undefined2 in_register_00000014;\n  uint uVar9;\n  undefined2 in_register_00000018;\n  uint uVar10;\n  uint uVar11;\n  u8 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  \n  uVar10 = CONCAT22(in_register_00000018,iSize);\n  uVar9 = CONCAT22(in_register_00000014,iStart);\n  puVar12 = pPage->aData;\n  uVar14 = uVar9 + uVar10;\n  uVar13 = (uint)pPage->hdrOffset;\n  uVar16 = uVar13 + 1;\n  uVar8 = (ushort)(puVar12 + uVar16)[1];\n  uVar3 = (uint)puVar12[uVar16];\n  uVar11 = uVar16;\n  uVar15 = uVar10;\n  if ((uVar8 == 0) && (uVar3 == 0)) {\n    puVar7 = puVar12 + uVar13 + 5;\n    puVar5 = puVar12 + uVar13 + 6;\n    uVar8 = 0;\n    if (CONCAT11(*puVar7,*puVar5) < uVar9) {\nLAB_0004602c:\n      puVar12[uVar11] = (u8)(uVar9 >> 8);\n      (puVar12 + uVar11)[1] = (u8)uVar9;\n      goto LAB_00046044;\n    }\n    bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);\n  }\n  else {\n    while( true ) {\n      uVar8 = (ushort)(uVar3 << 8) | uVar8;\n      iVar4 = (int)(short)uVar8;\n      uVar17 = (uint)uVar8;\n      if (uVar9 <= uVar17) break;\n      if (uVar17 <= uVar11 + 3) {\n        if (uVar17 != 0) {\n          iVar4 = sqlite3CorruptError(0x102ac);\n          return iVar4;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)puVar12[uVar17];\n      uVar8 = (ushort)(puVar12 + uVar17)[1];\n      uVar11 = uVar17;\n    }\n    uVar3 = pPage->pBt->usableSize;\n    if (uVar3 - 4 < uVar17) {\n      lineno = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar17 == 0) {\nLAB_00045f90:\n      uVar6 = 0;\n    }\n    else {\n      uVar6 = 0;\n      if (uVar17 <= uVar14 + 3) {\n        if (uVar17 < uVar14) {\n          lineno = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar15 = *(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17;\n        if (uVar3 < uVar15) {\n          lineno = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar8 = *(ushort *)(puVar12 + uVar17);\n        uVar6 = iVar4 - uVar14 & 0xff;\n        uVar14 = uVar15;\n        uVar15 = uVar15 - uVar9 & 0xffff;\n      }\n    }\n    if (uVar16 < uVar11) {\n      iVar4 = *(ushort *)(puVar12 + uVar11 + 2) + uVar11;\n      if ((int)uVar9 <= iVar4 + 3) {\n        if ((int)uVar9 < iVar4) {\n          lineno = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar15 = uVar14 - uVar11 & 0xffff;\n        uVar6 = (uVar6 + uVar9) - iVar4 & 0xff;\n        uVar9 = uVar11;\n      }\n    }\n    bVar1 = puVar12[uVar13 + 7];\n    if (bVar1 < uVar6) {\n      iVar4 = sqlite3CorruptError(0x102d3);\n      return iVar4;\n    }\n    puVar12[uVar13 + 7] = bVar1 - (char)uVar6;\n    puVar7 = puVar12 + uVar13 + 5;\n    puVar5 = puVar12 + uVar13 + 6;\n    bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);\n    if (CONCAT11(*puVar7,*puVar5) < uVar9) goto LAB_0004602c;\n  }\n  if (bVar2) {\n    lineno = (undefined *)0x102db;\n  }\n  else {\n    if (uVar11 == uVar16) {\n      puVar12[uVar13 + 1] = (u8)(uVar8 >> 8);\n      puVar12[uVar13 + 2] = (u8)uVar8;\n      *puVar7 = (u8)(uVar14 >> 8);\n      *puVar5 = (u8)uVar14;\nLAB_00046044:\n      puVar12 = puVar12 + uVar9;\n      if ((pPage->pBt->btsFlags & 0xc) != 0) {\n        puVar12 = (u8 *)(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15);\n      }\n      *puVar12 = (u8)(uVar8 >> 8);\n      puVar12[1] = (u8)uVar8;\n      puVar12[2] = (u8)(uVar15 >> 8);\n      puVar12[3] = (u8)uVar15;\n      pPage->nFree = pPage->nFree + uVar10;\n      return 0;\n    }\n    lineno = (undefined *)0x102dc;\n  }\nLAB_000460a4:\n  iVar4 = sqlite3CorruptError((int)lineno);\n  return iVar4;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "u8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "ushort uVar8;" type_identifier identifier ;) (declaration "u8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined *lineno;" type_identifier (pointer_declarator "*lineno" * identifier) ;) (declaration "undefined2 in_register_00000014;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined2 in_register_00000018;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "u8 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (expression_statement "uVar10 = CONCAT22(in_register_00000018,iSize);" (assignment_expression "uVar10 = CONCAT22(in_register_00000018,iSize)" identifier = (call_expression "CONCAT22(in_register_00000018,iSize)" identifier (argument_list "(in_register_00000018,iSize)" ( identifier , identifier )))) ;) (expression_statement "uVar9 = CONCAT22(in_register_00000014,iStart);" (assignment_expression "uVar9 = CONCAT22(in_register_00000014,iStart)" identifier = (call_expression "CONCAT22(in_register_00000014,iStart)" identifier (argument_list "(in_register_00000014,iStart)" ( identifier , identifier )))) ;) (expression_statement "puVar12 = pPage->aData;" (assignment_expression "puVar12 = pPage->aData" identifier = (field_expression "pPage->aData" identifier -> field_identifier)) ;) (expression_statement "uVar14 = uVar9 + uVar10;" (assignment_expression "uVar14 = uVar9 + uVar10" identifier = (binary_expression "uVar9 + uVar10" identifier + identifier)) ;) (expression_statement "uVar13 = (uint)pPage->hdrOffset;" (assignment_expression "uVar13 = (uint)pPage->hdrOffset" identifier = (cast_expression "(uint)pPage->hdrOffset" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPage->hdrOffset" identifier -> field_identifier))) ;) (expression_statement "uVar16 = uVar13 + 1;" (assignment_expression "uVar16 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (ushort)(puVar12 + uVar16)[1];" (assignment_expression "uVar8 = (ushort)(puVar12 + uVar16)[1]" identifier = (subscript_expression "(ushort)(puVar12 + uVar16)[1]" (call_expression "(ushort)(puVar12 + uVar16)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(puVar12 + uVar16)" ( (binary_expression "puVar12 + uVar16" identifier + identifier) ))) [ number_literal ])) ;) (expression_statement "uVar3 = (uint)puVar12[uVar16];" (assignment_expression "uVar3 = (uint)puVar12[uVar16]" identifier = (cast_expression "(uint)puVar12[uVar16]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar12[uVar16]" identifier [ identifier ]))) ;) (expression_statement "uVar11 = uVar16;" (assignment_expression "uVar11 = uVar16" identifier = identifier) ;) (expression_statement "uVar15 = uVar10;" (assignment_expression "uVar15 = uVar10" identifier = identifier) ;) (if_statement "if ((uVar8 == 0) && (uVar3 == 0)) {\n    puVar7 = puVar12 + uVar13 + 5;\n    puVar5 = puVar12 + uVar13 + 6;\n    uVar8 = 0;\n    if (CONCAT11(*puVar7,*puVar5) < uVar9) {\nLAB_0004602c:\n      puVar12[uVar11] = (u8)(uVar9 >> 8);\n      (puVar12 + uVar11)[1] = (u8)uVar9;\n      goto LAB_00046044;\n    }\n    bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);\n  }\n  else {\n    while( true ) {\n      uVar8 = (ushort)(uVar3 << 8) | uVar8;\n      iVar4 = (int)(short)uVar8;\n      uVar17 = (uint)uVar8;\n      if (uVar9 <= uVar17) break;\n      if (uVar17 <= uVar11 + 3) {\n        if (uVar17 != 0) {\n          iVar4 = sqlite3CorruptError(0x102ac);\n          return iVar4;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)puVar12[uVar17];\n      uVar8 = (ushort)(puVar12 + uVar17)[1];\n      uVar11 = uVar17;\n    }\n    uVar3 = pPage->pBt->usableSize;\n    if (uVar3 - 4 < uVar17) {\n      lineno = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar17 == 0) {\nLAB_00045f90:\n      uVar6 = 0;\n    }\n    else {\n      uVar6 = 0;\n      if (uVar17 <= uVar14 + 3) {\n        if (uVar17 < uVar14) {\n          lineno = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar15 = *(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17;\n        if (uVar3 < uVar15) {\n          lineno = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar8 = *(ushort *)(puVar12 + uVar17);\n        uVar6 = iVar4 - uVar14 & 0xff;\n        uVar14 = uVar15;\n        uVar15 = uVar15 - uVar9 & 0xffff;\n      }\n    }\n    if (uVar16 < uVar11) {\n      iVar4 = *(ushort *)(puVar12 + uVar11 + 2) + uVar11;\n      if ((int)uVar9 <= iVar4 + 3) {\n        if ((int)uVar9 < iVar4) {\n          lineno = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar15 = uVar14 - uVar11 & 0xffff;\n        uVar6 = (uVar6 + uVar9) - iVar4 & 0xff;\n        uVar9 = uVar11;\n      }\n    }\n    bVar1 = puVar12[uVar13 + 7];\n    if (bVar1 < uVar6) {\n      iVar4 = sqlite3CorruptError(0x102d3);\n      return iVar4;\n    }\n    puVar12[uVar13 + 7] = bVar1 - (char)uVar6;\n    puVar7 = puVar12 + uVar13 + 5;\n    puVar5 = puVar12 + uVar13 + 6;\n    bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);\n    if (CONCAT11(*puVar7,*puVar5) < uVar9) goto LAB_0004602c;\n  }" if (parenthesized_expression "((uVar8 == 0) && (uVar3 == 0))" ( (binary_expression "(uVar8 == 0) && (uVar3 == 0)" (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    puVar7 = puVar12 + uVar13 + 5;\n    puVar5 = puVar12 + uVar13 + 6;\n    uVar8 = 0;\n    if (CONCAT11(*puVar7,*puVar5) < uVar9) {\nLAB_0004602c:\n      puVar12[uVar11] = (u8)(uVar9 >> 8);\n      (puVar12 + uVar11)[1] = (u8)uVar9;\n      goto LAB_00046044;\n    }\n    bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);\n  }" { (expression_statement "puVar7 = puVar12 + uVar13 + 5;" (assignment_expression "puVar7 = puVar12 + uVar13 + 5" identifier = (binary_expression "puVar12 + uVar13 + 5" (binary_expression "puVar12 + uVar13" identifier + identifier) + number_literal)) ;) (expression_statement "puVar5 = puVar12 + uVar13 + 6;" (assignment_expression "puVar5 = puVar12 + uVar13 + 6" identifier = (binary_expression "puVar12 + uVar13 + 6" (binary_expression "puVar12 + uVar13" identifier + identifier) + number_literal)) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (CONCAT11(*puVar7,*puVar5) < uVar9) {\nLAB_0004602c:\n      puVar12[uVar11] = (u8)(uVar9 >> 8);\n      (puVar12 + uVar11)[1] = (u8)uVar9;\n      goto LAB_00046044;\n    }" if (parenthesized_expression "(CONCAT11(*puVar7,*puVar5) < uVar9)" ( (binary_expression "CONCAT11(*puVar7,*puVar5) < uVar9" (call_expression "CONCAT11(*puVar7,*puVar5)" identifier (argument_list "(*puVar7,*puVar5)" ( (pointer_expression "*puVar7" * identifier) , (pointer_expression "*puVar5" * identifier) ))) < identifier) )) (compound_statement "{\nLAB_0004602c:\n      puVar12[uVar11] = (u8)(uVar9 >> 8);\n      (puVar12 + uVar11)[1] = (u8)uVar9;\n      goto LAB_00046044;\n    }" { (labeled_statement "LAB_0004602c:\n      puVar12[uVar11] = (u8)(uVar9 >> 8);" statement_identifier : (expression_statement "puVar12[uVar11] = (u8)(uVar9 >> 8);" (assignment_expression "puVar12[uVar11] = (u8)(uVar9 >> 8)" (subscript_expression "puVar12[uVar11]" identifier [ identifier ]) = (call_expression "(u8)(uVar9 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar9 >> 8)" ( (binary_expression "uVar9 >> 8" identifier >> number_literal) )))) ;)) (expression_statement "(puVar12 + uVar11)[1] = (u8)uVar9;" (assignment_expression "(puVar12 + uVar11)[1] = (u8)uVar9" (subscript_expression "(puVar12 + uVar11)[1]" (parenthesized_expression "(puVar12 + uVar11)" ( (binary_expression "puVar12 + uVar11" identifier + identifier) )) [ number_literal ]) = (cast_expression "(u8)uVar9" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_00046044;" goto statement_identifier ;) })) (expression_statement "bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);" (assignment_expression "bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5)" identifier = (binary_expression "uVar9 < CONCAT11(*puVar7,*puVar5)" identifier < (call_expression "CONCAT11(*puVar7,*puVar5)" identifier (argument_list "(*puVar7,*puVar5)" ( (pointer_expression "*puVar7" * identifier) , (pointer_expression "*puVar5" * identifier) ))))) ;) }) (else_clause "else {\n    while( true ) {\n      uVar8 = (ushort)(uVar3 << 8) | uVar8;\n      iVar4 = (int)(short)uVar8;\n      uVar17 = (uint)uVar8;\n      if (uVar9 <= uVar17) break;\n      if (uVar17 <= uVar11 + 3) {\n        if (uVar17 != 0) {\n          iVar4 = sqlite3CorruptError(0x102ac);\n          return iVar4;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)puVar12[uVar17];\n      uVar8 = (ushort)(puVar12 + uVar17)[1];\n      uVar11 = uVar17;\n    }\n    uVar3 = pPage->pBt->usableSize;\n    if (uVar3 - 4 < uVar17) {\n      lineno = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar17 == 0) {\nLAB_00045f90:\n      uVar6 = 0;\n    }\n    else {\n      uVar6 = 0;\n      if (uVar17 <= uVar14 + 3) {\n        if (uVar17 < uVar14) {\n          lineno = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar15 = *(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17;\n        if (uVar3 < uVar15) {\n          lineno = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar8 = *(ushort *)(puVar12 + uVar17);\n        uVar6 = iVar4 - uVar14 & 0xff;\n        uVar14 = uVar15;\n        uVar15 = uVar15 - uVar9 & 0xffff;\n      }\n    }\n    if (uVar16 < uVar11) {\n      iVar4 = *(ushort *)(puVar12 + uVar11 + 2) + uVar11;\n      if ((int)uVar9 <= iVar4 + 3) {\n        if ((int)uVar9 < iVar4) {\n          lineno = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar15 = uVar14 - uVar11 & 0xffff;\n        uVar6 = (uVar6 + uVar9) - iVar4 & 0xff;\n        uVar9 = uVar11;\n      }\n    }\n    bVar1 = puVar12[uVar13 + 7];\n    if (bVar1 < uVar6) {\n      iVar4 = sqlite3CorruptError(0x102d3);\n      return iVar4;\n    }\n    puVar12[uVar13 + 7] = bVar1 - (char)uVar6;\n    puVar7 = puVar12 + uVar13 + 5;\n    puVar5 = puVar12 + uVar13 + 6;\n    bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);\n    if (CONCAT11(*puVar7,*puVar5) < uVar9) goto LAB_0004602c;\n  }" else (compound_statement "{\n    while( true ) {\n      uVar8 = (ushort)(uVar3 << 8) | uVar8;\n      iVar4 = (int)(short)uVar8;\n      uVar17 = (uint)uVar8;\n      if (uVar9 <= uVar17) break;\n      if (uVar17 <= uVar11 + 3) {\n        if (uVar17 != 0) {\n          iVar4 = sqlite3CorruptError(0x102ac);\n          return iVar4;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)puVar12[uVar17];\n      uVar8 = (ushort)(puVar12 + uVar17)[1];\n      uVar11 = uVar17;\n    }\n    uVar3 = pPage->pBt->usableSize;\n    if (uVar3 - 4 < uVar17) {\n      lineno = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar17 == 0) {\nLAB_00045f90:\n      uVar6 = 0;\n    }\n    else {\n      uVar6 = 0;\n      if (uVar17 <= uVar14 + 3) {\n        if (uVar17 < uVar14) {\n          lineno = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar15 = *(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17;\n        if (uVar3 < uVar15) {\n          lineno = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar8 = *(ushort *)(puVar12 + uVar17);\n        uVar6 = iVar4 - uVar14 & 0xff;\n        uVar14 = uVar15;\n        uVar15 = uVar15 - uVar9 & 0xffff;\n      }\n    }\n    if (uVar16 < uVar11) {\n      iVar4 = *(ushort *)(puVar12 + uVar11 + 2) + uVar11;\n      if ((int)uVar9 <= iVar4 + 3) {\n        if ((int)uVar9 < iVar4) {\n          lineno = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar15 = uVar14 - uVar11 & 0xffff;\n        uVar6 = (uVar6 + uVar9) - iVar4 & 0xff;\n        uVar9 = uVar11;\n      }\n    }\n    bVar1 = puVar12[uVar13 + 7];\n    if (bVar1 < uVar6) {\n      iVar4 = sqlite3CorruptError(0x102d3);\n      return iVar4;\n    }\n    puVar12[uVar13 + 7] = bVar1 - (char)uVar6;\n    puVar7 = puVar12 + uVar13 + 5;\n    puVar5 = puVar12 + uVar13 + 6;\n    bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);\n    if (CONCAT11(*puVar7,*puVar5) < uVar9) goto LAB_0004602c;\n  }" { (while_statement "while( true ) {\n      uVar8 = (ushort)(uVar3 << 8) | uVar8;\n      iVar4 = (int)(short)uVar8;\n      uVar17 = (uint)uVar8;\n      if (uVar9 <= uVar17) break;\n      if (uVar17 <= uVar11 + 3) {\n        if (uVar17 != 0) {\n          iVar4 = sqlite3CorruptError(0x102ac);\n          return iVar4;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)puVar12[uVar17];\n      uVar8 = (ushort)(puVar12 + uVar17)[1];\n      uVar11 = uVar17;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar8 = (ushort)(uVar3 << 8) | uVar8;\n      iVar4 = (int)(short)uVar8;\n      uVar17 = (uint)uVar8;\n      if (uVar9 <= uVar17) break;\n      if (uVar17 <= uVar11 + 3) {\n        if (uVar17 != 0) {\n          iVar4 = sqlite3CorruptError(0x102ac);\n          return iVar4;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)puVar12[uVar17];\n      uVar8 = (ushort)(puVar12 + uVar17)[1];\n      uVar11 = uVar17;\n    }" { (expression_statement "uVar8 = (ushort)(uVar3 << 8) | uVar8;" (assignment_expression "uVar8 = (ushort)(uVar3 << 8) | uVar8" identifier = (binary_expression "(ushort)(uVar3 << 8) | uVar8" (call_expression "(ushort)(uVar3 << 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 << 8)" ( (binary_expression "uVar3 << 8" identifier << number_literal) ))) | identifier)) ;) (expression_statement "iVar4 = (int)(short)uVar8;" (assignment_expression "iVar4 = (int)(short)uVar8" identifier = (cast_expression "(int)(short)uVar8" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)uVar8" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) (expression_statement "uVar17 = (uint)uVar8;" (assignment_expression "uVar17 = (uint)uVar8" identifier = (cast_expression "(uint)uVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar9 <= uVar17) break;" if (parenthesized_expression "(uVar9 <= uVar17)" ( (binary_expression "uVar9 <= uVar17" identifier <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (uVar17 <= uVar11 + 3) {\n        if (uVar17 != 0) {\n          iVar4 = sqlite3CorruptError(0x102ac);\n          return iVar4;\n        }\n        goto LAB_00045f90;\n      }" if (parenthesized_expression "(uVar17 <= uVar11 + 3)" ( (binary_expression "uVar17 <= uVar11 + 3" identifier <= (binary_expression "uVar11 + 3" identifier + number_literal)) )) (compound_statement "{\n        if (uVar17 != 0) {\n          iVar4 = sqlite3CorruptError(0x102ac);\n          return iVar4;\n        }\n        goto LAB_00045f90;\n      }" { (if_statement "if (uVar17 != 0) {\n          iVar4 = sqlite3CorruptError(0x102ac);\n          return iVar4;\n        }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar4 = sqlite3CorruptError(0x102ac);\n          return iVar4;\n        }" { (expression_statement "iVar4 = sqlite3CorruptError(0x102ac);" (assignment_expression "iVar4 = sqlite3CorruptError(0x102ac)" identifier = (call_expression "sqlite3CorruptError(0x102ac)" identifier (argument_list "(0x102ac)" ( number_literal )))) ;) (return_statement "return iVar4;" return identifier ;) })) (goto_statement "goto LAB_00045f90;" goto statement_identifier ;) })) (expression_statement "uVar3 = (uint)puVar12[uVar17];" (assignment_expression "uVar3 = (uint)puVar12[uVar17]" identifier = (cast_expression "(uint)puVar12[uVar17]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar12[uVar17]" identifier [ identifier ]))) ;) (expression_statement "uVar8 = (ushort)(puVar12 + uVar17)[1];" (assignment_expression "uVar8 = (ushort)(puVar12 + uVar17)[1]" identifier = (subscript_expression "(ushort)(puVar12 + uVar17)[1]" (call_expression "(ushort)(puVar12 + uVar17)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(puVar12 + uVar17)" ( (binary_expression "puVar12 + uVar17" identifier + identifier) ))) [ number_literal ])) ;) (expression_statement "uVar11 = uVar17;" (assignment_expression "uVar11 = uVar17" identifier = identifier) ;) })) (expression_statement "uVar3 = pPage->pBt->usableSize;" (assignment_expression "uVar3 = pPage->pBt->usableSize" identifier = (field_expression "pPage->pBt->usableSize" (field_expression "pPage->pBt" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (uVar3 - 4 < uVar17) {\n      lineno = &DAT_000102b1;\n      goto LAB_000460a4;\n    }" if (parenthesized_expression "(uVar3 - 4 < uVar17)" ( (binary_expression "uVar3 - 4 < uVar17" (binary_expression "uVar3 - 4" identifier - number_literal) < identifier) )) (compound_statement "{\n      lineno = &DAT_000102b1;\n      goto LAB_000460a4;\n    }" { (expression_statement "lineno = &DAT_000102b1;" (assignment_expression "lineno = &DAT_000102b1" identifier = (pointer_expression "&DAT_000102b1" & identifier)) ;) (goto_statement "goto LAB_000460a4;" goto statement_identifier ;) })) (if_statement "if (uVar17 == 0) {\nLAB_00045f90:\n      uVar6 = 0;\n    }\n    else {\n      uVar6 = 0;\n      if (uVar17 <= uVar14 + 3) {\n        if (uVar17 < uVar14) {\n          lineno = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar15 = *(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17;\n        if (uVar3 < uVar15) {\n          lineno = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar8 = *(ushort *)(puVar12 + uVar17);\n        uVar6 = iVar4 - uVar14 & 0xff;\n        uVar14 = uVar15;\n        uVar15 = uVar15 - uVar9 & 0xffff;\n      }\n    }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00045f90:\n      uVar6 = 0;\n    }" { (labeled_statement "LAB_00045f90:\n      uVar6 = 0;" statement_identifier : (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n      uVar6 = 0;\n      if (uVar17 <= uVar14 + 3) {\n        if (uVar17 < uVar14) {\n          lineno = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar15 = *(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17;\n        if (uVar3 < uVar15) {\n          lineno = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar8 = *(ushort *)(puVar12 + uVar17);\n        uVar6 = iVar4 - uVar14 & 0xff;\n        uVar14 = uVar15;\n        uVar15 = uVar15 - uVar9 & 0xffff;\n      }\n    }" else (compound_statement "{\n      uVar6 = 0;\n      if (uVar17 <= uVar14 + 3) {\n        if (uVar17 < uVar14) {\n          lineno = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar15 = *(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17;\n        if (uVar3 < uVar15) {\n          lineno = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar8 = *(ushort *)(puVar12 + uVar17);\n        uVar6 = iVar4 - uVar14 & 0xff;\n        uVar14 = uVar15;\n        uVar15 = uVar15 - uVar9 & 0xffff;\n      }\n    }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (if_statement "if (uVar17 <= uVar14 + 3) {\n        if (uVar17 < uVar14) {\n          lineno = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar15 = *(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17;\n        if (uVar3 < uVar15) {\n          lineno = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar8 = *(ushort *)(puVar12 + uVar17);\n        uVar6 = iVar4 - uVar14 & 0xff;\n        uVar14 = uVar15;\n        uVar15 = uVar15 - uVar9 & 0xffff;\n      }" if (parenthesized_expression "(uVar17 <= uVar14 + 3)" ( (binary_expression "uVar17 <= uVar14 + 3" identifier <= (binary_expression "uVar14 + 3" identifier + number_literal)) )) (compound_statement "{\n        if (uVar17 < uVar14) {\n          lineno = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar15 = *(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17;\n        if (uVar3 < uVar15) {\n          lineno = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar8 = *(ushort *)(puVar12 + uVar17);\n        uVar6 = iVar4 - uVar14 & 0xff;\n        uVar14 = uVar15;\n        uVar15 = uVar15 - uVar9 & 0xffff;\n      }" { (if_statement "if (uVar17 < uVar14) {\n          lineno = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }" if (parenthesized_expression "(uVar17 < uVar14)" ( (binary_expression "uVar17 < uVar14" identifier < identifier) )) (compound_statement "{\n          lineno = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }" { (expression_statement "lineno = (undefined *)0x102bd;" (assignment_expression "lineno = (undefined *)0x102bd" identifier = (cast_expression "(undefined *)0x102bd" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000460a4;" goto statement_identifier ;) })) (expression_statement "uVar15 = *(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17;" (assignment_expression "uVar15 = *(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17" identifier = (binary_expression "*(ushort *)((int)(puVar12 + uVar17) + 2) + uVar17" (pointer_expression "*(ushort *)((int)(puVar12 + uVar17) + 2)" * (cast_expression "(ushort *)((int)(puVar12 + uVar17) + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(puVar12 + uVar17) + 2)" ( (binary_expression "(int)(puVar12 + uVar17) + 2" (cast_expression "(int)(puVar12 + uVar17)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar12 + uVar17)" ( (binary_expression "puVar12 + uVar17" identifier + identifier) ))) + number_literal) )))) + identifier)) ;) (if_statement "if (uVar3 < uVar15) {\n          lineno = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }" if (parenthesized_expression "(uVar3 < uVar15)" ( (binary_expression "uVar3 < uVar15" identifier < identifier) )) (compound_statement "{\n          lineno = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }" { (expression_statement "lineno = (undefined *)0x102c0;" (assignment_expression "lineno = (undefined *)0x102c0" identifier = (cast_expression "(undefined *)0x102c0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000460a4;" goto statement_identifier ;) })) (expression_statement "uVar8 = *(ushort *)(puVar12 + uVar17);" (assignment_expression "uVar8 = *(ushort *)(puVar12 + uVar17)" identifier = (pointer_expression "*(ushort *)(puVar12 + uVar17)" * (cast_expression "(ushort *)(puVar12 + uVar17)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + uVar17)" ( (binary_expression "puVar12 + uVar17" identifier + identifier) ))))) ;) (expression_statement "uVar6 = iVar4 - uVar14 & 0xff;" (assignment_expression "uVar6 = iVar4 - uVar14 & 0xff" identifier = (binary_expression "iVar4 - uVar14 & 0xff" (binary_expression "iVar4 - uVar14" identifier - identifier) & number_literal)) ;) (expression_statement "uVar14 = uVar15;" (assignment_expression "uVar14 = uVar15" identifier = identifier) ;) (expression_statement "uVar15 = uVar15 - uVar9 & 0xffff;" (assignment_expression "uVar15 = uVar15 - uVar9 & 0xffff" identifier = (binary_expression "uVar15 - uVar9 & 0xffff" (binary_expression "uVar15 - uVar9" identifier - identifier) & number_literal)) ;) })) }))) (if_statement "if (uVar16 < uVar11) {\n      iVar4 = *(ushort *)(puVar12 + uVar11 + 2) + uVar11;\n      if ((int)uVar9 <= iVar4 + 3) {\n        if ((int)uVar9 < iVar4) {\n          lineno = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar15 = uVar14 - uVar11 & 0xffff;\n        uVar6 = (uVar6 + uVar9) - iVar4 & 0xff;\n        uVar9 = uVar11;\n      }\n    }" if (parenthesized_expression "(uVar16 < uVar11)" ( (binary_expression "uVar16 < uVar11" identifier < identifier) )) (compound_statement "{\n      iVar4 = *(ushort *)(puVar12 + uVar11 + 2) + uVar11;\n      if ((int)uVar9 <= iVar4 + 3) {\n        if ((int)uVar9 < iVar4) {\n          lineno = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar15 = uVar14 - uVar11 & 0xffff;\n        uVar6 = (uVar6 + uVar9) - iVar4 & 0xff;\n        uVar9 = uVar11;\n      }\n    }" { (expression_statement "iVar4 = *(ushort *)(puVar12 + uVar11 + 2) + uVar11;" (assignment_expression "iVar4 = *(ushort *)(puVar12 + uVar11 + 2) + uVar11" identifier = (binary_expression "*(ushort *)(puVar12 + uVar11 + 2) + uVar11" (pointer_expression "*(ushort *)(puVar12 + uVar11 + 2)" * (cast_expression "(ushort *)(puVar12 + uVar11 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + uVar11 + 2)" ( (binary_expression "puVar12 + uVar11 + 2" (binary_expression "puVar12 + uVar11" identifier + identifier) + number_literal) )))) + identifier)) ;) (if_statement "if ((int)uVar9 <= iVar4 + 3) {\n        if ((int)uVar9 < iVar4) {\n          lineno = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar15 = uVar14 - uVar11 & 0xffff;\n        uVar6 = (uVar6 + uVar9) - iVar4 & 0xff;\n        uVar9 = uVar11;\n      }" if (parenthesized_expression "((int)uVar9 <= iVar4 + 3)" ( (binary_expression "(int)uVar9 <= iVar4 + 3" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) <= (binary_expression "iVar4 + 3" identifier + number_literal)) )) (compound_statement "{\n        if ((int)uVar9 < iVar4) {\n          lineno = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar15 = uVar14 - uVar11 & 0xffff;\n        uVar6 = (uVar6 + uVar9) - iVar4 & 0xff;\n        uVar9 = uVar11;\n      }" { (if_statement "if ((int)uVar9 < iVar4) {\n          lineno = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }" if (parenthesized_expression "((int)uVar9 < iVar4)" ( (binary_expression "(int)uVar9 < iVar4" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n          lineno = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }" { (expression_statement "lineno = (undefined *)0x102cd;" (assignment_expression "lineno = (undefined *)0x102cd" identifier = (cast_expression "(undefined *)0x102cd" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000460a4;" goto statement_identifier ;) })) (expression_statement "uVar15 = uVar14 - uVar11 & 0xffff;" (assignment_expression "uVar15 = uVar14 - uVar11 & 0xffff" identifier = (binary_expression "uVar14 - uVar11 & 0xffff" (binary_expression "uVar14 - uVar11" identifier - identifier) & number_literal)) ;) (expression_statement "uVar6 = (uVar6 + uVar9) - iVar4 & 0xff;" (assignment_expression "uVar6 = (uVar6 + uVar9) - iVar4 & 0xff" identifier = (binary_expression "(uVar6 + uVar9) - iVar4 & 0xff" (binary_expression "(uVar6 + uVar9) - iVar4" (parenthesized_expression "(uVar6 + uVar9)" ( (binary_expression "uVar6 + uVar9" identifier + identifier) )) - identifier) & number_literal)) ;) (expression_statement "uVar9 = uVar11;" (assignment_expression "uVar9 = uVar11" identifier = identifier) ;) })) })) (expression_statement "bVar1 = puVar12[uVar13 + 7];" (assignment_expression "bVar1 = puVar12[uVar13 + 7]" identifier = (subscript_expression "puVar12[uVar13 + 7]" identifier [ (binary_expression "uVar13 + 7" identifier + number_literal) ])) ;) (if_statement "if (bVar1 < uVar6) {\n      iVar4 = sqlite3CorruptError(0x102d3);\n      return iVar4;\n    }" if (parenthesized_expression "(bVar1 < uVar6)" ( (binary_expression "bVar1 < uVar6" identifier < identifier) )) (compound_statement "{\n      iVar4 = sqlite3CorruptError(0x102d3);\n      return iVar4;\n    }" { (expression_statement "iVar4 = sqlite3CorruptError(0x102d3);" (assignment_expression "iVar4 = sqlite3CorruptError(0x102d3)" identifier = (call_expression "sqlite3CorruptError(0x102d3)" identifier (argument_list "(0x102d3)" ( number_literal )))) ;) (return_statement "return iVar4;" return identifier ;) })) (expression_statement "puVar12[uVar13 + 7] = bVar1 - (char)uVar6;" (assignment_expression "puVar12[uVar13 + 7] = bVar1 - (char)uVar6" (subscript_expression "puVar12[uVar13 + 7]" identifier [ (binary_expression "uVar13 + 7" identifier + number_literal) ]) = (binary_expression "bVar1 - (char)uVar6" identifier - (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "puVar7 = puVar12 + uVar13 + 5;" (assignment_expression "puVar7 = puVar12 + uVar13 + 5" identifier = (binary_expression "puVar12 + uVar13 + 5" (binary_expression "puVar12 + uVar13" identifier + identifier) + number_literal)) ;) (expression_statement "puVar5 = puVar12 + uVar13 + 6;" (assignment_expression "puVar5 = puVar12 + uVar13 + 6" identifier = (binary_expression "puVar12 + uVar13 + 6" (binary_expression "puVar12 + uVar13" identifier + identifier) + number_literal)) ;) (expression_statement "bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5);" (assignment_expression "bVar2 = uVar9 < CONCAT11(*puVar7,*puVar5)" identifier = (binary_expression "uVar9 < CONCAT11(*puVar7,*puVar5)" identifier < (call_expression "CONCAT11(*puVar7,*puVar5)" identifier (argument_list "(*puVar7,*puVar5)" ( (pointer_expression "*puVar7" * identifier) , (pointer_expression "*puVar5" * identifier) ))))) ;) (if_statement "if (CONCAT11(*puVar7,*puVar5) < uVar9) goto LAB_0004602c;" if (parenthesized_expression "(CONCAT11(*puVar7,*puVar5) < uVar9)" ( (binary_expression "CONCAT11(*puVar7,*puVar5) < uVar9" (call_expression "CONCAT11(*puVar7,*puVar5)" identifier (argument_list "(*puVar7,*puVar5)" ( (pointer_expression "*puVar7" * identifier) , (pointer_expression "*puVar5" * identifier) ))) < identifier) )) (goto_statement "goto LAB_0004602c;" goto statement_identifier ;)) }))) (if_statement "if (bVar2) {\n    lineno = (undefined *)0x102db;\n  }\n  else {\n    if (uVar11 == uVar16) {\n      puVar12[uVar13 + 1] = (u8)(uVar8 >> 8);\n      puVar12[uVar13 + 2] = (u8)uVar8;\n      *puVar7 = (u8)(uVar14 >> 8);\n      *puVar5 = (u8)uVar14;\nLAB_00046044:\n      puVar12 = puVar12 + uVar9;\n      if ((pPage->pBt->btsFlags & 0xc) != 0) {\n        puVar12 = (u8 *)(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15);\n      }\n      *puVar12 = (u8)(uVar8 >> 8);\n      puVar12[1] = (u8)uVar8;\n      puVar12[2] = (u8)(uVar15 >> 8);\n      puVar12[3] = (u8)uVar15;\n      pPage->nFree = pPage->nFree + uVar10;\n      return 0;\n    }\n    lineno = (undefined *)0x102dc;\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    lineno = (undefined *)0x102db;\n  }" { (expression_statement "lineno = (undefined *)0x102db;" (assignment_expression "lineno = (undefined *)0x102db" identifier = (cast_expression "(undefined *)0x102db" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    if (uVar11 == uVar16) {\n      puVar12[uVar13 + 1] = (u8)(uVar8 >> 8);\n      puVar12[uVar13 + 2] = (u8)uVar8;\n      *puVar7 = (u8)(uVar14 >> 8);\n      *puVar5 = (u8)uVar14;\nLAB_00046044:\n      puVar12 = puVar12 + uVar9;\n      if ((pPage->pBt->btsFlags & 0xc) != 0) {\n        puVar12 = (u8 *)(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15);\n      }\n      *puVar12 = (u8)(uVar8 >> 8);\n      puVar12[1] = (u8)uVar8;\n      puVar12[2] = (u8)(uVar15 >> 8);\n      puVar12[3] = (u8)uVar15;\n      pPage->nFree = pPage->nFree + uVar10;\n      return 0;\n    }\n    lineno = (undefined *)0x102dc;\n  }" else (compound_statement "{\n    if (uVar11 == uVar16) {\n      puVar12[uVar13 + 1] = (u8)(uVar8 >> 8);\n      puVar12[uVar13 + 2] = (u8)uVar8;\n      *puVar7 = (u8)(uVar14 >> 8);\n      *puVar5 = (u8)uVar14;\nLAB_00046044:\n      puVar12 = puVar12 + uVar9;\n      if ((pPage->pBt->btsFlags & 0xc) != 0) {\n        puVar12 = (u8 *)(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15);\n      }\n      *puVar12 = (u8)(uVar8 >> 8);\n      puVar12[1] = (u8)uVar8;\n      puVar12[2] = (u8)(uVar15 >> 8);\n      puVar12[3] = (u8)uVar15;\n      pPage->nFree = pPage->nFree + uVar10;\n      return 0;\n    }\n    lineno = (undefined *)0x102dc;\n  }" { (if_statement "if (uVar11 == uVar16) {\n      puVar12[uVar13 + 1] = (u8)(uVar8 >> 8);\n      puVar12[uVar13 + 2] = (u8)uVar8;\n      *puVar7 = (u8)(uVar14 >> 8);\n      *puVar5 = (u8)uVar14;\nLAB_00046044:\n      puVar12 = puVar12 + uVar9;\n      if ((pPage->pBt->btsFlags & 0xc) != 0) {\n        puVar12 = (u8 *)(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15);\n      }\n      *puVar12 = (u8)(uVar8 >> 8);\n      puVar12[1] = (u8)uVar8;\n      puVar12[2] = (u8)(uVar15 >> 8);\n      puVar12[3] = (u8)uVar15;\n      pPage->nFree = pPage->nFree + uVar10;\n      return 0;\n    }" if (parenthesized_expression "(uVar11 == uVar16)" ( (binary_expression "uVar11 == uVar16" identifier == identifier) )) (compound_statement "{\n      puVar12[uVar13 + 1] = (u8)(uVar8 >> 8);\n      puVar12[uVar13 + 2] = (u8)uVar8;\n      *puVar7 = (u8)(uVar14 >> 8);\n      *puVar5 = (u8)uVar14;\nLAB_00046044:\n      puVar12 = puVar12 + uVar9;\n      if ((pPage->pBt->btsFlags & 0xc) != 0) {\n        puVar12 = (u8 *)(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15);\n      }\n      *puVar12 = (u8)(uVar8 >> 8);\n      puVar12[1] = (u8)uVar8;\n      puVar12[2] = (u8)(uVar15 >> 8);\n      puVar12[3] = (u8)uVar15;\n      pPage->nFree = pPage->nFree + uVar10;\n      return 0;\n    }" { (expression_statement "puVar12[uVar13 + 1] = (u8)(uVar8 >> 8);" (assignment_expression "puVar12[uVar13 + 1] = (u8)(uVar8 >> 8)" (subscript_expression "puVar12[uVar13 + 1]" identifier [ (binary_expression "uVar13 + 1" identifier + number_literal) ]) = (call_expression "(u8)(uVar8 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar8 >> 8)" ( (binary_expression "uVar8 >> 8" identifier >> number_literal) )))) ;) (expression_statement "puVar12[uVar13 + 2] = (u8)uVar8;" (assignment_expression "puVar12[uVar13 + 2] = (u8)uVar8" (subscript_expression "puVar12[uVar13 + 2]" identifier [ (binary_expression "uVar13 + 2" identifier + number_literal) ]) = (cast_expression "(u8)uVar8" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "*puVar7 = (u8)(uVar14 >> 8);" (assignment_expression "*puVar7 = (u8)(uVar14 >> 8)" (pointer_expression "*puVar7" * identifier) = (call_expression "(u8)(uVar14 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar14 >> 8)" ( (binary_expression "uVar14 >> 8" identifier >> number_literal) )))) ;) (expression_statement "*puVar5 = (u8)uVar14;" (assignment_expression "*puVar5 = (u8)uVar14" (pointer_expression "*puVar5" * identifier) = (cast_expression "(u8)uVar14" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (labeled_statement "LAB_00046044:\n      puVar12 = puVar12 + uVar9;" statement_identifier : (expression_statement "puVar12 = puVar12 + uVar9;" (assignment_expression "puVar12 = puVar12 + uVar9" identifier = (binary_expression "puVar12 + uVar9" identifier + identifier)) ;)) (if_statement "if ((pPage->pBt->btsFlags & 0xc) != 0) {\n        puVar12 = (u8 *)(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15);\n      }" if (parenthesized_expression "((pPage->pBt->btsFlags & 0xc) != 0)" ( (binary_expression "(pPage->pBt->btsFlags & 0xc) != 0" (parenthesized_expression "(pPage->pBt->btsFlags & 0xc)" ( (binary_expression "pPage->pBt->btsFlags & 0xc" (field_expression "pPage->pBt->btsFlags" (field_expression "pPage->pBt" identifier -> field_identifier) -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        puVar12 = (u8 *)(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15);\n      }" { (expression_statement "puVar12 = (u8 *)(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15);" (assignment_expression "puVar12 = (u8 *)(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15)" identifier = (cast_expression "(u8 *)(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15)" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memset_000f5450)(puVar12,0,uVar15)" (parenthesized_expression "(*(code *)PTR_memset_000f5450)" ( (pointer_expression "*(code *)PTR_memset_000f5450" * (cast_expression "(code *)PTR_memset_000f5450" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar12,0,uVar15)" ( identifier , number_literal , identifier ))))) ;) })) (expression_statement "*puVar12 = (u8)(uVar8 >> 8);" (assignment_expression "*puVar12 = (u8)(uVar8 >> 8)" (pointer_expression "*puVar12" * identifier) = (call_expression "(u8)(uVar8 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar8 >> 8)" ( (binary_expression "uVar8 >> 8" identifier >> number_literal) )))) ;) (expression_statement "puVar12[1] = (u8)uVar8;" (assignment_expression "puVar12[1] = (u8)uVar8" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = (cast_expression "(u8)uVar8" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "puVar12[2] = (u8)(uVar15 >> 8);" (assignment_expression "puVar12[2] = (u8)(uVar15 >> 8)" (subscript_expression "puVar12[2]" identifier [ number_literal ]) = (call_expression "(u8)(uVar15 >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "(uVar15 >> 8)" ( (binary_expression "uVar15 >> 8" identifier >> number_literal) )))) ;) (expression_statement "puVar12[3] = (u8)uVar15;" (assignment_expression "puVar12[3] = (u8)uVar15" (subscript_expression "puVar12[3]" identifier [ number_literal ]) = (cast_expression "(u8)uVar15" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "pPage->nFree = pPage->nFree + uVar10;" (assignment_expression "pPage->nFree = pPage->nFree + uVar10" (field_expression "pPage->nFree" identifier -> field_identifier) = (binary_expression "pPage->nFree + uVar10" (field_expression "pPage->nFree" identifier -> field_identifier) + identifier)) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "lineno = (undefined *)0x102dc;" (assignment_expression "lineno = (undefined *)0x102dc" identifier = (cast_expression "(undefined *)0x102dc" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_000460a4:\n  iVar4 = sqlite3CorruptError((int)lineno);" statement_identifier : (expression_statement "iVar4 = sqlite3CorruptError((int)lineno);" (assignment_expression "iVar4 = sqlite3CorruptError((int)lineno)" identifier = (call_expression "sqlite3CorruptError((int)lineno)" identifier (argument_list "((int)lineno)" ( (cast_expression "(int)lineno" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;)) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit "undefined4 FUN_00045e10(int param_1,uint param_2,uint param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  ushort uVar11;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  iVar13 = *(int *)(param_1 + 0x38);\n  uVar15 = param_2 + param_3;\n  uVar14 = (uint)*(byte *)(param_1 + 9);\n  uVar17 = uVar14 + 1;\n  uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1];\n  uVar3 = (uint)*(byte *)(iVar13 + uVar17);\n  uVar12 = uVar17;\n  uVar16 = param_3;\n  if ((uVar11 == 0) && (uVar3 == 0)) {\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    uVar11 = 0;\n    if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n  }\n  else {\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }\n  if (bVar2) {\n    puVar10 = (undefined *)0x102db;\n  }\n  else {\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }\nLAB_000460a4:\n  uVar6 = FUN_00044904(puVar10);\n  return uVar6;\n}\n\n" (function_definition "undefined4 FUN_00045e10(int param_1,uint param_2,uint param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  ushort uVar11;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  iVar13 = *(int *)(param_1 + 0x38);\n  uVar15 = param_2 + param_3;\n  uVar14 = (uint)*(byte *)(param_1 + 9);\n  uVar17 = uVar14 + 1;\n  uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1];\n  uVar3 = (uint)*(byte *)(iVar13 + uVar17);\n  uVar12 = uVar17;\n  uVar16 = param_3;\n  if ((uVar11 == 0) && (uVar3 == 0)) {\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    uVar11 = 0;\n    if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n  }\n  else {\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }\n  if (bVar2) {\n    puVar10 = (undefined *)0x102db;\n  }\n  else {\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }\nLAB_000460a4:\n  uVar6 = FUN_00044904(puVar10);\n  return uVar6;\n}" type_identifier (function_declarator "FUN_00045e10(int param_1,uint param_2,uint param_3)" identifier (parameter_list "(int param_1,uint param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  ushort uVar11;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  iVar13 = *(int *)(param_1 + 0x38);\n  uVar15 = param_2 + param_3;\n  uVar14 = (uint)*(byte *)(param_1 + 9);\n  uVar17 = uVar14 + 1;\n  uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1];\n  uVar3 = (uint)*(byte *)(iVar13 + uVar17);\n  uVar12 = uVar17;\n  uVar16 = param_3;\n  if ((uVar11 == 0) && (uVar3 == 0)) {\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    uVar11 = 0;\n    if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n  }\n  else {\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }\n  if (bVar2) {\n    puVar10 = (undefined *)0x102db;\n  }\n  else {\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }\nLAB_000460a4:\n  uVar6 = FUN_00044904(puVar10);\n  return uVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "ushort uVar11;" type_identifier identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (expression_statement "iVar13 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x38)" identifier = (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = param_2 + param_3;" (assignment_expression "uVar15 = param_2 + param_3" identifier = (binary_expression "param_2 + param_3" identifier + identifier)) ;) (expression_statement "uVar14 = (uint)*(byte *)(param_1 + 9);" (assignment_expression "uVar14 = (uint)*(byte *)(param_1 + 9)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = uVar14 + 1;" (assignment_expression "uVar17 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1];" (assignment_expression "uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1]" identifier = (subscript_expression "(ushort)((byte *)(iVar13 + uVar17))[1]" (call_expression "(ushort)((byte *)(iVar13 + uVar17))" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((byte *)(iVar13 + uVar17))" ( (cast_expression "(byte *)(iVar13 + uVar17)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar17)" ( (binary_expression "iVar13 + uVar17" identifier + identifier) ))) ))) [ number_literal ])) ;) (expression_statement "uVar3 = (uint)*(byte *)(iVar13 + uVar17);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar13 + uVar17)" identifier = (binary_expression "(uint)*(byte *)(iVar13 + uVar17)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar13 + uVar17)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar17)" ( (binary_expression "iVar13 + uVar17" identifier + identifier) ))))) ;) (expression_statement "uVar12 = uVar17;" (assignment_expression "uVar12 = uVar17" identifier = identifier) ;) (expression_statement "uVar16 = param_3;" (assignment_expression "uVar16 = param_3" identifier = identifier) ;) (if_statement "if ((uVar11 == 0) && (uVar3 == 0)) {\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    uVar11 = 0;\n    if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n  }\n  else {\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }" if (parenthesized_expression "((uVar11 == 0) && (uVar3 == 0))" ( (binary_expression "(uVar11 == 0) && (uVar3 == 0)" (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    uVar11 = 0;\n    if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n  }" { (expression_statement "puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);" (assignment_expression "puVar9 = (undefined1 *)(iVar13 + uVar14 + 5)" identifier = (cast_expression "(undefined1 *)(iVar13 + uVar14 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar14 + 5)" ( (binary_expression "iVar13 + uVar14 + 5" (binary_expression "iVar13 + uVar14" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);" (assignment_expression "puVar7 = (undefined1 *)(iVar13 + uVar14 + 6)" identifier = (cast_expression "(undefined1 *)(iVar13 + uVar14 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar14 + 6)" ( (binary_expression "iVar13 + uVar14 + 6" (binary_expression "iVar13 + uVar14" identifier + identifier) + number_literal) )))) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }" if (parenthesized_expression "(CONCAT11(*puVar9,*puVar7) < param_2)" ( (binary_expression "CONCAT11(*puVar9,*puVar7) < param_2" (call_expression "CONCAT11(*puVar9,*puVar7)" identifier (argument_list "(*puVar9,*puVar7)" ( (pointer_expression "*puVar9" * identifier) , (pointer_expression "*puVar7" * identifier) ))) < identifier) )) (compound_statement "{\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }" { (labeled_statement "LAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);" statement_identifier : (expression_statement "*(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);" (assignment_expression "*(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8)" (pointer_expression "*(undefined1 *)(iVar13 + uVar12)" * (cast_expression "(undefined1 *)(iVar13 + uVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar12)" ( (binary_expression "iVar13 + uVar12" identifier + identifier) )))) = (cast_expression "(char)(param_2 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(param_2 >> 8)" ( (binary_expression "param_2 >> 8" identifier >> number_literal) )))) ;)) (expression_statement "((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;" (assignment_expression "((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2" (subscript_expression "((undefined1 *)(iVar13 + uVar12))[1]" (parenthesized_expression "((undefined1 *)(iVar13 + uVar12))" ( (cast_expression "(undefined1 *)(iVar13 + uVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar12)" ( (binary_expression "iVar13 + uVar12" identifier + identifier) ))) )) [ number_literal ]) = (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00046044;" goto statement_identifier ;) })) (expression_statement "bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);" (assignment_expression "bVar2 = param_2 < CONCAT11(*puVar9,*puVar7)" identifier = (binary_expression "param_2 < CONCAT11(*puVar9,*puVar7)" identifier < (call_expression "CONCAT11(*puVar9,*puVar7)" identifier (argument_list "(*puVar9,*puVar7)" ( (pointer_expression "*puVar9" * identifier) , (pointer_expression "*puVar7" * identifier) ))))) ;) }) (else_clause "else {\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }" else (compound_statement "{\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }" { (while_statement "while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }" { (expression_statement "uVar11 = (ushort)(uVar3 << 8) | uVar11;" (assignment_expression "uVar11 = (ushort)(uVar3 << 8) | uVar11" identifier = (binary_expression "(ushort)(uVar3 << 8) | uVar11" (call_expression "(ushort)(uVar3 << 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 << 8)" ( (binary_expression "uVar3 << 8" identifier << number_literal) ))) | identifier)) ;) (expression_statement "iVar4 = (int)(short)uVar11;" (assignment_expression "iVar4 = (int)(short)uVar11" identifier = (cast_expression "(int)(short)uVar11" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)uVar11" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) (expression_statement "uVar18 = (uint)uVar11;" (assignment_expression "uVar18 = (uint)uVar11" identifier = (cast_expression "(uint)uVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (param_2 <= uVar18) break;" if (parenthesized_expression "(param_2 <= uVar18)" ( (binary_expression "param_2 <= uVar18" identifier <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }" if (parenthesized_expression "(uVar18 <= uVar12 + 3)" ( (binary_expression "uVar18 <= uVar12 + 3" identifier <= (binary_expression "uVar12 + 3" identifier + number_literal)) )) (compound_statement "{\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }" { (if_statement "if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }" if (parenthesized_expression "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }" { (expression_statement "uVar6 = FUN_00044904(&DAT_000102ac);" (assignment_expression "uVar6 = FUN_00044904(&DAT_000102ac)" identifier = (call_expression "FUN_00044904(&DAT_000102ac)" identifier (argument_list "(&DAT_000102ac)" ( (pointer_expression "&DAT_000102ac" & identifier) )))) ;) (return_statement "return uVar6;" return identifier ;) })) (goto_statement "goto LAB_00045f90;" goto statement_identifier ;) })) (expression_statement "uVar3 = (uint)*(byte *)(iVar13 + uVar18);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar13 + uVar18)" identifier = (binary_expression "(uint)*(byte *)(iVar13 + uVar18)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar13 + uVar18)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar18)" ( (binary_expression "iVar13 + uVar18" identifier + identifier) ))))) ;) (expression_statement "uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];" (assignment_expression "uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1]" identifier = (subscript_expression "(ushort)((byte *)(iVar13 + uVar18))[1]" (call_expression "(ushort)((byte *)(iVar13 + uVar18))" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((byte *)(iVar13 + uVar18))" ( (cast_expression "(byte *)(iVar13 + uVar18)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar18)" ( (binary_expression "iVar13 + uVar18" identifier + identifier) ))) ))) [ number_literal ])) ;) (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);" (assignment_expression "uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28)" identifier = (pointer_expression "*(uint *)(*(int *)(param_1 + 0x34) + 0x28)" * (cast_expression "(uint *)(*(int *)(param_1 + 0x34) + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x34) + 0x28)" ( (binary_expression "*(int *)(param_1 + 0x34) + 0x28" (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }" if (parenthesized_expression "(uVar3 - 4 < uVar18)" ( (binary_expression "uVar3 - 4 < uVar18" (binary_expression "uVar3 - 4" identifier - number_literal) < identifier) )) (compound_statement "{\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }" { (expression_statement "puVar10 = &DAT_000102b1;" (assignment_expression "puVar10 = &DAT_000102b1" identifier = (pointer_expression "&DAT_000102b1" & identifier)) ;) (goto_statement "goto LAB_000460a4;" goto statement_identifier ;) })) (if_statement "if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00045f90:\n      uVar8 = 0;\n    }" { (labeled_statement "LAB_00045f90:\n      uVar8 = 0;" statement_identifier : (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }" else (compound_statement "{\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }" if (parenthesized_expression "(uVar18 <= uVar15 + 3)" ( (binary_expression "uVar18 <= uVar15 + 3" identifier <= (binary_expression "uVar15 + 3" identifier + number_literal)) )) (compound_statement "{\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }" { (if_statement "if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }" if (parenthesized_expression "(uVar18 < uVar15)" ( (binary_expression "uVar18 < uVar15" identifier < identifier) )) (compound_statement "{\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }" { (expression_statement "puVar10 = (undefined *)0x102bd;" (assignment_expression "puVar10 = (undefined *)0x102bd" identifier = (cast_expression "(undefined *)0x102bd" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000460a4;" goto statement_identifier ;) })) (expression_statement "uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;" (assignment_expression "uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18" identifier = (binary_expression "((ushort *)(iVar13 + uVar18))[1] + uVar18" (subscript_expression "((ushort *)(iVar13 + uVar18))[1]" (parenthesized_expression "((ushort *)(iVar13 + uVar18))" ( (cast_expression "(ushort *)(iVar13 + uVar18)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar18)" ( (binary_expression "iVar13 + uVar18" identifier + identifier) ))) )) [ number_literal ]) + identifier)) ;) (if_statement "if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }" if (parenthesized_expression "(uVar3 < uVar16)" ( (binary_expression "uVar3 < uVar16" identifier < identifier) )) (compound_statement "{\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }" { (expression_statement "puVar10 = (undefined *)0x102c0;" (assignment_expression "puVar10 = (undefined *)0x102c0" identifier = (cast_expression "(undefined *)0x102c0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000460a4;" goto statement_identifier ;) })) (expression_statement "uVar11 = *(ushort *)(iVar13 + uVar18);" (assignment_expression "uVar11 = *(ushort *)(iVar13 + uVar18)" identifier = (pointer_expression "*(ushort *)(iVar13 + uVar18)" * (cast_expression "(ushort *)(iVar13 + uVar18)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar18)" ( (binary_expression "iVar13 + uVar18" identifier + identifier) ))))) ;) (expression_statement "uVar8 = iVar4 - uVar15 & 0xff;" (assignment_expression "uVar8 = iVar4 - uVar15 & 0xff" identifier = (binary_expression "iVar4 - uVar15 & 0xff" (binary_expression "iVar4 - uVar15" identifier - identifier) & number_literal)) ;) (expression_statement "uVar15 = uVar16;" (assignment_expression "uVar15 = uVar16" identifier = identifier) ;) (expression_statement "uVar16 = uVar16 - param_2 & 0xffff;" (assignment_expression "uVar16 = uVar16 - param_2 & 0xffff" identifier = (binary_expression "uVar16 - param_2 & 0xffff" (binary_expression "uVar16 - param_2" identifier - identifier) & number_literal)) ;) })) }))) (if_statement "if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }" if (parenthesized_expression "(uVar17 < uVar12)" ( (binary_expression "uVar17 < uVar12" identifier < identifier) )) (compound_statement "{\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }" { (expression_statement "iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;" (assignment_expression "iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12" identifier = (binary_expression "*(ushort *)(iVar13 + uVar12 + 2) + uVar12" (pointer_expression "*(ushort *)(iVar13 + uVar12 + 2)" * (cast_expression "(ushort *)(iVar13 + uVar12 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar12 + 2)" ( (binary_expression "iVar13 + uVar12 + 2" (binary_expression "iVar13 + uVar12" identifier + identifier) + number_literal) )))) + identifier)) ;) (if_statement "if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }" if (parenthesized_expression "((int)param_2 <= iVar4 + 3)" ( (binary_expression "(int)param_2 <= iVar4 + 3" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) <= (binary_expression "iVar4 + 3" identifier + number_literal)) )) (compound_statement "{\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }" { (if_statement "if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }" if (parenthesized_expression "((int)param_2 < iVar4)" ( (binary_expression "(int)param_2 < iVar4" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }" { (expression_statement "puVar10 = (undefined *)0x102cd;" (assignment_expression "puVar10 = (undefined *)0x102cd" identifier = (cast_expression "(undefined *)0x102cd" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000460a4;" goto statement_identifier ;) })) (expression_statement "uVar16 = uVar15 - uVar12 & 0xffff;" (assignment_expression "uVar16 = uVar15 - uVar12 & 0xffff" identifier = (binary_expression "uVar15 - uVar12 & 0xffff" (binary_expression "uVar15 - uVar12" identifier - identifier) & number_literal)) ;) (expression_statement "uVar8 = (uVar8 + param_2) - iVar4 & 0xff;" (assignment_expression "uVar8 = (uVar8 + param_2) - iVar4 & 0xff" identifier = (binary_expression "(uVar8 + param_2) - iVar4 & 0xff" (binary_expression "(uVar8 + param_2) - iVar4" (parenthesized_expression "(uVar8 + param_2)" ( (binary_expression "uVar8 + param_2" identifier + identifier) )) - identifier) & number_literal)) ;) (expression_statement "param_2 = uVar12;" (assignment_expression "param_2 = uVar12" identifier = identifier) ;) })) })) (expression_statement "pbVar5 = (byte *)(iVar13 + uVar14 + 7);" (assignment_expression "pbVar5 = (byte *)(iVar13 + uVar14 + 7)" identifier = (cast_expression "(byte *)(iVar13 + uVar14 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar14 + 7)" ( (binary_expression "iVar13 + uVar14 + 7" (binary_expression "iVar13 + uVar14" identifier + identifier) + number_literal) )))) ;) (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) (if_statement "if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }" if (parenthesized_expression "(bVar1 < uVar8)" ( (binary_expression "bVar1 < uVar8" identifier < identifier) )) (compound_statement "{\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }" { (expression_statement "uVar6 = FUN_00044904(0x102d3);" (assignment_expression "uVar6 = FUN_00044904(0x102d3)" identifier = (call_expression "FUN_00044904(0x102d3)" identifier (argument_list "(0x102d3)" ( number_literal )))) ;) (return_statement "return uVar6;" return identifier ;) })) (expression_statement "*pbVar5 = bVar1 - (char)uVar8;" (assignment_expression "*pbVar5 = bVar1 - (char)uVar8" (pointer_expression "*pbVar5" * identifier) = (binary_expression "bVar1 - (char)uVar8" identifier - (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);" (assignment_expression "puVar9 = (undefined1 *)(iVar13 + uVar14 + 5)" identifier = (cast_expression "(undefined1 *)(iVar13 + uVar14 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar14 + 5)" ( (binary_expression "iVar13 + uVar14 + 5" (binary_expression "iVar13 + uVar14" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);" (assignment_expression "puVar7 = (undefined1 *)(iVar13 + uVar14 + 6)" identifier = (cast_expression "(undefined1 *)(iVar13 + uVar14 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar14 + 6)" ( (binary_expression "iVar13 + uVar14 + 6" (binary_expression "iVar13 + uVar14" identifier + identifier) + number_literal) )))) ;) (expression_statement "bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);" (assignment_expression "bVar2 = param_2 < CONCAT11(*puVar9,*puVar7)" identifier = (binary_expression "param_2 < CONCAT11(*puVar9,*puVar7)" identifier < (call_expression "CONCAT11(*puVar9,*puVar7)" identifier (argument_list "(*puVar9,*puVar7)" ( (pointer_expression "*puVar9" * identifier) , (pointer_expression "*puVar7" * identifier) ))))) ;) (if_statement "if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;" if (parenthesized_expression "(CONCAT11(*puVar9,*puVar7) < param_2)" ( (binary_expression "CONCAT11(*puVar9,*puVar7) < param_2" (call_expression "CONCAT11(*puVar9,*puVar7)" identifier (argument_list "(*puVar9,*puVar7)" ( (pointer_expression "*puVar9" * identifier) , (pointer_expression "*puVar7" * identifier) ))) < identifier) )) (goto_statement "goto LAB_0004602c;" goto statement_identifier ;)) }))) (if_statement "if (bVar2) {\n    puVar10 = (undefined *)0x102db;\n  }\n  else {\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    puVar10 = (undefined *)0x102db;\n  }" { (expression_statement "puVar10 = (undefined *)0x102db;" (assignment_expression "puVar10 = (undefined *)0x102db" identifier = (cast_expression "(undefined *)0x102db" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }" else (compound_statement "{\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }" { (if_statement "if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }" if (parenthesized_expression "(uVar12 == uVar17)" ( (binary_expression "uVar12 == uVar17" identifier == identifier) )) (compound_statement "{\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }" { (expression_statement "*(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);" (assignment_expression "*(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8)" (pointer_expression "*(char *)(iVar13 + uVar14 + 1)" * (cast_expression "(char *)(iVar13 + uVar14 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar14 + 1)" ( (binary_expression "iVar13 + uVar14 + 1" (binary_expression "iVar13 + uVar14" identifier + identifier) + number_literal) )))) = (cast_expression "(char)(uVar11 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar11 >> 8)" ( (binary_expression "uVar11 >> 8" identifier >> number_literal) )))) ;) (expression_statement "*(char *)(iVar13 + uVar14 + 2) = (char)uVar11;" (assignment_expression "*(char *)(iVar13 + uVar14 + 2) = (char)uVar11" (pointer_expression "*(char *)(iVar13 + uVar14 + 2)" * (cast_expression "(char *)(iVar13 + uVar14 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar14 + 2)" ( (binary_expression "iVar13 + uVar14 + 2" (binary_expression "iVar13 + uVar14" identifier + identifier) + number_literal) )))) = (cast_expression "(char)uVar11" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*puVar9 = (char)(uVar15 >> 8);" (assignment_expression "*puVar9 = (char)(uVar15 >> 8)" (pointer_expression "*puVar9" * identifier) = (cast_expression "(char)(uVar15 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar15 >> 8)" ( (binary_expression "uVar15 >> 8" identifier >> number_literal) )))) ;) (expression_statement "*puVar7 = (char)uVar15;" (assignment_expression "*puVar7 = (char)uVar15" (pointer_expression "*puVar7" * identifier) = (cast_expression "(char)uVar15" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (labeled_statement "LAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);" statement_identifier : (expression_statement "puVar7 = (undefined1 *)(iVar13 + param_2);" (assignment_expression "puVar7 = (undefined1 *)(iVar13 + param_2)" identifier = (cast_expression "(undefined1 *)(iVar13 + param_2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + param_2)" ( (binary_expression "iVar13 + param_2" identifier + identifier) )))) ;)) (if_statement "if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }" if (parenthesized_expression "((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0)" ( (binary_expression "(*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0" (parenthesized_expression "(*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc)" ( (binary_expression "*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc" (pointer_expression "*(ushort *)(*(int *)(param_1 + 0x34) + 0x18)" * (cast_expression "(ushort *)(*(int *)(param_1 + 0x34) + 0x18)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x34) + 0x18)" ( (binary_expression "*(int *)(param_1 + 0x34) + 0x18" (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }" { (expression_statement "puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);" (assignment_expression "puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16)" identifier = (cast_expression "(undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16)" (parenthesized_expression "(*(code *)PTR_memset_000f5450)" ( (pointer_expression "*(code *)PTR_memset_000f5450" * (cast_expression "(code *)PTR_memset_000f5450" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar7,0,uVar16)" ( identifier , number_literal , identifier ))))) ;) })) (expression_statement "*puVar7 = (char)(uVar11 >> 8);" (assignment_expression "*puVar7 = (char)(uVar11 >> 8)" (pointer_expression "*puVar7" * identifier) = (cast_expression "(char)(uVar11 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar11 >> 8)" ( (binary_expression "uVar11 >> 8" identifier >> number_literal) )))) ;) (expression_statement "puVar7[1] = (char)uVar11;" (assignment_expression "puVar7[1] = (char)uVar11" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (cast_expression "(char)uVar11" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar7[2] = (char)(uVar16 >> 8);" (assignment_expression "puVar7[2] = (char)(uVar16 >> 8)" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (cast_expression "(char)(uVar16 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar16 >> 8)" ( (binary_expression "uVar16 >> 8" identifier >> number_literal) )))) ;) (expression_statement "puVar7[3] = (char)uVar16;" (assignment_expression "puVar7[3] = (char)uVar16" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = (cast_expression "(char)uVar16" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;" (assignment_expression "*(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x14) + param_3" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) + identifier)) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "puVar10 = (undefined *)0x102dc;" (assignment_expression "puVar10 = (undefined *)0x102dc" identifier = (cast_expression "(undefined *)0x102dc" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_000460a4:\n  uVar6 = FUN_00044904(puVar10);" statement_identifier : (expression_statement "uVar6 = FUN_00044904(puVar10);" (assignment_expression "uVar6 = FUN_00044904(puVar10)" identifier = (call_expression "FUN_00044904(puVar10)" identifier (argument_list "(puVar10)" ( identifier )))) ;)) (return_statement "return uVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) ))) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (pointer_expression * IDENT) ))) < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;)) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) )) [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (pointer_expression * IDENT) ))))) ;) }) (else_clause else (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) ))) | IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) ))) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) )) [ LIT ]) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - IDENT) & LIT)) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (binary_expression IDENT + LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (pointer_expression * IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (pointer_expression * IDENT) ))) < IDENT) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , IDENT ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_00045e10(int param_1,uint param_2,uint param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  ushort uVar11;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  iVar13 = *(int *)(param_1 + 0x38);\n  uVar15 = param_2 + param_3;\n  uVar14 = (uint)*(byte *)(param_1 + 9);\n  uVar17 = uVar14 + 1;\n  uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1];\n  uVar3 = (uint)*(byte *)(iVar13 + uVar17);\n  uVar12 = uVar17;\n  uVar16 = param_3;\n  if ((uVar11 == 0) && (uVar3 == 0)) {\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    uVar11 = 0;\n    if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n  }\n  else {\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }\n  if (bVar2) {\n    puVar10 = (undefined *)0x102db;\n  }\n  else {\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }\nLAB_000460a4:\n  uVar6 = FUN_00044904(puVar10);\n  return uVar6;\n}" (type_identifier "undefined4") (function_declarator "FUN_00045e10(int param_1,uint param_2,uint param_3)" (identifier "FUN_00045e10") (parameter_list "(int param_1,uint param_2,uint param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 uVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  ushort uVar11;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  \n  iVar13 = *(int *)(param_1 + 0x38);\n  uVar15 = param_2 + param_3;\n  uVar14 = (uint)*(byte *)(param_1 + 9);\n  uVar17 = uVar14 + 1;\n  uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1];\n  uVar3 = (uint)*(byte *)(iVar13 + uVar17);\n  uVar12 = uVar17;\n  uVar16 = param_3;\n  if ((uVar11 == 0) && (uVar3 == 0)) {\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    uVar11 = 0;\n    if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n  }\n  else {\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }\n  if (bVar2) {\n    puVar10 = (undefined *)0x102db;\n  }\n  else {\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }\nLAB_000460a4:\n  uVar6 = FUN_00044904(puVar10);\n  return uVar6;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined1 *puVar7;" (type_identifier "undefined1") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "ushort uVar11;" (type_identifier "ushort") (identifier "uVar11") (; ";")) (declaration "undefined1 *puVar9;" (type_identifier "undefined1") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (expression_statement "iVar13 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x38)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "uVar15 = param_2 + param_3;" (assignment_expression "uVar15 = param_2 + param_3" (identifier "uVar15") (= "=") (binary_expression "param_2 + param_3" (identifier "param_2") (+ "+") (identifier "param_3"))) (; ";")) (expression_statement "uVar14 = (uint)*(byte *)(param_1 + 9);" (assignment_expression "uVar14 = (uint)*(byte *)(param_1 + 9)" (identifier "uVar14") (= "=") (binary_expression "(uint)*(byte *)(param_1 + 9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (expression_statement "uVar17 = uVar14 + 1;" (assignment_expression "uVar17 = uVar14 + 1" (identifier "uVar17") (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1];" (assignment_expression "uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1]" (identifier "uVar11") (= "=") (subscript_expression "(ushort)((byte *)(iVar13 + uVar17))[1]" (call_expression "(ushort)((byte *)(iVar13 + uVar17))" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((byte *)(iVar13 + uVar17))" (( "(") (cast_expression "(byte *)(iVar13 + uVar17)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar17)" (( "(") (binary_expression "iVar13 + uVar17" (identifier "iVar13") (+ "+") (identifier "uVar17")) () ")"))) () ")"))) ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar3 = (uint)*(byte *)(iVar13 + uVar17);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar13 + uVar17)" (identifier "uVar3") (= "=") (binary_expression "(uint)*(byte *)(iVar13 + uVar17)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar13 + uVar17)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar17)" (( "(") (binary_expression "iVar13 + uVar17" (identifier "iVar13") (+ "+") (identifier "uVar17")) () ")"))))) (; ";")) (expression_statement "uVar12 = uVar17;" (assignment_expression "uVar12 = uVar17" (identifier "uVar12") (= "=") (identifier "uVar17")) (; ";")) (expression_statement "uVar16 = param_3;" (assignment_expression "uVar16 = param_3" (identifier "uVar16") (= "=") (identifier "param_3")) (; ";")) (if_statement "if ((uVar11 == 0) && (uVar3 == 0)) {\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    uVar11 = 0;\n    if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n  }\n  else {\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }" (if "if") (parenthesized_expression "((uVar11 == 0) && (uVar3 == 0))" (( "(") (binary_expression "(uVar11 == 0) && (uVar3 == 0)" (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    uVar11 = 0;\n    if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n  }" ({ "{") (expression_statement "puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);" (assignment_expression "puVar9 = (undefined1 *)(iVar13 + uVar14 + 5)" (identifier "puVar9") (= "=") (cast_expression "(undefined1 *)(iVar13 + uVar14 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar14 + 5)" (( "(") (binary_expression "iVar13 + uVar14 + 5" (binary_expression "iVar13 + uVar14" (identifier "iVar13") (+ "+") (identifier "uVar14")) (+ "+") (number_literal "5")) () ")")))) (; ";")) (expression_statement "puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);" (assignment_expression "puVar7 = (undefined1 *)(iVar13 + uVar14 + 6)" (identifier "puVar7") (= "=") (cast_expression "(undefined1 *)(iVar13 + uVar14 + 6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar14 + 6)" (( "(") (binary_expression "iVar13 + uVar14 + 6" (binary_expression "iVar13 + uVar14" (identifier "iVar13") (+ "+") (identifier "uVar14")) (+ "+") (number_literal "6")) () ")")))) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (if_statement "if (CONCAT11(*puVar9,*puVar7) < param_2) {\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }" (if "if") (parenthesized_expression "(CONCAT11(*puVar9,*puVar7) < param_2)" (( "(") (binary_expression "CONCAT11(*puVar9,*puVar7) < param_2" (call_expression "CONCAT11(*puVar9,*puVar7)" (identifier "CONCAT11") (argument_list "(*puVar9,*puVar7)" (( "(") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) () ")"))) (< "<") (identifier "param_2")) () ")")) (compound_statement "{\nLAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);\n      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;\n      goto LAB_00046044;\n    }" ({ "{") (labeled_statement "LAB_0004602c:\n      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);" (statement_identifier "LAB_0004602c") (: ":") (expression_statement "*(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);" (assignment_expression "*(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8)" (pointer_expression "*(undefined1 *)(iVar13 + uVar12)" (* "*") (cast_expression "(undefined1 *)(iVar13 + uVar12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar12)" (( "(") (binary_expression "iVar13 + uVar12" (identifier "iVar13") (+ "+") (identifier "uVar12")) () ")")))) (= "=") (cast_expression "(char)(param_2 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(param_2 >> 8)" (( "(") (binary_expression "param_2 >> 8" (identifier "param_2") (>> ">>") (number_literal "8")) () ")")))) (; ";"))) (expression_statement "((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;" (assignment_expression "((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2" (subscript_expression "((undefined1 *)(iVar13 + uVar12))[1]" (parenthesized_expression "((undefined1 *)(iVar13 + uVar12))" (( "(") (cast_expression "(undefined1 *)(iVar13 + uVar12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar12)" (( "(") (binary_expression "iVar13 + uVar12" (identifier "iVar13") (+ "+") (identifier "uVar12")) () ")"))) () ")")) ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(char)param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_2"))) (; ";")) (goto_statement "goto LAB_00046044;" (goto "goto") (statement_identifier "LAB_00046044") (; ";")) (} "}"))) (expression_statement "bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);" (assignment_expression "bVar2 = param_2 < CONCAT11(*puVar9,*puVar7)" (identifier "bVar2") (= "=") (binary_expression "param_2 < CONCAT11(*puVar9,*puVar7)" (identifier "param_2") (< "<") (call_expression "CONCAT11(*puVar9,*puVar7)" (identifier "CONCAT11") (argument_list "(*puVar9,*puVar7)" (( "(") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }" (else "else") (compound_statement "{\n    while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }\n    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);\n    if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }\n    if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }\n    if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }\n    pbVar5 = (byte *)(iVar13 + uVar14 + 7);\n    bVar1 = *pbVar5;\n    if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }\n    *pbVar5 = bVar1 - (char)uVar8;\n    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);\n    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);\n    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);\n    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;\n  }" ({ "{") (while_statement "while( true ) {\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar11 = (ushort)(uVar3 << 8) | uVar11;\n      iVar4 = (int)(short)uVar11;\n      uVar18 = (uint)uVar11;\n      if (param_2 <= uVar18) break;\n      if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }\n      uVar3 = (uint)*(byte *)(iVar13 + uVar18);\n      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];\n      uVar12 = uVar18;\n    }" ({ "{") (expression_statement "uVar11 = (ushort)(uVar3 << 8) | uVar11;" (assignment_expression "uVar11 = (ushort)(uVar3 << 8) | uVar11" (identifier "uVar11") (= "=") (binary_expression "(ushort)(uVar3 << 8) | uVar11" (call_expression "(ushort)(uVar3 << 8)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(uVar3 << 8)" (( "(") (binary_expression "uVar3 << 8" (identifier "uVar3") (<< "<<") (number_literal "8")) () ")"))) (| "|") (identifier "uVar11"))) (; ";")) (expression_statement "iVar4 = (int)(short)uVar11;" (assignment_expression "iVar4 = (int)(short)uVar11" (identifier "iVar4") (= "=") (cast_expression "(int)(short)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(short)uVar11" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar11")))) (; ";")) (expression_statement "uVar18 = (uint)uVar11;" (assignment_expression "uVar18 = (uint)uVar11" (identifier "uVar18") (= "=") (cast_expression "(uint)uVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar11"))) (; ";")) (if_statement "if (param_2 <= uVar18) break;" (if "if") (parenthesized_expression "(param_2 <= uVar18)" (( "(") (binary_expression "param_2 <= uVar18" (identifier "param_2") (<= "<=") (identifier "uVar18")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (uVar18 <= uVar12 + 3) {\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }" (if "if") (parenthesized_expression "(uVar18 <= uVar12 + 3)" (( "(") (binary_expression "uVar18 <= uVar12 + 3" (identifier "uVar18") (<= "<=") (binary_expression "uVar12 + 3" (identifier "uVar12") (+ "+") (number_literal "3"))) () ")")) (compound_statement "{\n        if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }\n        goto LAB_00045f90;\n      }" ({ "{") (if_statement "if (uVar18 != 0) {\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }" (if "if") (parenthesized_expression "(uVar18 != 0)" (( "(") (binary_expression "uVar18 != 0" (identifier "uVar18") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar6 = FUN_00044904(&DAT_000102ac);\n          return uVar6;\n        }" ({ "{") (expression_statement "uVar6 = FUN_00044904(&DAT_000102ac);" (assignment_expression "uVar6 = FUN_00044904(&DAT_000102ac)" (identifier "uVar6") (= "=") (call_expression "FUN_00044904(&DAT_000102ac)" (identifier "FUN_00044904") (argument_list "(&DAT_000102ac)" (( "(") (pointer_expression "&DAT_000102ac" (& "&") (identifier "DAT_000102ac")) () ")")))) (; ";")) (return_statement "return uVar6;" (return "return") (identifier "uVar6") (; ";")) (} "}"))) (goto_statement "goto LAB_00045f90;" (goto "goto") (statement_identifier "LAB_00045f90") (; ";")) (} "}"))) (expression_statement "uVar3 = (uint)*(byte *)(iVar13 + uVar18);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar13 + uVar18)" (identifier "uVar3") (= "=") (binary_expression "(uint)*(byte *)(iVar13 + uVar18)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar13 + uVar18)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar18)" (( "(") (binary_expression "iVar13 + uVar18" (identifier "iVar13") (+ "+") (identifier "uVar18")) () ")"))))) (; ";")) (expression_statement "uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];" (assignment_expression "uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1]" (identifier "uVar11") (= "=") (subscript_expression "(ushort)((byte *)(iVar13 + uVar18))[1]" (call_expression "(ushort)((byte *)(iVar13 + uVar18))" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((byte *)(iVar13 + uVar18))" (( "(") (cast_expression "(byte *)(iVar13 + uVar18)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar18)" (( "(") (binary_expression "iVar13 + uVar18" (identifier "iVar13") (+ "+") (identifier "uVar18")) () ")"))) () ")"))) ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" (identifier "uVar12") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);" (assignment_expression "uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(*(int *)(param_1 + 0x34) + 0x28)" (* "*") (cast_expression "(uint *)(*(int *)(param_1 + 0x34) + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x34) + 0x28)" (( "(") (binary_expression "*(int *)(param_1 + 0x34) + 0x28" (pointer_expression "*(int *)(param_1 + 0x34)" (* "*") (cast_expression "(int *)(param_1 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")")))) (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (uVar3 - 4 < uVar18) {\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }" (if "if") (parenthesized_expression "(uVar3 - 4 < uVar18)" (( "(") (binary_expression "uVar3 - 4 < uVar18" (binary_expression "uVar3 - 4" (identifier "uVar3") (- "-") (number_literal "4")) (< "<") (identifier "uVar18")) () ")")) (compound_statement "{\n      puVar10 = &DAT_000102b1;\n      goto LAB_000460a4;\n    }" ({ "{") (expression_statement "puVar10 = &DAT_000102b1;" (assignment_expression "puVar10 = &DAT_000102b1" (identifier "puVar10") (= "=") (pointer_expression "&DAT_000102b1" (& "&") (identifier "DAT_000102b1"))) (; ";")) (goto_statement "goto LAB_000460a4;" (goto "goto") (statement_identifier "LAB_000460a4") (; ";")) (} "}"))) (if_statement "if (uVar18 == 0) {\nLAB_00045f90:\n      uVar8 = 0;\n    }\n    else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }" (if "if") (parenthesized_expression "(uVar18 == 0)" (( "(") (binary_expression "uVar18 == 0" (identifier "uVar18") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00045f90:\n      uVar8 = 0;\n    }" ({ "{") (labeled_statement "LAB_00045f90:\n      uVar8 = 0;" (statement_identifier "LAB_00045f90") (: ":") (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }" (else "else") (compound_statement "{\n      uVar8 = 0;\n      if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }\n    }" ({ "{") (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar18 <= uVar15 + 3) {\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }" (if "if") (parenthesized_expression "(uVar18 <= uVar15 + 3)" (( "(") (binary_expression "uVar18 <= uVar15 + 3" (identifier "uVar18") (<= "<=") (binary_expression "uVar15 + 3" (identifier "uVar15") (+ "+") (number_literal "3"))) () ")")) (compound_statement "{\n        if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }\n        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;\n        if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }\n        uVar11 = *(ushort *)(iVar13 + uVar18);\n        uVar8 = iVar4 - uVar15 & 0xff;\n        uVar15 = uVar16;\n        uVar16 = uVar16 - param_2 & 0xffff;\n      }" ({ "{") (if_statement "if (uVar18 < uVar15) {\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }" (if "if") (parenthesized_expression "(uVar18 < uVar15)" (( "(") (binary_expression "uVar18 < uVar15" (identifier "uVar18") (< "<") (identifier "uVar15")) () ")")) (compound_statement "{\n          puVar10 = (undefined *)0x102bd;\n          goto LAB_000460a4;\n        }" ({ "{") (expression_statement "puVar10 = (undefined *)0x102bd;" (assignment_expression "puVar10 = (undefined *)0x102bd" (identifier "puVar10") (= "=") (cast_expression "(undefined *)0x102bd" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x102bd"))) (; ";")) (goto_statement "goto LAB_000460a4;" (goto "goto") (statement_identifier "LAB_000460a4") (; ";")) (} "}"))) (expression_statement "uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;" (assignment_expression "uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18" (identifier "uVar16") (= "=") (binary_expression "((ushort *)(iVar13 + uVar18))[1] + uVar18" (subscript_expression "((ushort *)(iVar13 + uVar18))[1]" (parenthesized_expression "((ushort *)(iVar13 + uVar18))" (( "(") (cast_expression "(ushort *)(iVar13 + uVar18)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar18)" (( "(") (binary_expression "iVar13 + uVar18" (identifier "iVar13") (+ "+") (identifier "uVar18")) () ")"))) () ")")) ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "uVar18"))) (; ";")) (if_statement "if (uVar3 < uVar16) {\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }" (if "if") (parenthesized_expression "(uVar3 < uVar16)" (( "(") (binary_expression "uVar3 < uVar16" (identifier "uVar3") (< "<") (identifier "uVar16")) () ")")) (compound_statement "{\n          puVar10 = (undefined *)0x102c0;\n          goto LAB_000460a4;\n        }" ({ "{") (expression_statement "puVar10 = (undefined *)0x102c0;" (assignment_expression "puVar10 = (undefined *)0x102c0" (identifier "puVar10") (= "=") (cast_expression "(undefined *)0x102c0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x102c0"))) (; ";")) (goto_statement "goto LAB_000460a4;" (goto "goto") (statement_identifier "LAB_000460a4") (; ";")) (} "}"))) (expression_statement "uVar11 = *(ushort *)(iVar13 + uVar18);" (assignment_expression "uVar11 = *(ushort *)(iVar13 + uVar18)" (identifier "uVar11") (= "=") (pointer_expression "*(ushort *)(iVar13 + uVar18)" (* "*") (cast_expression "(ushort *)(iVar13 + uVar18)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar18)" (( "(") (binary_expression "iVar13 + uVar18" (identifier "iVar13") (+ "+") (identifier "uVar18")) () ")"))))) (; ";")) (expression_statement "uVar8 = iVar4 - uVar15 & 0xff;" (assignment_expression "uVar8 = iVar4 - uVar15 & 0xff" (identifier "uVar8") (= "=") (binary_expression "iVar4 - uVar15 & 0xff" (binary_expression "iVar4 - uVar15" (identifier "iVar4") (- "-") (identifier "uVar15")) (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "uVar15 = uVar16;" (assignment_expression "uVar15 = uVar16" (identifier "uVar15") (= "=") (identifier "uVar16")) (; ";")) (expression_statement "uVar16 = uVar16 - param_2 & 0xffff;" (assignment_expression "uVar16 = uVar16 - param_2 & 0xffff" (identifier "uVar16") (= "=") (binary_expression "uVar16 - param_2 & 0xffff" (binary_expression "uVar16 - param_2" (identifier "uVar16") (- "-") (identifier "param_2")) (& "&") (number_literal "0xffff"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (uVar17 < uVar12) {\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }" (if "if") (parenthesized_expression "(uVar17 < uVar12)" (( "(") (binary_expression "uVar17 < uVar12" (identifier "uVar17") (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;\n      if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }\n    }" ({ "{") (expression_statement "iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;" (assignment_expression "iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12" (identifier "iVar4") (= "=") (binary_expression "*(ushort *)(iVar13 + uVar12 + 2) + uVar12" (pointer_expression "*(ushort *)(iVar13 + uVar12 + 2)" (* "*") (cast_expression "(ushort *)(iVar13 + uVar12 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar12 + 2)" (( "(") (binary_expression "iVar13 + uVar12 + 2" (binary_expression "iVar13 + uVar12" (identifier "iVar13") (+ "+") (identifier "uVar12")) (+ "+") (number_literal "2")) () ")")))) (+ "+") (identifier "uVar12"))) (; ";")) (if_statement "if ((int)param_2 <= iVar4 + 3) {\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }" (if "if") (parenthesized_expression "((int)param_2 <= iVar4 + 3)" (( "(") (binary_expression "(int)param_2 <= iVar4 + 3" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (<= "<=") (binary_expression "iVar4 + 3" (identifier "iVar4") (+ "+") (number_literal "3"))) () ")")) (compound_statement "{\n        if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }\n        uVar16 = uVar15 - uVar12 & 0xffff;\n        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;\n        param_2 = uVar12;\n      }" ({ "{") (if_statement "if ((int)param_2 < iVar4) {\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }" (if "if") (parenthesized_expression "((int)param_2 < iVar4)" (( "(") (binary_expression "(int)param_2 < iVar4" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n          puVar10 = (undefined *)0x102cd;\n          goto LAB_000460a4;\n        }" ({ "{") (expression_statement "puVar10 = (undefined *)0x102cd;" (assignment_expression "puVar10 = (undefined *)0x102cd" (identifier "puVar10") (= "=") (cast_expression "(undefined *)0x102cd" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x102cd"))) (; ";")) (goto_statement "goto LAB_000460a4;" (goto "goto") (statement_identifier "LAB_000460a4") (; ";")) (} "}"))) (expression_statement "uVar16 = uVar15 - uVar12 & 0xffff;" (assignment_expression "uVar16 = uVar15 - uVar12 & 0xffff" (identifier "uVar16") (= "=") (binary_expression "uVar15 - uVar12 & 0xffff" (binary_expression "uVar15 - uVar12" (identifier "uVar15") (- "-") (identifier "uVar12")) (& "&") (number_literal "0xffff"))) (; ";")) (expression_statement "uVar8 = (uVar8 + param_2) - iVar4 & 0xff;" (assignment_expression "uVar8 = (uVar8 + param_2) - iVar4 & 0xff" (identifier "uVar8") (= "=") (binary_expression "(uVar8 + param_2) - iVar4 & 0xff" (binary_expression "(uVar8 + param_2) - iVar4" (parenthesized_expression "(uVar8 + param_2)" (( "(") (binary_expression "uVar8 + param_2" (identifier "uVar8") (+ "+") (identifier "param_2")) () ")")) (- "-") (identifier "iVar4")) (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "param_2 = uVar12;" (assignment_expression "param_2 = uVar12" (identifier "param_2") (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (} "}"))) (expression_statement "pbVar5 = (byte *)(iVar13 + uVar14 + 7);" (assignment_expression "pbVar5 = (byte *)(iVar13 + uVar14 + 7)" (identifier "pbVar5") (= "=") (cast_expression "(byte *)(iVar13 + uVar14 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar14 + 7)" (( "(") (binary_expression "iVar13 + uVar14 + 7" (binary_expression "iVar13 + uVar14" (identifier "iVar13") (+ "+") (identifier "uVar14")) (+ "+") (number_literal "7")) () ")")))) (; ";")) (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" (identifier "bVar1") (= "=") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5"))) (; ";")) (if_statement "if (bVar1 < uVar8) {\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }" (if "if") (parenthesized_expression "(bVar1 < uVar8)" (( "(") (binary_expression "bVar1 < uVar8" (identifier "bVar1") (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n      uVar6 = FUN_00044904(0x102d3);\n      return uVar6;\n    }" ({ "{") (expression_statement "uVar6 = FUN_00044904(0x102d3);" (assignment_expression "uVar6 = FUN_00044904(0x102d3)" (identifier "uVar6") (= "=") (call_expression "FUN_00044904(0x102d3)" (identifier "FUN_00044904") (argument_list "(0x102d3)" (( "(") (number_literal "0x102d3") () ")")))) (; ";")) (return_statement "return uVar6;" (return "return") (identifier "uVar6") (; ";")) (} "}"))) (expression_statement "*pbVar5 = bVar1 - (char)uVar8;" (assignment_expression "*pbVar5 = bVar1 - (char)uVar8" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (= "=") (binary_expression "bVar1 - (char)uVar8" (identifier "bVar1") (- "-") (cast_expression "(char)uVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar8")))) (; ";")) (expression_statement "puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);" (assignment_expression "puVar9 = (undefined1 *)(iVar13 + uVar14 + 5)" (identifier "puVar9") (= "=") (cast_expression "(undefined1 *)(iVar13 + uVar14 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar14 + 5)" (( "(") (binary_expression "iVar13 + uVar14 + 5" (binary_expression "iVar13 + uVar14" (identifier "iVar13") (+ "+") (identifier "uVar14")) (+ "+") (number_literal "5")) () ")")))) (; ";")) (expression_statement "puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);" (assignment_expression "puVar7 = (undefined1 *)(iVar13 + uVar14 + 6)" (identifier "puVar7") (= "=") (cast_expression "(undefined1 *)(iVar13 + uVar14 + 6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar14 + 6)" (( "(") (binary_expression "iVar13 + uVar14 + 6" (binary_expression "iVar13 + uVar14" (identifier "iVar13") (+ "+") (identifier "uVar14")) (+ "+") (number_literal "6")) () ")")))) (; ";")) (expression_statement "bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);" (assignment_expression "bVar2 = param_2 < CONCAT11(*puVar9,*puVar7)" (identifier "bVar2") (= "=") (binary_expression "param_2 < CONCAT11(*puVar9,*puVar7)" (identifier "param_2") (< "<") (call_expression "CONCAT11(*puVar9,*puVar7)" (identifier "CONCAT11") (argument_list "(*puVar9,*puVar7)" (( "(") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) () ")"))))) (; ";")) (if_statement "if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;" (if "if") (parenthesized_expression "(CONCAT11(*puVar9,*puVar7) < param_2)" (( "(") (binary_expression "CONCAT11(*puVar9,*puVar7) < param_2" (call_expression "CONCAT11(*puVar9,*puVar7)" (identifier "CONCAT11") (argument_list "(*puVar9,*puVar7)" (( "(") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) () ")"))) (< "<") (identifier "param_2")) () ")")) (goto_statement "goto LAB_0004602c;" (goto "goto") (statement_identifier "LAB_0004602c") (; ";"))) (} "}")))) (if_statement "if (bVar2) {\n    puVar10 = (undefined *)0x102db;\n  }\n  else {\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (compound_statement "{\n    puVar10 = (undefined *)0x102db;\n  }" ({ "{") (expression_statement "puVar10 = (undefined *)0x102db;" (assignment_expression "puVar10 = (undefined *)0x102db" (identifier "puVar10") (= "=") (cast_expression "(undefined *)0x102db" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x102db"))) (; ";")) (} "}")) (else_clause "else {\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }" (else "else") (compound_statement "{\n    if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }\n    puVar10 = (undefined *)0x102dc;\n  }" ({ "{") (if_statement "if (uVar12 == uVar17) {\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }" (if "if") (parenthesized_expression "(uVar12 == uVar17)" (( "(") (binary_expression "uVar12 == uVar17" (identifier "uVar12") (== "==") (identifier "uVar17")) () ")")) (compound_statement "{\n      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);\n      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;\n      *puVar9 = (char)(uVar15 >> 8);\n      *puVar7 = (char)uVar15;\nLAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);\n      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }\n      *puVar7 = (char)(uVar11 >> 8);\n      puVar7[1] = (char)uVar11;\n      puVar7[2] = (char)(uVar16 >> 8);\n      puVar7[3] = (char)uVar16;\n      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;\n      return 0;\n    }" ({ "{") (expression_statement "*(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);" (assignment_expression "*(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8)" (pointer_expression "*(char *)(iVar13 + uVar14 + 1)" (* "*") (cast_expression "(char *)(iVar13 + uVar14 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar14 + 1)" (( "(") (binary_expression "iVar13 + uVar14 + 1" (binary_expression "iVar13 + uVar14" (identifier "iVar13") (+ "+") (identifier "uVar14")) (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(char)(uVar11 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar11 >> 8)" (( "(") (binary_expression "uVar11 >> 8" (identifier "uVar11") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*(char *)(iVar13 + uVar14 + 2) = (char)uVar11;" (assignment_expression "*(char *)(iVar13 + uVar14 + 2) = (char)uVar11" (pointer_expression "*(char *)(iVar13 + uVar14 + 2)" (* "*") (cast_expression "(char *)(iVar13 + uVar14 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + uVar14 + 2)" (( "(") (binary_expression "iVar13 + uVar14 + 2" (binary_expression "iVar13 + uVar14" (identifier "iVar13") (+ "+") (identifier "uVar14")) (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(char)uVar11" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar11"))) (; ";")) (expression_statement "*puVar9 = (char)(uVar15 >> 8);" (assignment_expression "*puVar9 = (char)(uVar15 >> 8)" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (cast_expression "(char)(uVar15 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar15 >> 8)" (( "(") (binary_expression "uVar15 >> 8" (identifier "uVar15") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*puVar7 = (char)uVar15;" (assignment_expression "*puVar7 = (char)uVar15" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (cast_expression "(char)uVar15" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar15"))) (; ";")) (labeled_statement "LAB_00046044:\n      puVar7 = (undefined1 *)(iVar13 + param_2);" (statement_identifier "LAB_00046044") (: ":") (expression_statement "puVar7 = (undefined1 *)(iVar13 + param_2);" (assignment_expression "puVar7 = (undefined1 *)(iVar13 + param_2)" (identifier "puVar7") (= "=") (cast_expression "(undefined1 *)(iVar13 + param_2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + param_2)" (( "(") (binary_expression "iVar13 + param_2" (identifier "iVar13") (+ "+") (identifier "param_2")) () ")")))) (; ";"))) (if_statement "if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }" (if "if") (parenthesized_expression "((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0)" (( "(") (binary_expression "(*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0" (parenthesized_expression "(*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc)" (( "(") (binary_expression "*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc" (pointer_expression "*(ushort *)(*(int *)(param_1 + 0x34) + 0x18)" (* "*") (cast_expression "(ushort *)(*(int *)(param_1 + 0x34) + 0x18)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x34) + 0x18)" (( "(") (binary_expression "*(int *)(param_1 + 0x34) + 0x18" (pointer_expression "*(int *)(param_1 + 0x34)" (* "*") (cast_expression "(int *)(param_1 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")")))) (+ "+") (number_literal "0x18")) () ")")))) (& "&") (number_literal "0xc")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);\n      }" ({ "{") (expression_statement "puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);" (assignment_expression "puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16)" (identifier "puVar7") (= "=") (cast_expression "(undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16)" (parenthesized_expression "(*(code *)PTR_memset_000f5450)" (( "(") (pointer_expression "*(code *)PTR_memset_000f5450" (* "*") (cast_expression "(code *)PTR_memset_000f5450" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memset_000f5450"))) () ")")) (argument_list "(puVar7,0,uVar16)" (( "(") (identifier "puVar7") (, ",") (number_literal "0") (, ",") (identifier "uVar16") () ")"))))) (; ";")) (} "}"))) (expression_statement "*puVar7 = (char)(uVar11 >> 8);" (assignment_expression "*puVar7 = (char)(uVar11 >> 8)" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (cast_expression "(char)(uVar11 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar11 >> 8)" (( "(") (binary_expression "uVar11 >> 8" (identifier "uVar11") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "puVar7[1] = (char)uVar11;" (assignment_expression "puVar7[1] = (char)uVar11" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(char)uVar11" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar11"))) (; ";")) (expression_statement "puVar7[2] = (char)(uVar16 >> 8);" (assignment_expression "puVar7[2] = (char)(uVar16 >> 8)" (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(char)(uVar16 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar16 >> 8)" (( "(") (binary_expression "uVar16 >> 8" (identifier "uVar16") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "puVar7[3] = (char)uVar16;" (assignment_expression "puVar7[3] = (char)uVar16" (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(char)uVar16" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar16"))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;" (assignment_expression "*(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3" (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x14) + param_3" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (identifier "param_3"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "puVar10 = (undefined *)0x102dc;" (assignment_expression "puVar10 = (undefined *)0x102dc" (identifier "puVar10") (= "=") (cast_expression "(undefined *)0x102dc" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x102dc"))) (; ";")) (} "}")))) (labeled_statement "LAB_000460a4:\n  uVar6 = FUN_00044904(puVar10);" (statement_identifier "LAB_000460a4") (: ":") (expression_statement "uVar6 = FUN_00044904(puVar10);" (assignment_expression "uVar6 = FUN_00044904(puVar10)" (identifier "uVar6") (= "=") (call_expression "FUN_00044904(puVar10)" (identifier "FUN_00044904") (argument_list "(puVar10)" (( "(") (identifier "puVar10") () ")")))) (; ";"))) (return_statement "return uVar6;" (return "return") (identifier "uVar6") (; ";")) (} "}")))

int function_1(type_1 *pPage,type_2 iStart,type_2 iSize)

{
  type_3 var_17;
  bool bVar2;
  type_4 var_8;
  int var_15;
  type_5 *puVar5;
  type_4 var_16;
  type_6 var_7;
  type_5 *puVar7;
  type_7 *lineno;
  type_8 in_register_00000014;
  type_4 var_2;
  type_8 in_register_00000018;
  type_4 var_3;
  type_4 var_10;
  type_5 *var_5;
  type_4 var_4;
  type_4 var_13;
  type_4 var_14;
  type_4 var_6;
  type_4 var_11;
  
  var_3 = var_1(in_register_00000018,iSize);
  var_2 = var_1(in_register_00000014,iStart);
  var_5 = pPage->aData;
  var_13 = var_2 + var_3;
  var_4 = (type_4)pPage->hdrOffset;
  var_6 = var_4 + 1;
  var_7 = (type_6)(var_5 + var_6)[1];
  var_8 = (type_4)var_5[var_6];
  var_10 = var_6;
  var_14 = var_3;
  if ((var_7 == 0) && (var_8 == 0)) {
    puVar7 = var_5 + var_4 + 5;
    puVar5 = var_5 + var_4 + 6;
    var_7 = 0;
    if (var_9(*puVar7,*puVar5) < var_2) {
LAB_0004602c:
      var_5[var_10] = (type_5)(var_2 >> 8);
      (var_5 + var_10)[1] = (type_5)var_2;
      goto LAB_00046044;
    }
    bVar2 = var_2 < var_9(*puVar7,*puVar5);
  }
  else {
    while( true ) {
      var_7 = (type_6)(var_8 << 8) | var_7;
      var_15 = (int)(short)var_7;
      var_11 = (type_4)var_7;
      if (var_2 <= var_11) break;
      if (var_11 <= var_10 + 3) {
        if (var_11 != 0) {
          var_15 = var_12(0x102ac);
          return var_15;
        }
        goto LAB_00045f90;
      }
      var_8 = (type_4)var_5[var_11];
      var_7 = (type_6)(var_5 + var_11)[1];
      var_10 = var_11;
    }
    var_8 = pPage->pBt->usableSize;
    if (var_8 - 4 < var_11) {
      lineno = &DAT_000102b1;
      goto LAB_000460a4;
    }
    if (var_11 == 0) {
LAB_00045f90:
      var_16 = 0;
    }
    else {
      var_16 = 0;
      if (var_11 <= var_13 + 3) {
        if (var_11 < var_13) {
          lineno = (type_7 *)0x102bd;
          goto LAB_000460a4;
        }
        var_14 = *(type_6 *)((int)(var_5 + var_11) + 2) + var_11;
        if (var_8 < var_14) {
          lineno = (type_7 *)0x102c0;
          goto LAB_000460a4;
        }
        var_7 = *(type_6 *)(var_5 + var_11);
        var_16 = var_15 - var_13 & 0xff;
        var_13 = var_14;
        var_14 = var_14 - var_2 & 0xffff;
      }
    }
    if (var_6 < var_10) {
      var_15 = *(type_6 *)(var_5 + var_10 + 2) + var_10;
      if ((int)var_2 <= var_15 + 3) {
        if ((int)var_2 < var_15) {
          lineno = (type_7 *)0x102cd;
          goto LAB_000460a4;
        }
        var_14 = var_13 - var_10 & 0xffff;
        var_16 = (var_16 + var_2) - var_15 & 0xff;
        var_2 = var_10;
      }
    }
    var_17 = var_5[var_4 + 7];
    if (var_17 < var_16) {
      var_15 = var_12(0x102d3);
      return var_15;
    }
    var_5[var_4 + 7] = var_17 - (char)var_16;
    puVar7 = var_5 + var_4 + 5;
    puVar5 = var_5 + var_4 + 6;
    bVar2 = var_2 < var_9(*puVar7,*puVar5);
    if (var_9(*puVar7,*puVar5) < var_2) goto LAB_0004602c;
  }
  if (bVar2) {
    lineno = (type_7 *)0x102db;
  }
  else {
    if (var_10 == var_6) {
      var_5[var_4 + 1] = (type_5)(var_7 >> 8);
      var_5[var_4 + 2] = (type_5)var_7;
      *puVar7 = (type_5)(var_13 >> 8);
      *puVar5 = (type_5)var_13;
LAB_00046044:
      var_5 = var_5 + var_2;
      if ((pPage->pBt->btsFlags & 0xc) != 0) {
        var_5 = (type_5 *)(*(type_9 *)PTR_memset_000f5450)(var_5,0,var_14);
      }
      *var_5 = (type_5)(var_7 >> 8);
      var_5[1] = (type_5)var_7;
      var_5[2] = (type_5)(var_14 >> 8);
      var_5[3] = (type_5)var_14;
      pPage->nFree = pPage->nFree + var_3;
      return 0;
    }
    lineno = (type_7 *)0x102dc;
  }
LAB_000460a4:
  var_15 = var_12((int)lineno);
  return var_15;
}


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

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

{
  byte bVar1;
  bool bVar2;
  uint uVar3;
  int iVar4;
  byte *pbVar5;
  undefined4 uVar6;
  undefined1 *puVar7;
  uint uVar8;
  ushort uVar11;
  undefined1 *puVar9;
  undefined *puVar10;
  uint uVar12;
  int iVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  
  iVar13 = *(int *)(param_1 + 0x38);
  uVar15 = param_2 + param_3;
  uVar14 = (uint)*(byte *)(param_1 + 9);
  uVar17 = uVar14 + 1;
  uVar11 = (ushort)((byte *)(iVar13 + uVar17))[1];
  uVar3 = (uint)*(byte *)(iVar13 + uVar17);
  uVar12 = uVar17;
  uVar16 = param_3;
  if ((uVar11 == 0) && (uVar3 == 0)) {
    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);
    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);
    uVar11 = 0;
    if (CONCAT11(*puVar9,*puVar7) < param_2) {
LAB_0004602c:
      *(undefined1 *)(iVar13 + uVar12) = (char)(param_2 >> 8);
      ((undefined1 *)(iVar13 + uVar12))[1] = (char)param_2;
      goto LAB_00046044;
    }
    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);
  }
  else {
    while( true ) {
      uVar11 = (ushort)(uVar3 << 8) | uVar11;
      iVar4 = (int)(short)uVar11;
      uVar18 = (uint)uVar11;
      if (param_2 <= uVar18) break;
      if (uVar18 <= uVar12 + 3) {
        if (uVar18 != 0) {
          uVar6 = FUN_00044904(&DAT_000102ac);
          return uVar6;
        }
        goto LAB_00045f90;
      }
      uVar3 = (uint)*(byte *)(iVar13 + uVar18);
      uVar11 = (ushort)((byte *)(iVar13 + uVar18))[1];
      uVar12 = uVar18;
    }
    uVar3 = *(uint *)(*(int *)(param_1 + 0x34) + 0x28);
    if (uVar3 - 4 < uVar18) {
      puVar10 = &DAT_000102b1;
      goto LAB_000460a4;
    }
    if (uVar18 == 0) {
LAB_00045f90:
      uVar8 = 0;
    }
    else {
      uVar8 = 0;
      if (uVar18 <= uVar15 + 3) {
        if (uVar18 < uVar15) {
          puVar10 = (undefined *)0x102bd;
          goto LAB_000460a4;
        }
        uVar16 = ((ushort *)(iVar13 + uVar18))[1] + uVar18;
        if (uVar3 < uVar16) {
          puVar10 = (undefined *)0x102c0;
          goto LAB_000460a4;
        }
        uVar11 = *(ushort *)(iVar13 + uVar18);
        uVar8 = iVar4 - uVar15 & 0xff;
        uVar15 = uVar16;
        uVar16 = uVar16 - param_2 & 0xffff;
      }
    }
    if (uVar17 < uVar12) {
      iVar4 = *(ushort *)(iVar13 + uVar12 + 2) + uVar12;
      if ((int)param_2 <= iVar4 + 3) {
        if ((int)param_2 < iVar4) {
          puVar10 = (undefined *)0x102cd;
          goto LAB_000460a4;
        }
        uVar16 = uVar15 - uVar12 & 0xffff;
        uVar8 = (uVar8 + param_2) - iVar4 & 0xff;
        param_2 = uVar12;
      }
    }
    pbVar5 = (byte *)(iVar13 + uVar14 + 7);
    bVar1 = *pbVar5;
    if (bVar1 < uVar8) {
      uVar6 = FUN_00044904(0x102d3);
      return uVar6;
    }
    *pbVar5 = bVar1 - (char)uVar8;
    puVar9 = (undefined1 *)(iVar13 + uVar14 + 5);
    puVar7 = (undefined1 *)(iVar13 + uVar14 + 6);
    bVar2 = param_2 < CONCAT11(*puVar9,*puVar7);
    if (CONCAT11(*puVar9,*puVar7) < param_2) goto LAB_0004602c;
  }
  if (bVar2) {
    puVar10 = (undefined *)0x102db;
  }
  else {
    if (uVar12 == uVar17) {
      *(char *)(iVar13 + uVar14 + 1) = (char)(uVar11 >> 8);
      *(char *)(iVar13 + uVar14 + 2) = (char)uVar11;
      *puVar9 = (char)(uVar15 >> 8);
      *puVar7 = (char)uVar15;
LAB_00046044:
      puVar7 = (undefined1 *)(iVar13 + param_2);
      if ((*(ushort *)(*(int *)(param_1 + 0x34) + 0x18) & 0xc) != 0) {
        puVar7 = (undefined1 *)(*(code *)PTR_memset_000f5450)(puVar7,0,uVar16);
      }
      *puVar7 = (char)(uVar11 >> 8);
      puVar7[1] = (char)uVar11;
      puVar7[2] = (char)(uVar16 >> 8);
      puVar7[3] = (char)uVar16;
      *(uint *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + param_3;
      return 0;
    }
    puVar10 = (undefined *)0x102dc;
  }
LAB_000460a4:
  uVar6 = FUN_00044904(puVar10);
  return uVar6;
}

