
int sqlite3Atoi64(char *zNum,i64 *pNum,int length,u8 enc)

{
  byte bVar1;
  bool bVar2;
  bool bVar3;
  undefined *puVar4;
  uint uVar5;
  char cVar7;
  int iVar6;
  byte *pbVar8;
  uint uVar9;
  uint uVar10;
  undefined4 uVar11;
  char *pcVar12;
  char *pcVar13;
  undefined3 in_register_0000001c;
  undefined4 uVar14;
  uint uVar15;
  byte *pbVar16;
  uint uVar17;
  uint uVar18;
  int iVar19;
  byte *pbVar20;
  int iVar21;
  byte *pbVar22;
  int iVar23;
  uint uVar24;
  
  puVar4 = PTR_DAT_00190b94;
  pbVar16 = (byte *)(zNum + length);
  if (CONCAT31(in_register_0000001c,enc) == 1) {
    uVar5 = 0;
    iVar19 = 1;
  }
  else {
    uVar17 = 3 - CONCAT31(in_register_0000001c,enc);
    uVar5 = (uint)((int)uVar17 < length);
    if (uVar5 != 0) {
      cVar7 = zNum[uVar17];
      while (uVar18 = uVar17 + 2, cVar7 == '\0') {
        uVar5 = (uint)((int)uVar18 < length);
        uVar17 = uVar18;
        if (uVar5 == 0) break;
        cVar7 = zNum[uVar18];
      }
    }
    pbVar16 = (byte *)(zNum + (uVar17 ^ 1));
    iVar19 = 2;
    zNum = zNum + (enc & 1);
  }
  bVar2 = zNum < pbVar16;
  if (!bVar2) {
    *(undefined4 *)((int)pNum + 4) = 0;
    *(undefined4 *)pNum = 0;
    return 1;
  }
  bVar1 = *zNum;
  while (zNum = (char *)((byte *)zNum + iVar19), (PTR_DAT_00190b94[bVar1 - 0x3d18] & 1) != 0) {
    bVar2 = zNum < pbVar16;
    if (!bVar2) {
      *(undefined4 *)((int)pNum + 4) = 0;
      *(undefined4 *)pNum = 0;
      return 1;
    }
    bVar1 = *zNum;
  }
  pbVar8 = (byte *)zNum + -iVar19;
  if (bVar1 == 0x2d) {
    pbVar8 = pbVar8 + iVar19;
    bVar3 = true;
    bVar2 = pbVar8 < pbVar16;
  }
  else {
    bVar3 = false;
    if (bVar1 == 0x2b) {
      pbVar8 = pbVar8 + iVar19;
      bVar2 = pbVar8 < pbVar16;
    }
  }
  pbVar20 = pbVar8;
  if (bVar2) {
    iVar23 = (int)(char)*pbVar8;
    if (iVar23 == 0x30) {
      pbVar20 = pbVar8 + iVar19;
      do {
        if (pbVar16 <= pbVar20) goto LAB_0003fd48;
        iVar23 = (int)(char)*pbVar20;
        pbVar20 = pbVar20 + iVar19;
      } while (iVar23 == 0x30);
      pbVar20 = pbVar20 + -iVar19;
    }
    if (9 < (iVar23 - 0x30U & 0xff)) goto LAB_0003fd48;
    iVar21 = 0;
    iVar6 = 0;
    uVar17 = 0;
    pbVar22 = pbVar20;
    do {
      pbVar22 = pbVar22 + iVar19;
      uVar9 = uVar17 * 4;
      uVar24 = uVar17 >> 0x1e;
      uVar18 = uVar17 * 5;
      uVar15 = uVar17 * 10;
      uVar10 = uVar15 + iVar23;
      uVar17 = uVar10 - 0x30;
      iVar6 = (uint)(uVar17 < uVar10) +
              (uint)(uVar10 < uVar15) +
              (uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2) +
              (iVar23 >> 0x1f) + -1;
      iVar21 = iVar21 + iVar19;
      if (pbVar16 <= pbVar22) break;
      iVar23 = (int)(char)*pbVar22;
    } while ((iVar23 - 0x30U & 0xff) < 10);
    if (-1 < iVar6) goto LAB_0003fd54;
    if (bVar3) {
      uVar14 = 0;
      uVar11 = 0x80000000;
    }
    else {
      uVar14 = 0xffffffff;
      uVar11 = 0x7fffffff;
    }
    *(undefined4 *)((int)pNum + 4) = uVar14;
    *(undefined4 *)pNum = uVar11;
LAB_0003fc5c:
    if ((uVar5 != 0) || (pbVar16 <= pbVar22)) goto LAB_0003fc74;
  }
  else {
LAB_0003fd48:
    iVar21 = 0;
    iVar6 = 0;
    uVar17 = 0;
    pbVar22 = pbVar20;
LAB_0003fd54:
    if (bVar3) {
      *(uint *)((int)pNum + 4) = -uVar17;
      *(uint *)pNum = -(uint)(-uVar17 != 0) - iVar6;
    }
    else {
      *(int *)pNum = iVar6;
      *(uint *)((int)pNum + 4) = uVar17;
    }
    if (iVar21 != 0) goto LAB_0003fc5c;
    if (pbVar8 == pbVar20) {
      return 1;
    }
    if (uVar5 != 0) {
      return uVar5;
    }
    if (pbVar16 <= pbVar22) {
      return 0;
    }
  }
  pbVar8 = pbVar20 + iVar21;
  do {
    bVar1 = *pbVar8;
    pbVar8 = pbVar8 + iVar19;
    if ((puVar4[bVar1 - 0x3d18] & 1) == 0) {
      uVar5 = 1;
      goto LAB_0003fc74;
    }
  } while (pbVar8 < pbVar16);
  uVar5 = 0;
LAB_0003fc74:
  if (iVar21 < iVar19 * 0x13) {
    return uVar5;
  }
  if (iVar19 * 0x13 == iVar21) {
    iVar23 = ((char)*pbVar20 + -0x39) * 10;
    if (iVar23 == 0) {
      pcVar12 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;
      pbVar16 = pbVar20 + iVar19;
      do {
        pcVar13 = pcVar12 + 1;
        iVar23 = ((int)(char)*pbVar16 - (int)*pcVar12) * 10;
        pbVar16 = pbVar16 + iVar19;
        if (iVar23 != 0) goto LAB_0003fcf8;
        pcVar12 = pcVar13;
      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar13);
      iVar23 = (char)(pbVar20 + iVar19)[iVar19 * 0x11] + -0x38;
    }
LAB_0003fcf8:
    if (iVar23 < 0) {
      return uVar5;
    }
  }
  else {
    iVar23 = 1;
  }
  if (bVar3) {
    *(undefined4 *)((int)pNum + 4) = 0;
    *(undefined4 *)pNum = 0x80000000;
  }
  else {
    *(undefined4 *)((int)pNum + 4) = 0xffffffff;
    *(undefined4 *)pNum = 0x7fffffff;
  }
  if (iVar23 == 0) {
    if (!bVar3) {
      uVar5 = 3;
    }
    return uVar5;
  }
  return 2;
}



undefined1 FUN_0003faa0(byte *param_1,int *param_2,int param_3,uint param_4)

{
  bool bVar1;
  bool bVar2;
  undefined *puVar3;
  undefined1 uVar4;
  byte bVar6;
  int iVar5;
  uint uVar7;
  uint uVar8;
  char *pcVar9;
  char *pcVar10;
  uint uVar11;
  byte *pbVar12;
  uint uVar13;
  uint uVar14;
  int iVar15;
  byte *pbVar16;
  int iVar17;
  byte *pbVar18;
  int iVar19;
  uint uVar20;
  
  puVar3 = PTR_DAT_00190b94;
  pbVar12 = param_1 + param_3;
  if (param_4 == 1) {
    uVar4 = false;
    iVar15 = 1;
  }
  else {
    uVar13 = 3 - param_4;
    uVar4 = (int)uVar13 < param_3;
    if ((bool)uVar4) {
      bVar6 = param_1[uVar13];
      while (uVar14 = uVar13 + 2, bVar6 == 0) {
        uVar4 = (int)uVar14 < param_3;
        uVar13 = uVar14;
        if (!(bool)uVar4) break;
        bVar6 = param_1[uVar14];
      }
    }
    pbVar12 = param_1 + (uVar13 ^ 1);
    iVar15 = 2;
    param_1 = param_1 + (param_4 & 1);
  }
  bVar1 = param_1 < pbVar12;
  if (!bVar1) {
    param_2[1] = 0;
    *param_2 = 0;
    return true;
  }
  bVar6 = *param_1;
  while (param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0) {
    bVar1 = param_1 < pbVar12;
    if (!bVar1) {
      param_2[1] = 0;
      *param_2 = 0;
      return true;
    }
    bVar6 = *param_1;
  }
  param_1 = param_1 + -iVar15;
  if (bVar6 == 0x2d) {
    param_1 = param_1 + iVar15;
    bVar2 = true;
    bVar1 = param_1 < pbVar12;
  }
  else {
    bVar2 = false;
    if (bVar6 == 0x2b) {
      param_1 = param_1 + iVar15;
      bVar1 = param_1 < pbVar12;
    }
  }
  pbVar16 = param_1;
  if (bVar1) {
    iVar19 = (int)(char)*param_1;
    if (iVar19 == 0x30) {
      pbVar16 = param_1 + iVar15;
      do {
        if (pbVar12 <= pbVar16) goto LAB_0003fd48;
        iVar19 = (int)(char)*pbVar16;
        pbVar16 = pbVar16 + iVar15;
      } while (iVar19 == 0x30);
      pbVar16 = pbVar16 + -iVar15;
    }
    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;
    iVar17 = 0;
    iVar5 = 0;
    uVar13 = 0;
    pbVar18 = pbVar16;
    do {
      pbVar18 = pbVar18 + iVar15;
      uVar7 = uVar13 * 4;
      uVar20 = uVar13 >> 0x1e;
      uVar14 = uVar13 * 5;
      uVar11 = uVar13 * 10;
      uVar8 = uVar11 + iVar19;
      uVar13 = uVar8 - 0x30;
      iVar5 = (uint)(uVar13 < uVar8) +
              (uint)(uVar8 < uVar11) +
              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +
              (iVar19 >> 0x1f) + -1;
      iVar17 = iVar17 + iVar15;
      if (pbVar12 <= pbVar18) break;
      iVar19 = (int)(char)*pbVar18;
    } while ((iVar19 - 0x30U & 0xff) < 10);
    if (-1 < iVar5) goto LAB_0003fd54;
    if (bVar2) {
      iVar5 = 0;
      iVar19 = -0x80000000;
    }
    else {
      iVar5 = -1;
      iVar19 = 0x7fffffff;
    }
    param_2[1] = iVar5;
    *param_2 = iVar19;
LAB_0003fc5c:
    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;
  }
  else {
LAB_0003fd48:
    iVar17 = 0;
    iVar5 = 0;
    uVar13 = 0;
    pbVar18 = pbVar16;
LAB_0003fd54:
    if (bVar2) {
      param_2[1] = -uVar13;
      *param_2 = -(uint)(-uVar13 != 0) - iVar5;
    }
    else {
      *param_2 = iVar5;
      param_2[1] = uVar13;
    }
    if (iVar17 != 0) goto LAB_0003fc5c;
    if (param_1 == pbVar16) {
      return true;
    }
    if ((bool)uVar4 != false) {
      return (bool)uVar4;
    }
    if (pbVar12 <= pbVar18) {
      return false;
    }
  }
  pbVar18 = pbVar16 + iVar17;
  do {
    bVar6 = *pbVar18;
    pbVar18 = pbVar18 + iVar15;
    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {
      uVar4 = true;
      goto LAB_0003fc74;
    }
  } while (pbVar18 < pbVar12);
  uVar4 = false;
LAB_0003fc74:
  if (iVar17 < iVar15 * 0x13) {
    return (bool)uVar4;
  }
  if (iVar15 * 0x13 == iVar17) {
    iVar19 = ((char)*pbVar16 + -0x39) * 10;
    if (iVar19 == 0) {
      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;
      pbVar12 = pbVar16 + iVar15;
      do {
        pcVar10 = pcVar9 + 1;
        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;
        pbVar12 = pbVar12 + iVar15;
        if (iVar19 != 0) goto LAB_0003fcf8;
        pcVar9 = pcVar10;
      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);
      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;
    }
LAB_0003fcf8:
    if (iVar19 < 0) {
      return (bool)uVar4;
    }
  }
  else {
    iVar19 = 1;
  }
  if (bVar2) {
    param_2[1] = 0;
    *param_2 = -0x80000000;
  }
  else {
    param_2[1] = -1;
    *param_2 = 0x7fffffff;
  }
  if (iVar19 == 0) {
    if (!bVar2) {
      uVar4 = 3;
    }
    return uVar4;
  }
  return 2;
}


lui gp,0x16
addiu gp,gp,-0x7180
addu gp,gp,t9
li v0,0x1
beq a3,v0,0x0003fde4
_addu t1,a0,a2
li t1,0x3
subu t1,t1,a3
slt v0,t1,a2
beq v0,zero,0x0003faf0
_addu v1,a0,t1
b 0x0003fae4
_lb v1,0x0(v1)
slt v0,t1,a2
beq v0,zero,0x0003faf0
_addu v1,a0,t1
lb v1,0x0(v1)
beq v1,zero,0x0003fad4
_addiu t1,t1,0x2
addiu t1,t1,-0x2
xori t1,t1,0x1
andi a3,a3,0x1
addu t1,a0,t1
li t2,0x2
addu a0,a0,a3
sltu a2,a0,t1
beq a2,zero,0x0003fe54
_lw t5,-0x7d8c(gp)
addiu sp,sp,-0x8
sw s0,0x4(sp)
addiu t5,t5,-0x3d18
b 0x0003fb34
_lb a3,0x0(a0)
sltu a2,a0,t1
beq a2,zero,0x0003fdc8
_or v1,zero,zero
lb a3,0x0(a0)
andi v1,a3,0xff
addu v1,t5,v1
lbu v1,0x0(v1)
andi v1,v1,0x1
bne v1,zero,0x0003fb24
_addu a0,a0,t2
subu a0,a0,t2
li v1,0x2d
beq a3,v1,0x0003fe1c
_li v1,0x2b
beq a3,v1,0x0003fe40
_or t6,zero,zero
beq a2,zero,0x0003fd40
_li v1,0x30
lb t8,0x0(a0)
bne t8,v1,0x0003fb9c
_or t3,a0,zero
li a2,0x30
addu t3,t3,t2
sltu v1,t3,t1
beq v1,zero,0x0003fd48
_or t4,zero,zero
lb t8,0x0(t3)
beq t8,a2,0x0003fb80
_addu t3,t3,t2
subu t3,t3,t2
addiu v1,t8,-0x30
andi v1,v1,0xff
sltiu v1,v1,0xa
beq v1,zero,0x0003fd44
_addu t7,t3,t2
or t4,zero,zero
or v1,zero,zero
or a3,zero,zero
sll a2,a3,0x2
srl t9,a3,0x1e
sll t0,v1,0x2
addu a3,a2,a3
or t0,t9,t0
addu t0,t0,v1
sltu v1,a3,a2
addu v1,v1,t0
sll t0,a3,0x1
sll v1,v1,0x1
srl a3,a3,0x1f
sra t9,t8,0x1f
addu a2,t0,t8
or v1,a3,v1
addu v1,v1,t9
sltu t0,a2,t0
addu v1,t0,v1
addiu t9,a2,-0x30
addiu v1,v1,-0x1
sltu a2,t9,a2
sltu t0,t7,t1
or s0,t7,zero
addu v1,a2,v1
or a3,t9,zero
beq t0,zero,0x0003fc3c
_addu t4,t4,t2
lb t8,0x0(t7)
addiu a2,t8,-0x30
andi a2,a2,0xff
sltiu a2,a2,0xa
bne a2,zero,0x0003fbbc
_addu t7,t7,t2
bgez v1,0x0003fd54
_nop
beq t6,zero,0x0003fd34
_lui a2,0x7fff
or a3,zero,zero
lui a2,0x8000
sw a3,0x4(a1)
sw a2,0x0(a1)
bne v0,zero,0x0003fc74
_sll v1,t2,0x2
sltu s0,s0,t1
bne s0,zero,0x0003fd94
_nop
sll v1,t2,0x2
addu v1,v1,t2
sll v1,v1,0x2
subu v1,v1,t2
slt a0,t4,v1
bne a0,zero,0x0003fd2c
_lw s0,0x4(sp)
bne v1,t4,0x0003fdf0
_nop
lb v1,0x0(t3)
addiu a0,v1,-0x39
sll v1,a0,0x2
addu v1,v1,a0
sll v1,v1,0x1
bne v1,zero,0x0003fcf8
_nop
lw a2,-0x7fc4(gp)
addu t3,t3,t2
lw t0,-0x7fc4(gp)
or a3,t3,zero
addiu a2,a2,-0x65c7
b 0x0003fcd4
_addiu t0,t0,-0x65b6
beq t0,a2,0x0003fe2c
_sll v1,t2,0x4
lb v1,0x0(a3)
addiu a2,a2,0x1
lb a0,-0x1(a2)
subu a0,v1,a0
sll v1,a0,0x2
addu v1,v1,a0
sll v1,v1,0x1
beq v1,zero,0x0003fccc
_addu a3,a3,t2
bltz v1,0x0003fd2c
_lw s0,0x4(sp)
bne t6,zero,0x0003fdfc
_or a3,zero,zero
lui a2,0x7fff
li a3,-0x1
ori a2,a2,0xffff
sw a3,0x4(a1)
bne v1,zero,0x0003fe0c
_sw a2,0x0(a1)
li v1,0x3
movz v0,v1,t6
lw s0,0x4(sp)
jr ra
_addiu sp,sp,0x8
li a3,-0x1
b 0x0003fc54
_ori a2,a2,0xffff
or t3,a0,zero
or t4,zero,zero
or v1,zero,zero
or t9,zero,zero
or s0,t3,zero
beq t6,zero,0x0003fe6c
_nop
subu t9,zero,t9
subu v1,zero,v1
sltu a2,zero,t9
sw t9,0x4(a1)
subu v1,v1,a2
sw v1,0x0(a1)
bne t4,zero,0x0003fc5c
_nop
beq a0,t3,0x0003fdd4
_nop
bne v0,zero,0x0003fd28
_sltu s0,s0,t1
beq s0,zero,0x0003fd2c
_lw s0,0x4(sp)
b 0x0003fda4
_addu v0,t3,t4
beq a0,zero,0x0003fe4c
_nop
lbu v1,0x0(v0)
addu v0,v0,t2
addu v1,t5,v1
lbu v1,0x0(v1)
andi v1,v1,0x1
bne v1,zero,0x0003fd9c
_sltu a0,v0,t1
b 0x0003fc70
_li v0,0x1
or v0,zero,zero
sw v1,0x4(a1)
sw v0,0x0(a1)
lw s0,0x4(sp)
li v0,0x1
jr ra
_addiu sp,sp,0x8
or v0,zero,zero
b 0x0003fb04
_li t2,0x1
beq t6,zero,0x0003fd08
_li v1,0x1
or a3,zero,zero
lui a2,0x8000
sw a3,0x4(a1)
beq v1,zero,0x0003fd20
_sw a2,0x0(a1)
lw s0,0x4(sp)
li v0,0x2
jr ra
_addiu sp,sp,0x8
addu a0,a0,t2
li t6,0x1
b 0x0003fb64
_sltu a2,a0,t1
addu t2,v1,t2
addu t3,t3,t2
lb v1,0x0(t3)
b 0x0003fcf8
_addiu v1,v1,-0x38
addu a0,a0,t2
b 0x0003fb64
_sltu a2,a0,t1
b 0x0003fc70
_or v0,zero,zero
or v1,zero,zero
or v0,zero,zero
sw v1,0x4(a1)
sw v0,0x0(a1)
jr ra
_li v0,0x1
sw v1,0x0(a1)
b 0x0003fd74
_sw t9,0x4(a1)
(translation_unit "undefined1 FUN_0003faa0(byte *param_1,int *param_2,int param_3,uint param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined1 uVar4;\n  byte bVar6;\n  int iVar5;\n  uint uVar7;\n  uint uVar8;\n  char *pcVar9;\n  char *pcVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  byte *pbVar18;\n  int iVar19;\n  uint uVar20;\n  \n  puVar3 = PTR_DAT_00190b94;\n  pbVar12 = param_1 + param_3;\n  if (param_4 == 1) {\n    uVar4 = false;\n    iVar15 = 1;\n  }\n  else {\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }\n  bVar1 = param_1 < pbVar12;\n  if (!bVar1) {\n    param_2[1] = 0;\n    *param_2 = 0;\n    return true;\n  }\n  bVar6 = *param_1;\n  while (param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0) {\n    bVar1 = param_1 < pbVar12;\n    if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }\n    bVar6 = *param_1;\n  }\n  param_1 = param_1 + -iVar15;\n  if (bVar6 == 0x2d) {\n    param_1 = param_1 + iVar15;\n    bVar2 = true;\n    bVar1 = param_1 < pbVar12;\n  }\n  else {\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }\n  pbVar16 = param_1;\n  if (bVar1) {\n    iVar19 = (int)(char)*param_1;\n    if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }\n    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\n    do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);\n    if (-1 < iVar5) goto LAB_0003fd54;\n    if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }\n    param_2[1] = iVar5;\n    *param_2 = iVar19;\nLAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }\n  pbVar18 = pbVar16 + iVar17;\n  do {\n    bVar6 = *pbVar18;\n    pbVar18 = pbVar18 + iVar15;\n    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar18 < pbVar12);\n  uVar4 = false;\nLAB_0003fc74:\n  if (iVar17 < iVar15 * 0x13) {\n    return (bool)uVar4;\n  }\n  if (iVar15 * 0x13 == iVar17) {\n    iVar19 = ((char)*pbVar16 + -0x39) * 10;\n    if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }\n  }\n  else {\n    iVar19 = 1;\n  }\n  if (bVar2) {\n    param_2[1] = 0;\n    *param_2 = -0x80000000;\n  }\n  else {\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }\n  if (iVar19 == 0) {\n    if (!bVar2) {\n      uVar4 = 3;\n    }\n    return uVar4;\n  }\n  return 2;\n}\n\n" (function_definition "undefined1 FUN_0003faa0(byte *param_1,int *param_2,int param_3,uint param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined1 uVar4;\n  byte bVar6;\n  int iVar5;\n  uint uVar7;\n  uint uVar8;\n  char *pcVar9;\n  char *pcVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  byte *pbVar18;\n  int iVar19;\n  uint uVar20;\n  \n  puVar3 = PTR_DAT_00190b94;\n  pbVar12 = param_1 + param_3;\n  if (param_4 == 1) {\n    uVar4 = false;\n    iVar15 = 1;\n  }\n  else {\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }\n  bVar1 = param_1 < pbVar12;\n  if (!bVar1) {\n    param_2[1] = 0;\n    *param_2 = 0;\n    return true;\n  }\n  bVar6 = *param_1;\n  while (param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0) {\n    bVar1 = param_1 < pbVar12;\n    if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }\n    bVar6 = *param_1;\n  }\n  param_1 = param_1 + -iVar15;\n  if (bVar6 == 0x2d) {\n    param_1 = param_1 + iVar15;\n    bVar2 = true;\n    bVar1 = param_1 < pbVar12;\n  }\n  else {\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }\n  pbVar16 = param_1;\n  if (bVar1) {\n    iVar19 = (int)(char)*param_1;\n    if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }\n    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\n    do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);\n    if (-1 < iVar5) goto LAB_0003fd54;\n    if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }\n    param_2[1] = iVar5;\n    *param_2 = iVar19;\nLAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }\n  pbVar18 = pbVar16 + iVar17;\n  do {\n    bVar6 = *pbVar18;\n    pbVar18 = pbVar18 + iVar15;\n    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar18 < pbVar12);\n  uVar4 = false;\nLAB_0003fc74:\n  if (iVar17 < iVar15 * 0x13) {\n    return (bool)uVar4;\n  }\n  if (iVar15 * 0x13 == iVar17) {\n    iVar19 = ((char)*pbVar16 + -0x39) * 10;\n    if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }\n  }\n  else {\n    iVar19 = 1;\n  }\n  if (bVar2) {\n    param_2[1] = 0;\n    *param_2 = -0x80000000;\n  }\n  else {\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }\n  if (iVar19 == 0) {\n    if (!bVar2) {\n      uVar4 = 3;\n    }\n    return uVar4;\n  }\n  return 2;\n}" type_identifier (function_declarator "FUN_0003faa0(byte *param_1,int *param_2,int param_3,uint param_4)" identifier (parameter_list "(byte *param_1,int *param_2,int param_3,uint param_4)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined1 uVar4;\n  byte bVar6;\n  int iVar5;\n  uint uVar7;\n  uint uVar8;\n  char *pcVar9;\n  char *pcVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  byte *pbVar18;\n  int iVar19;\n  uint uVar20;\n  \n  puVar3 = PTR_DAT_00190b94;\n  pbVar12 = param_1 + param_3;\n  if (param_4 == 1) {\n    uVar4 = false;\n    iVar15 = 1;\n  }\n  else {\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }\n  bVar1 = param_1 < pbVar12;\n  if (!bVar1) {\n    param_2[1] = 0;\n    *param_2 = 0;\n    return true;\n  }\n  bVar6 = *param_1;\n  while (param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0) {\n    bVar1 = param_1 < pbVar12;\n    if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }\n    bVar6 = *param_1;\n  }\n  param_1 = param_1 + -iVar15;\n  if (bVar6 == 0x2d) {\n    param_1 = param_1 + iVar15;\n    bVar2 = true;\n    bVar1 = param_1 < pbVar12;\n  }\n  else {\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }\n  pbVar16 = param_1;\n  if (bVar1) {\n    iVar19 = (int)(char)*param_1;\n    if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }\n    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\n    do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);\n    if (-1 < iVar5) goto LAB_0003fd54;\n    if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }\n    param_2[1] = iVar5;\n    *param_2 = iVar19;\nLAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }\n  pbVar18 = pbVar16 + iVar17;\n  do {\n    bVar6 = *pbVar18;\n    pbVar18 = pbVar18 + iVar15;\n    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar18 < pbVar12);\n  uVar4 = false;\nLAB_0003fc74:\n  if (iVar17 < iVar15 * 0x13) {\n    return (bool)uVar4;\n  }\n  if (iVar15 * 0x13 == iVar17) {\n    iVar19 = ((char)*pbVar16 + -0x39) * 10;\n    if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }\n  }\n  else {\n    iVar19 = 1;\n  }\n  if (bVar2) {\n    param_2[1] = 0;\n    *param_2 = -0x80000000;\n  }\n  else {\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }\n  if (iVar19 == 0) {\n    if (!bVar2) {\n      uVar4 = 3;\n    }\n    return uVar4;\n  }\n  return 2;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined1 uVar4;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (expression_statement "puVar3 = PTR_DAT_00190b94;" (assignment_expression "puVar3 = PTR_DAT_00190b94" identifier = identifier) ;) (expression_statement "pbVar12 = param_1 + param_3;" (assignment_expression "pbVar12 = param_1 + param_3" identifier = (binary_expression "param_1 + param_3" identifier + identifier)) ;) (if_statement "if (param_4 == 1) {\n    uVar4 = false;\n    iVar15 = 1;\n  }\n  else {\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }" if (parenthesized_expression "(param_4 == 1)" ( (binary_expression "param_4 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar4 = false;\n    iVar15 = 1;\n  }" { (expression_statement "uVar4 = false;" (assignment_expression "uVar4 = false" identifier = false) ;) (expression_statement "iVar15 = 1;" (assignment_expression "iVar15 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }" else (compound_statement "{\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }" { (expression_statement "uVar13 = 3 - param_4;" (assignment_expression "uVar13 = 3 - param_4" identifier = (binary_expression "3 - param_4" number_literal - identifier)) ;) (expression_statement "uVar4 = (int)uVar13 < param_3;" (assignment_expression "uVar4 = (int)uVar13 < param_3" identifier = (binary_expression "(int)uVar13 < param_3" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) ;) (if_statement "if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }" if (parenthesized_expression "((bool)uVar4)" ( (cast_expression "(bool)uVar4" ( (type_descriptor "bool" primitive_type) ) identifier) )) (compound_statement "{\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }" { (expression_statement "bVar6 = param_1[uVar13];" (assignment_expression "bVar6 = param_1[uVar13]" identifier = (subscript_expression "param_1[uVar13]" identifier [ identifier ])) ;) (while_statement "while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }" while (parenthesized_expression "(uVar14 = uVar13 + 2, bVar6 == 0)" ( (comma_expression "uVar14 = uVar13 + 2, bVar6 == 0" (assignment_expression "uVar14 = uVar13 + 2" identifier = (binary_expression "uVar13 + 2" identifier + number_literal)) , (binary_expression "bVar6 == 0" identifier == number_literal)) )) (compound_statement "{\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }" { (expression_statement "uVar4 = (int)uVar14 < param_3;" (assignment_expression "uVar4 = (int)uVar14 < param_3" identifier = (binary_expression "(int)uVar14 < param_3" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) ;) (expression_statement "uVar13 = uVar14;" (assignment_expression "uVar13 = uVar14" identifier = identifier) ;) (if_statement "if (!(bool)uVar4) break;" if (parenthesized_expression "(!(bool)uVar4)" ( (unary_expression "!(bool)uVar4" ! (cast_expression "(bool)uVar4" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "bVar6 = param_1[uVar14];" (assignment_expression "bVar6 = param_1[uVar14]" identifier = (subscript_expression "param_1[uVar14]" identifier [ identifier ])) ;) })) })) (expression_statement "pbVar12 = param_1 + (uVar13 ^ 1);" (assignment_expression "pbVar12 = param_1 + (uVar13 ^ 1)" identifier = (binary_expression "param_1 + (uVar13 ^ 1)" identifier + (parenthesized_expression "(uVar13 ^ 1)" ( (binary_expression "uVar13 ^ 1" identifier ^ number_literal) )))) ;) (expression_statement "iVar15 = 2;" (assignment_expression "iVar15 = 2" identifier = number_literal) ;) (expression_statement "param_1 = param_1 + (param_4 & 1);" (assignment_expression "param_1 = param_1 + (param_4 & 1)" identifier = (binary_expression "param_1 + (param_4 & 1)" identifier + (parenthesized_expression "(param_4 & 1)" ( (binary_expression "param_4 & 1" identifier & number_literal) )))) ;) }))) (expression_statement "bVar1 = param_1 < pbVar12;" (assignment_expression "bVar1 = param_1 < pbVar12" identifier = (binary_expression "param_1 < pbVar12" identifier < identifier)) ;) (if_statement "if (!bVar1) {\n    param_2[1] = 0;\n    *param_2 = 0;\n    return true;\n  }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n    param_2[1] = 0;\n    *param_2 = 0;\n    return true;\n  }" { (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (return_statement "return true;" return true ;) })) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (while_statement "while (param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0) {\n    bVar1 = param_1 < pbVar12;\n    if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }\n    bVar6 = *param_1;\n  }" while (parenthesized_expression "(param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0)" ( (comma_expression "param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0" (assignment_expression "param_1 = param_1 + iVar15" identifier = (binary_expression "param_1 + iVar15" identifier + identifier)) , (binary_expression "(PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0" (parenthesized_expression "(PTR_DAT_00190b94[bVar6 - 0x3d18] & 1)" ( (binary_expression "PTR_DAT_00190b94[bVar6 - 0x3d18] & 1" (subscript_expression "PTR_DAT_00190b94[bVar6 - 0x3d18]" identifier [ (binary_expression "bVar6 - 0x3d18" identifier - number_literal) ]) & number_literal) )) != number_literal)) )) (compound_statement "{\n    bVar1 = param_1 < pbVar12;\n    if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }\n    bVar6 = *param_1;\n  }" { (expression_statement "bVar1 = param_1 < pbVar12;" (assignment_expression "bVar1 = param_1 < pbVar12" identifier = (binary_expression "param_1 < pbVar12" identifier < identifier)) ;) (if_statement "if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }" { (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (return_statement "return true;" return true ;) })) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (expression_statement "param_1 = param_1 + -iVar15;" (assignment_expression "param_1 = param_1 + -iVar15" identifier = (binary_expression "param_1 + -iVar15" identifier + (unary_expression "-iVar15" - identifier))) ;) (if_statement "if (bVar6 == 0x2d) {\n    param_1 = param_1 + iVar15;\n    bVar2 = true;\n    bVar1 = param_1 < pbVar12;\n  }\n  else {\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }" if (parenthesized_expression "(bVar6 == 0x2d)" ( (binary_expression "bVar6 == 0x2d" identifier == number_literal) )) (compound_statement "{\n    param_1 = param_1 + iVar15;\n    bVar2 = true;\n    bVar1 = param_1 < pbVar12;\n  }" { (expression_statement "param_1 = param_1 + iVar15;" (assignment_expression "param_1 = param_1 + iVar15" identifier = (binary_expression "param_1 + iVar15" identifier + identifier)) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "bVar1 = param_1 < pbVar12;" (assignment_expression "bVar1 = param_1 < pbVar12" identifier = (binary_expression "param_1 < pbVar12" identifier < identifier)) ;) }) (else_clause "else {\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }" else (compound_statement "{\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (if_statement "if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }" if (parenthesized_expression "(bVar6 == 0x2b)" ( (binary_expression "bVar6 == 0x2b" identifier == number_literal) )) (compound_statement "{\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }" { (expression_statement "param_1 = param_1 + iVar15;" (assignment_expression "param_1 = param_1 + iVar15" identifier = (binary_expression "param_1 + iVar15" identifier + identifier)) ;) (expression_statement "bVar1 = param_1 < pbVar12;" (assignment_expression "bVar1 = param_1 < pbVar12" identifier = (binary_expression "param_1 < pbVar12" identifier < identifier)) ;) })) }))) (expression_statement "pbVar16 = param_1;" (assignment_expression "pbVar16 = param_1" identifier = identifier) ;) (if_statement "if (bVar1) {\n    iVar19 = (int)(char)*param_1;\n    if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }\n    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\n    do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);\n    if (-1 < iVar5) goto LAB_0003fd54;\n    if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }\n    param_2[1] = iVar5;\n    *param_2 = iVar19;\nLAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    iVar19 = (int)(char)*param_1;\n    if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }\n    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\n    do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);\n    if (-1 < iVar5) goto LAB_0003fd54;\n    if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }\n    param_2[1] = iVar5;\n    *param_2 = iVar19;\nLAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;\n  }" { (expression_statement "iVar19 = (int)(char)*param_1;" (assignment_expression "iVar19 = (int)(char)*param_1" identifier = (cast_expression "(int)(char)*param_1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_1" * identifier)))) ;) (if_statement "if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }" if (parenthesized_expression "(iVar19 == 0x30)" ( (binary_expression "iVar19 == 0x30" identifier == number_literal) )) (compound_statement "{\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }" { (expression_statement "pbVar16 = param_1 + iVar15;" (assignment_expression "pbVar16 = param_1 + iVar15" identifier = (binary_expression "param_1 + iVar15" identifier + identifier)) ;) (do_statement "do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);" do (compound_statement "{\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      }" { (if_statement "if (pbVar12 <= pbVar16) goto LAB_0003fd48;" if (parenthesized_expression "(pbVar12 <= pbVar16)" ( (binary_expression "pbVar12 <= pbVar16" identifier <= identifier) )) (goto_statement "goto LAB_0003fd48;" goto statement_identifier ;)) (expression_statement "iVar19 = (int)(char)*pbVar16;" (assignment_expression "iVar19 = (int)(char)*pbVar16" identifier = (cast_expression "(int)(char)*pbVar16" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar16" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar16" * identifier)))) ;) (expression_statement "pbVar16 = pbVar16 + iVar15;" (assignment_expression "pbVar16 = pbVar16 + iVar15" identifier = (binary_expression "pbVar16 + iVar15" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar19 == 0x30)" ( (binary_expression "iVar19 == 0x30" identifier == number_literal) )) ;) (expression_statement "pbVar16 = pbVar16 + -iVar15;" (assignment_expression "pbVar16 = pbVar16 + -iVar15" identifier = (binary_expression "pbVar16 + -iVar15" identifier + (unary_expression "-iVar15" - identifier))) ;) })) (if_statement "if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;" if (parenthesized_expression "(9 < (iVar19 - 0x30U & 0xff))" ( (binary_expression "9 < (iVar19 - 0x30U & 0xff)" number_literal < (parenthesized_expression "(iVar19 - 0x30U & 0xff)" ( (binary_expression "iVar19 - 0x30U & 0xff" (binary_expression "iVar19 - 0x30U" identifier - number_literal) & number_literal) ))) )) (goto_statement "goto LAB_0003fd48;" goto statement_identifier ;)) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "pbVar18 = pbVar16;" (assignment_expression "pbVar18 = pbVar16" identifier = identifier) ;) (do_statement "do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);" do (compound_statement "{\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    }" { (expression_statement "pbVar18 = pbVar18 + iVar15;" (assignment_expression "pbVar18 = pbVar18 + iVar15" identifier = (binary_expression "pbVar18 + iVar15" identifier + identifier)) ;) (expression_statement "uVar7 = uVar13 * 4;" (assignment_expression "uVar7 = uVar13 * 4" identifier = (binary_expression "uVar13 * 4" identifier * number_literal)) ;) (expression_statement "uVar20 = uVar13 >> 0x1e;" (assignment_expression "uVar20 = uVar13 >> 0x1e" identifier = (binary_expression "uVar13 >> 0x1e" identifier >> number_literal)) ;) (expression_statement "uVar14 = uVar13 * 5;" (assignment_expression "uVar14 = uVar13 * 5" identifier = (binary_expression "uVar13 * 5" identifier * number_literal)) ;) (expression_statement "uVar11 = uVar13 * 10;" (assignment_expression "uVar11 = uVar13 * 10" identifier = (binary_expression "uVar13 * 10" identifier * number_literal)) ;) (expression_statement "uVar8 = uVar11 + iVar19;" (assignment_expression "uVar8 = uVar11 + iVar19" identifier = (binary_expression "uVar11 + iVar19" identifier + identifier)) ;) (expression_statement "uVar13 = uVar8 - 0x30;" (assignment_expression "uVar13 = uVar8 - 0x30" identifier = (binary_expression "uVar8 - 0x30" identifier - number_literal)) ;) (expression_statement "iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;" (assignment_expression "iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1" identifier = (binary_expression "(uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1" (binary_expression "(uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f)" (binary_expression "(uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2)" (binary_expression "(uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11)" (call_expression "(uint)(uVar13 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) ))) + (call_expression "(uint)(uVar8 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar11)" ( (binary_expression "uVar8 < uVar11" identifier < identifier) )))) + (parenthesized_expression "(uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2)" ( (binary_expression "uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2" (binary_expression "uVar14 >> 0x1f" identifier >> number_literal) | (binary_expression "((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2" (parenthesized_expression "((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5)" ( (binary_expression "(uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5" (binary_expression "(uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2)" (call_expression "(uint)(uVar14 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar14 < uVar7)" ( (binary_expression "uVar14 < uVar7" identifier < identifier) ))) + (parenthesized_expression "(uVar20 | iVar5 << 2)" ( (binary_expression "uVar20 | iVar5 << 2" identifier | (binary_expression "iVar5 << 2" identifier << number_literal)) ))) + identifier) )) * number_literal)) ))) + (parenthesized_expression "(iVar19 >> 0x1f)" ( (binary_expression "iVar19 >> 0x1f" identifier >> number_literal) ))) + number_literal)) ;) (expression_statement "iVar17 = iVar17 + iVar15;" (assignment_expression "iVar17 = iVar17 + iVar15" identifier = (binary_expression "iVar17 + iVar15" identifier + identifier)) ;) (if_statement "if (pbVar12 <= pbVar18) break;" if (parenthesized_expression "(pbVar12 <= pbVar18)" ( (binary_expression "pbVar12 <= pbVar18" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar19 = (int)(char)*pbVar18;" (assignment_expression "iVar19 = (int)(char)*pbVar18" identifier = (cast_expression "(int)(char)*pbVar18" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar18" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar18" * identifier)))) ;) }) while (parenthesized_expression "((iVar19 - 0x30U & 0xff) < 10)" ( (binary_expression "(iVar19 - 0x30U & 0xff) < 10" (parenthesized_expression "(iVar19 - 0x30U & 0xff)" ( (binary_expression "iVar19 - 0x30U & 0xff" (binary_expression "iVar19 - 0x30U" identifier - number_literal) & number_literal) )) < number_literal) )) ;) (if_statement "if (-1 < iVar5) goto LAB_0003fd54;" if (parenthesized_expression "(-1 < iVar5)" ( (binary_expression "-1 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_0003fd54;" goto statement_identifier ;)) (if_statement "if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = -0x80000000;" (assignment_expression "iVar19 = -0x80000000" identifier = number_literal) ;) }) (else_clause "else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }" else (compound_statement "{\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }" { (expression_statement "iVar5 = -1;" (assignment_expression "iVar5 = -1" identifier = number_literal) ;) (expression_statement "iVar19 = 0x7fffffff;" (assignment_expression "iVar19 = 0x7fffffff" identifier = number_literal) ;) }))) (expression_statement "param_2[1] = iVar5;" (assignment_expression "param_2[1] = iVar5" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_2 = iVar19;" (assignment_expression "*param_2 = iVar19" (pointer_expression "*param_2" * identifier) = identifier) ;) (labeled_statement "LAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;" statement_identifier : (if_statement "if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;" if (parenthesized_expression "(((bool)uVar4 != false) || (pbVar12 <= pbVar18))" ( (binary_expression "((bool)uVar4 != false) || (pbVar12 <= pbVar18)" (parenthesized_expression "((bool)uVar4 != false)" ( (binary_expression "(bool)uVar4 != false" (cast_expression "(bool)uVar4" ( (type_descriptor "bool" primitive_type) ) identifier) != false) )) || (parenthesized_expression "(pbVar12 <= pbVar18)" ( (binary_expression "pbVar12 <= pbVar18" identifier <= identifier) ))) )) (goto_statement "goto LAB_0003fc74;" goto statement_identifier ;))) }) (else_clause "else {\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }" else (compound_statement "{\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }" { (labeled_statement "LAB_0003fd48:\n    iVar17 = 0;" statement_identifier : (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;)) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "pbVar18 = pbVar16;" (assignment_expression "pbVar18 = pbVar16" identifier = identifier) ;) (labeled_statement "LAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }" statement_identifier : (if_statement "if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }" { (expression_statement "param_2[1] = -uVar13;" (assignment_expression "param_2[1] = -uVar13" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (unary_expression "-uVar13" - identifier)) ;) (expression_statement "*param_2 = -(uint)(-uVar13 != 0) - iVar5;" (assignment_expression "*param_2 = -(uint)(-uVar13 != 0) - iVar5" (pointer_expression "*param_2" * identifier) = (binary_expression "-(uint)(-uVar13 != 0) - iVar5" (unary_expression "-(uint)(-uVar13 != 0)" - (call_expression "(uint)(-uVar13 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(-uVar13 != 0)" ( (binary_expression "-uVar13 != 0" (unary_expression "-uVar13" - identifier) != number_literal) )))) - identifier)) ;) }) (else_clause "else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }" else (compound_statement "{\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }" { (expression_statement "*param_2 = iVar5;" (assignment_expression "*param_2 = iVar5" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2[1] = uVar13;" (assignment_expression "param_2[1] = uVar13" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) })))) (if_statement "if (iVar17 != 0) goto LAB_0003fc5c;" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003fc5c;" goto statement_identifier ;)) (if_statement "if (param_1 == pbVar16) {\n      return true;\n    }" if (parenthesized_expression "(param_1 == pbVar16)" ( (binary_expression "param_1 == pbVar16" identifier == identifier) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) (if_statement "if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }" if (parenthesized_expression "((bool)uVar4 != false)" ( (binary_expression "(bool)uVar4 != false" (cast_expression "(bool)uVar4" ( (type_descriptor "bool" primitive_type) ) identifier) != false) )) (compound_statement "{\n      return (bool)uVar4;\n    }" { (return_statement "return (bool)uVar4;" return (cast_expression "(bool)uVar4" ( (type_descriptor "bool" primitive_type) ) identifier) ;) })) (if_statement "if (pbVar12 <= pbVar18) {\n      return false;\n    }" if (parenthesized_expression "(pbVar12 <= pbVar18)" ( (binary_expression "pbVar12 <= pbVar18" identifier <= identifier) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) }))) (expression_statement "pbVar18 = pbVar16 + iVar17;" (assignment_expression "pbVar18 = pbVar16 + iVar17" identifier = (binary_expression "pbVar16 + iVar17" identifier + identifier)) ;) (do_statement "do {\n    bVar6 = *pbVar18;\n    pbVar18 = pbVar18 + iVar15;\n    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar18 < pbVar12);" do (compound_statement "{\n    bVar6 = *pbVar18;\n    pbVar18 = pbVar18 + iVar15;\n    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }\n  }" { (expression_statement "bVar6 = *pbVar18;" (assignment_expression "bVar6 = *pbVar18" identifier = (pointer_expression "*pbVar18" * identifier)) ;) (expression_statement "pbVar18 = pbVar18 + iVar15;" (assignment_expression "pbVar18 = pbVar18 + iVar15" identifier = (binary_expression "pbVar18 + iVar15" identifier + identifier)) ;) (if_statement "if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }" if (parenthesized_expression "((puVar3[bVar6 - 0x3d18] & 1) == 0)" ( (binary_expression "(puVar3[bVar6 - 0x3d18] & 1) == 0" (parenthesized_expression "(puVar3[bVar6 - 0x3d18] & 1)" ( (binary_expression "puVar3[bVar6 - 0x3d18] & 1" (subscript_expression "puVar3[bVar6 - 0x3d18]" identifier [ (binary_expression "bVar6 - 0x3d18" identifier - number_literal) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }" { (expression_statement "uVar4 = true;" (assignment_expression "uVar4 = true" identifier = true) ;) (goto_statement "goto LAB_0003fc74;" goto statement_identifier ;) })) }) while (parenthesized_expression "(pbVar18 < pbVar12)" ( (binary_expression "pbVar18 < pbVar12" identifier < identifier) )) ;) (expression_statement "uVar4 = false;" (assignment_expression "uVar4 = false" identifier = false) ;) (labeled_statement "LAB_0003fc74:\n  if (iVar17 < iVar15 * 0x13) {\n    return (bool)uVar4;\n  }" statement_identifier : (if_statement "if (iVar17 < iVar15 * 0x13) {\n    return (bool)uVar4;\n  }" if (parenthesized_expression "(iVar17 < iVar15 * 0x13)" ( (binary_expression "iVar17 < iVar15 * 0x13" identifier < (binary_expression "iVar15 * 0x13" identifier * number_literal)) )) (compound_statement "{\n    return (bool)uVar4;\n  }" { (return_statement "return (bool)uVar4;" return (cast_expression "(bool)uVar4" ( (type_descriptor "bool" primitive_type) ) identifier) ;) }))) (if_statement "if (iVar15 * 0x13 == iVar17) {\n    iVar19 = ((char)*pbVar16 + -0x39) * 10;\n    if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }\n  }\n  else {\n    iVar19 = 1;\n  }" if (parenthesized_expression "(iVar15 * 0x13 == iVar17)" ( (binary_expression "iVar15 * 0x13 == iVar17" (binary_expression "iVar15 * 0x13" identifier * number_literal) == identifier) )) (compound_statement "{\n    iVar19 = ((char)*pbVar16 + -0x39) * 10;\n    if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }\n  }" { (expression_statement "iVar19 = ((char)*pbVar16 + -0x39) * 10;" (assignment_expression "iVar19 = ((char)*pbVar16 + -0x39) * 10" identifier = (binary_expression "((char)*pbVar16 + -0x39) * 10" (parenthesized_expression "((char)*pbVar16 + -0x39)" ( (binary_expression "(char)*pbVar16 + -0x39" (cast_expression "(char)*pbVar16" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar16" * identifier)) + number_literal) )) * number_literal)) ;) (if_statement "if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }" { (expression_statement "pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;" (assignment_expression "pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7" identifier = (binary_expression "PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7" identifier + number_literal)) ;) (expression_statement "pbVar12 = pbVar16 + iVar15;" (assignment_expression "pbVar12 = pbVar16 + iVar15" identifier = (binary_expression "pbVar16 + iVar15" identifier + identifier)) ;) (do_statement "do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);" do (compound_statement "{\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      }" { (expression_statement "pcVar10 = pcVar9 + 1;" (assignment_expression "pcVar10 = pcVar9 + 1" identifier = (binary_expression "pcVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;" (assignment_expression "iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10" identifier = (binary_expression "((int)(char)*pbVar12 - (int)*pcVar9) * 10" (parenthesized_expression "((int)(char)*pbVar12 - (int)*pcVar9)" ( (binary_expression "(int)(char)*pbVar12 - (int)*pcVar9" (cast_expression "(int)(char)*pbVar12" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar12" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar12" * identifier))) - (cast_expression "(int)*pcVar9" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar9" * identifier))) )) * number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + iVar15;" (assignment_expression "pbVar12 = pbVar12 + iVar15" identifier = (binary_expression "pbVar12 + iVar15" identifier + identifier)) ;) (if_statement "if (iVar19 != 0) goto LAB_0003fcf8;" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003fcf8;" goto statement_identifier ;)) (expression_statement "pcVar9 = pcVar10;" (assignment_expression "pcVar9 = pcVar10" identifier = identifier) ;) }) while (parenthesized_expression "(PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10)" ( (binary_expression "PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10" (binary_expression "PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6" identifier + number_literal) != identifier) )) ;) (expression_statement "iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;" (assignment_expression "iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38" identifier = (binary_expression "(char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38" (cast_expression "(char)(pbVar16 + iVar15)[iVar15 * 0x11]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(pbVar16 + iVar15)[iVar15 * 0x11]" (parenthesized_expression "(pbVar16 + iVar15)" ( (binary_expression "pbVar16 + iVar15" identifier + identifier) )) [ (binary_expression "iVar15 * 0x11" identifier * number_literal) ])) + number_literal)) ;) })) (labeled_statement "LAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }" statement_identifier : (if_statement "if (iVar19 < 0) {\n      return (bool)uVar4;\n    }" if (parenthesized_expression "(iVar19 < 0)" ( (binary_expression "iVar19 < 0" identifier < number_literal) )) (compound_statement "{\n      return (bool)uVar4;\n    }" { (return_statement "return (bool)uVar4;" return (cast_expression "(bool)uVar4" ( (type_descriptor "bool" primitive_type) ) identifier) ;) }))) }) (else_clause "else {\n    iVar19 = 1;\n  }" else (compound_statement "{\n    iVar19 = 1;\n  }" { (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) }))) (if_statement "if (bVar2) {\n    param_2[1] = 0;\n    *param_2 = -0x80000000;\n  }\n  else {\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    param_2[1] = 0;\n    *param_2 = -0x80000000;\n  }" { (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_2 = -0x80000000;" (assignment_expression "*param_2 = -0x80000000" (pointer_expression "*param_2" * identifier) = number_literal) ;) }) (else_clause "else {\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }" else (compound_statement "{\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }" { (expression_statement "param_2[1] = -1;" (assignment_expression "param_2[1] = -1" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_2 = 0x7fffffff;" (assignment_expression "*param_2 = 0x7fffffff" (pointer_expression "*param_2" * identifier) = number_literal) ;) }))) (if_statement "if (iVar19 == 0) {\n    if (!bVar2) {\n      uVar4 = 3;\n    }\n    return uVar4;\n  }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\n    if (!bVar2) {\n      uVar4 = 3;\n    }\n    return uVar4;\n  }" { (if_statement "if (!bVar2) {\n      uVar4 = 3;\n    }" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (compound_statement "{\n      uVar4 = 3;\n    }" { (expression_statement "uVar4 = 3;" (assignment_expression "uVar4 = 3" identifier = number_literal) ;) })) (return_statement "return uVar4;" return identifier ;) })) (return_statement "return 2;" return number_literal ;) })))
(translation_unit "int sqlite3Atoi64(char *zNum,i64 *pNum,int length,u8 enc)\n\n{\n  byte bVar1;\n  bool bVar2;\n  bool bVar3;\n  undefined *puVar4;\n  uint uVar5;\n  char cVar7;\n  int iVar6;\n  byte *pbVar8;\n  uint uVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  char *pcVar12;\n  char *pcVar13;\n  undefined3 in_register_0000001c;\n  undefined4 uVar14;\n  uint uVar15;\n  byte *pbVar16;\n  uint uVar17;\n  uint uVar18;\n  int iVar19;\n  byte *pbVar20;\n  int iVar21;\n  byte *pbVar22;\n  int iVar23;\n  uint uVar24;\n  \n  puVar4 = PTR_DAT_00190b94;\n  pbVar16 = (byte *)(zNum + length);\n  if (CONCAT31(in_register_0000001c,enc) == 1) {\n    uVar5 = 0;\n    iVar19 = 1;\n  }\n  else {\n    uVar17 = 3 - CONCAT31(in_register_0000001c,enc);\n    uVar5 = (uint)((int)uVar17 < length);\n    if (uVar5 != 0) {\n      cVar7 = zNum[uVar17];\n      while (uVar18 = uVar17 + 2, cVar7 == '\0') {\n        uVar5 = (uint)((int)uVar18 < length);\n        uVar17 = uVar18;\n        if (uVar5 == 0) break;\n        cVar7 = zNum[uVar18];\n      }\n    }\n    pbVar16 = (byte *)(zNum + (uVar17 ^ 1));\n    iVar19 = 2;\n    zNum = zNum + (enc & 1);\n  }\n  bVar2 = zNum < pbVar16;\n  if (!bVar2) {\n    *(undefined4 *)((int)pNum + 4) = 0;\n    *(undefined4 *)pNum = 0;\n    return 1;\n  }\n  bVar1 = *zNum;\n  while (zNum = (char *)((byte *)zNum + iVar19), (PTR_DAT_00190b94[bVar1 - 0x3d18] & 1) != 0) {\n    bVar2 = zNum < pbVar16;\n    if (!bVar2) {\n      *(undefined4 *)((int)pNum + 4) = 0;\n      *(undefined4 *)pNum = 0;\n      return 1;\n    }\n    bVar1 = *zNum;\n  }\n  pbVar8 = (byte *)zNum + -iVar19;\n  if (bVar1 == 0x2d) {\n    pbVar8 = pbVar8 + iVar19;\n    bVar3 = true;\n    bVar2 = pbVar8 < pbVar16;\n  }\n  else {\n    bVar3 = false;\n    if (bVar1 == 0x2b) {\n      pbVar8 = pbVar8 + iVar19;\n      bVar2 = pbVar8 < pbVar16;\n    }\n  }\n  pbVar20 = pbVar8;\n  if (bVar2) {\n    iVar23 = (int)(char)*pbVar8;\n    if (iVar23 == 0x30) {\n      pbVar20 = pbVar8 + iVar19;\n      do {\n        if (pbVar16 <= pbVar20) goto LAB_0003fd48;\n        iVar23 = (int)(char)*pbVar20;\n        pbVar20 = pbVar20 + iVar19;\n      } while (iVar23 == 0x30);\n      pbVar20 = pbVar20 + -iVar19;\n    }\n    if (9 < (iVar23 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar21 = 0;\n    iVar6 = 0;\n    uVar17 = 0;\n    pbVar22 = pbVar20;\n    do {\n      pbVar22 = pbVar22 + iVar19;\n      uVar9 = uVar17 * 4;\n      uVar24 = uVar17 >> 0x1e;\n      uVar18 = uVar17 * 5;\n      uVar15 = uVar17 * 10;\n      uVar10 = uVar15 + iVar23;\n      uVar17 = uVar10 - 0x30;\n      iVar6 = (uint)(uVar17 < uVar10) +\n              (uint)(uVar10 < uVar15) +\n              (uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2) +\n              (iVar23 >> 0x1f) + -1;\n      iVar21 = iVar21 + iVar19;\n      if (pbVar16 <= pbVar22) break;\n      iVar23 = (int)(char)*pbVar22;\n    } while ((iVar23 - 0x30U & 0xff) < 10);\n    if (-1 < iVar6) goto LAB_0003fd54;\n    if (bVar3) {\n      uVar14 = 0;\n      uVar11 = 0x80000000;\n    }\n    else {\n      uVar14 = 0xffffffff;\n      uVar11 = 0x7fffffff;\n    }\n    *(undefined4 *)((int)pNum + 4) = uVar14;\n    *(undefined4 *)pNum = uVar11;\nLAB_0003fc5c:\n    if ((uVar5 != 0) || (pbVar16 <= pbVar22)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar21 = 0;\n    iVar6 = 0;\n    uVar17 = 0;\n    pbVar22 = pbVar20;\nLAB_0003fd54:\n    if (bVar3) {\n      *(uint *)((int)pNum + 4) = -uVar17;\n      *(uint *)pNum = -(uint)(-uVar17 != 0) - iVar6;\n    }\n    else {\n      *(int *)pNum = iVar6;\n      *(uint *)((int)pNum + 4) = uVar17;\n    }\n    if (iVar21 != 0) goto LAB_0003fc5c;\n    if (pbVar8 == pbVar20) {\n      return 1;\n    }\n    if (uVar5 != 0) {\n      return uVar5;\n    }\n    if (pbVar16 <= pbVar22) {\n      return 0;\n    }\n  }\n  pbVar8 = pbVar20 + iVar21;\n  do {\n    bVar1 = *pbVar8;\n    pbVar8 = pbVar8 + iVar19;\n    if ((puVar4[bVar1 - 0x3d18] & 1) == 0) {\n      uVar5 = 1;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar8 < pbVar16);\n  uVar5 = 0;\nLAB_0003fc74:\n  if (iVar21 < iVar19 * 0x13) {\n    return uVar5;\n  }\n  if (iVar19 * 0x13 == iVar21) {\n    iVar23 = ((char)*pbVar20 + -0x39) * 10;\n    if (iVar23 == 0) {\n      pcVar12 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar16 = pbVar20 + iVar19;\n      do {\n        pcVar13 = pcVar12 + 1;\n        iVar23 = ((int)(char)*pbVar16 - (int)*pcVar12) * 10;\n        pbVar16 = pbVar16 + iVar19;\n        if (iVar23 != 0) goto LAB_0003fcf8;\n        pcVar12 = pcVar13;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar13);\n      iVar23 = (char)(pbVar20 + iVar19)[iVar19 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar23 < 0) {\n      return uVar5;\n    }\n  }\n  else {\n    iVar23 = 1;\n  }\n  if (bVar3) {\n    *(undefined4 *)((int)pNum + 4) = 0;\n    *(undefined4 *)pNum = 0x80000000;\n  }\n  else {\n    *(undefined4 *)((int)pNum + 4) = 0xffffffff;\n    *(undefined4 *)pNum = 0x7fffffff;\n  }\n  if (iVar23 == 0) {\n    if (!bVar3) {\n      uVar5 = 3;\n    }\n    return uVar5;\n  }\n  return 2;\n}\n\n" (function_definition "int sqlite3Atoi64(char *zNum,i64 *pNum,int length,u8 enc)\n\n{\n  byte bVar1;\n  bool bVar2;\n  bool bVar3;\n  undefined *puVar4;\n  uint uVar5;\n  char cVar7;\n  int iVar6;\n  byte *pbVar8;\n  uint uVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  char *pcVar12;\n  char *pcVar13;\n  undefined3 in_register_0000001c;\n  undefined4 uVar14;\n  uint uVar15;\n  byte *pbVar16;\n  uint uVar17;\n  uint uVar18;\n  int iVar19;\n  byte *pbVar20;\n  int iVar21;\n  byte *pbVar22;\n  int iVar23;\n  uint uVar24;\n  \n  puVar4 = PTR_DAT_00190b94;\n  pbVar16 = (byte *)(zNum + length);\n  if (CONCAT31(in_register_0000001c,enc) == 1) {\n    uVar5 = 0;\n    iVar19 = 1;\n  }\n  else {\n    uVar17 = 3 - CONCAT31(in_register_0000001c,enc);\n    uVar5 = (uint)((int)uVar17 < length);\n    if (uVar5 != 0) {\n      cVar7 = zNum[uVar17];\n      while (uVar18 = uVar17 + 2, cVar7 == '\0') {\n        uVar5 = (uint)((int)uVar18 < length);\n        uVar17 = uVar18;\n        if (uVar5 == 0) break;\n        cVar7 = zNum[uVar18];\n      }\n    }\n    pbVar16 = (byte *)(zNum + (uVar17 ^ 1));\n    iVar19 = 2;\n    zNum = zNum + (enc & 1);\n  }\n  bVar2 = zNum < pbVar16;\n  if (!bVar2) {\n    *(undefined4 *)((int)pNum + 4) = 0;\n    *(undefined4 *)pNum = 0;\n    return 1;\n  }\n  bVar1 = *zNum;\n  while (zNum = (char *)((byte *)zNum + iVar19), (PTR_DAT_00190b94[bVar1 - 0x3d18] & 1) != 0) {\n    bVar2 = zNum < pbVar16;\n    if (!bVar2) {\n      *(undefined4 *)((int)pNum + 4) = 0;\n      *(undefined4 *)pNum = 0;\n      return 1;\n    }\n    bVar1 = *zNum;\n  }\n  pbVar8 = (byte *)zNum + -iVar19;\n  if (bVar1 == 0x2d) {\n    pbVar8 = pbVar8 + iVar19;\n    bVar3 = true;\n    bVar2 = pbVar8 < pbVar16;\n  }\n  else {\n    bVar3 = false;\n    if (bVar1 == 0x2b) {\n      pbVar8 = pbVar8 + iVar19;\n      bVar2 = pbVar8 < pbVar16;\n    }\n  }\n  pbVar20 = pbVar8;\n  if (bVar2) {\n    iVar23 = (int)(char)*pbVar8;\n    if (iVar23 == 0x30) {\n      pbVar20 = pbVar8 + iVar19;\n      do {\n        if (pbVar16 <= pbVar20) goto LAB_0003fd48;\n        iVar23 = (int)(char)*pbVar20;\n        pbVar20 = pbVar20 + iVar19;\n      } while (iVar23 == 0x30);\n      pbVar20 = pbVar20 + -iVar19;\n    }\n    if (9 < (iVar23 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar21 = 0;\n    iVar6 = 0;\n    uVar17 = 0;\n    pbVar22 = pbVar20;\n    do {\n      pbVar22 = pbVar22 + iVar19;\n      uVar9 = uVar17 * 4;\n      uVar24 = uVar17 >> 0x1e;\n      uVar18 = uVar17 * 5;\n      uVar15 = uVar17 * 10;\n      uVar10 = uVar15 + iVar23;\n      uVar17 = uVar10 - 0x30;\n      iVar6 = (uint)(uVar17 < uVar10) +\n              (uint)(uVar10 < uVar15) +\n              (uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2) +\n              (iVar23 >> 0x1f) + -1;\n      iVar21 = iVar21 + iVar19;\n      if (pbVar16 <= pbVar22) break;\n      iVar23 = (int)(char)*pbVar22;\n    } while ((iVar23 - 0x30U & 0xff) < 10);\n    if (-1 < iVar6) goto LAB_0003fd54;\n    if (bVar3) {\n      uVar14 = 0;\n      uVar11 = 0x80000000;\n    }\n    else {\n      uVar14 = 0xffffffff;\n      uVar11 = 0x7fffffff;\n    }\n    *(undefined4 *)((int)pNum + 4) = uVar14;\n    *(undefined4 *)pNum = uVar11;\nLAB_0003fc5c:\n    if ((uVar5 != 0) || (pbVar16 <= pbVar22)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar21 = 0;\n    iVar6 = 0;\n    uVar17 = 0;\n    pbVar22 = pbVar20;\nLAB_0003fd54:\n    if (bVar3) {\n      *(uint *)((int)pNum + 4) = -uVar17;\n      *(uint *)pNum = -(uint)(-uVar17 != 0) - iVar6;\n    }\n    else {\n      *(int *)pNum = iVar6;\n      *(uint *)((int)pNum + 4) = uVar17;\n    }\n    if (iVar21 != 0) goto LAB_0003fc5c;\n    if (pbVar8 == pbVar20) {\n      return 1;\n    }\n    if (uVar5 != 0) {\n      return uVar5;\n    }\n    if (pbVar16 <= pbVar22) {\n      return 0;\n    }\n  }\n  pbVar8 = pbVar20 + iVar21;\n  do {\n    bVar1 = *pbVar8;\n    pbVar8 = pbVar8 + iVar19;\n    if ((puVar4[bVar1 - 0x3d18] & 1) == 0) {\n      uVar5 = 1;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar8 < pbVar16);\n  uVar5 = 0;\nLAB_0003fc74:\n  if (iVar21 < iVar19 * 0x13) {\n    return uVar5;\n  }\n  if (iVar19 * 0x13 == iVar21) {\n    iVar23 = ((char)*pbVar20 + -0x39) * 10;\n    if (iVar23 == 0) {\n      pcVar12 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar16 = pbVar20 + iVar19;\n      do {\n        pcVar13 = pcVar12 + 1;\n        iVar23 = ((int)(char)*pbVar16 - (int)*pcVar12) * 10;\n        pbVar16 = pbVar16 + iVar19;\n        if (iVar23 != 0) goto LAB_0003fcf8;\n        pcVar12 = pcVar13;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar13);\n      iVar23 = (char)(pbVar20 + iVar19)[iVar19 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar23 < 0) {\n      return uVar5;\n    }\n  }\n  else {\n    iVar23 = 1;\n  }\n  if (bVar3) {\n    *(undefined4 *)((int)pNum + 4) = 0;\n    *(undefined4 *)pNum = 0x80000000;\n  }\n  else {\n    *(undefined4 *)((int)pNum + 4) = 0xffffffff;\n    *(undefined4 *)pNum = 0x7fffffff;\n  }\n  if (iVar23 == 0) {\n    if (!bVar3) {\n      uVar5 = 3;\n    }\n    return uVar5;\n  }\n  return 2;\n}" primitive_type (function_declarator "sqlite3Atoi64(char *zNum,i64 *pNum,int length,u8 enc)" identifier (parameter_list "(char *zNum,i64 *pNum,int length,u8 enc)" ( (parameter_declaration "char *zNum" primitive_type (pointer_declarator "*zNum" * identifier)) , (parameter_declaration "i64 *pNum" type_identifier (pointer_declarator "*pNum" * identifier)) , (parameter_declaration "int length" primitive_type identifier) , (parameter_declaration "u8 enc" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  bool bVar3;\n  undefined *puVar4;\n  uint uVar5;\n  char cVar7;\n  int iVar6;\n  byte *pbVar8;\n  uint uVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  char *pcVar12;\n  char *pcVar13;\n  undefined3 in_register_0000001c;\n  undefined4 uVar14;\n  uint uVar15;\n  byte *pbVar16;\n  uint uVar17;\n  uint uVar18;\n  int iVar19;\n  byte *pbVar20;\n  int iVar21;\n  byte *pbVar22;\n  int iVar23;\n  uint uVar24;\n  \n  puVar4 = PTR_DAT_00190b94;\n  pbVar16 = (byte *)(zNum + length);\n  if (CONCAT31(in_register_0000001c,enc) == 1) {\n    uVar5 = 0;\n    iVar19 = 1;\n  }\n  else {\n    uVar17 = 3 - CONCAT31(in_register_0000001c,enc);\n    uVar5 = (uint)((int)uVar17 < length);\n    if (uVar5 != 0) {\n      cVar7 = zNum[uVar17];\n      while (uVar18 = uVar17 + 2, cVar7 == '\0') {\n        uVar5 = (uint)((int)uVar18 < length);\n        uVar17 = uVar18;\n        if (uVar5 == 0) break;\n        cVar7 = zNum[uVar18];\n      }\n    }\n    pbVar16 = (byte *)(zNum + (uVar17 ^ 1));\n    iVar19 = 2;\n    zNum = zNum + (enc & 1);\n  }\n  bVar2 = zNum < pbVar16;\n  if (!bVar2) {\n    *(undefined4 *)((int)pNum + 4) = 0;\n    *(undefined4 *)pNum = 0;\n    return 1;\n  }\n  bVar1 = *zNum;\n  while (zNum = (char *)((byte *)zNum + iVar19), (PTR_DAT_00190b94[bVar1 - 0x3d18] & 1) != 0) {\n    bVar2 = zNum < pbVar16;\n    if (!bVar2) {\n      *(undefined4 *)((int)pNum + 4) = 0;\n      *(undefined4 *)pNum = 0;\n      return 1;\n    }\n    bVar1 = *zNum;\n  }\n  pbVar8 = (byte *)zNum + -iVar19;\n  if (bVar1 == 0x2d) {\n    pbVar8 = pbVar8 + iVar19;\n    bVar3 = true;\n    bVar2 = pbVar8 < pbVar16;\n  }\n  else {\n    bVar3 = false;\n    if (bVar1 == 0x2b) {\n      pbVar8 = pbVar8 + iVar19;\n      bVar2 = pbVar8 < pbVar16;\n    }\n  }\n  pbVar20 = pbVar8;\n  if (bVar2) {\n    iVar23 = (int)(char)*pbVar8;\n    if (iVar23 == 0x30) {\n      pbVar20 = pbVar8 + iVar19;\n      do {\n        if (pbVar16 <= pbVar20) goto LAB_0003fd48;\n        iVar23 = (int)(char)*pbVar20;\n        pbVar20 = pbVar20 + iVar19;\n      } while (iVar23 == 0x30);\n      pbVar20 = pbVar20 + -iVar19;\n    }\n    if (9 < (iVar23 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar21 = 0;\n    iVar6 = 0;\n    uVar17 = 0;\n    pbVar22 = pbVar20;\n    do {\n      pbVar22 = pbVar22 + iVar19;\n      uVar9 = uVar17 * 4;\n      uVar24 = uVar17 >> 0x1e;\n      uVar18 = uVar17 * 5;\n      uVar15 = uVar17 * 10;\n      uVar10 = uVar15 + iVar23;\n      uVar17 = uVar10 - 0x30;\n      iVar6 = (uint)(uVar17 < uVar10) +\n              (uint)(uVar10 < uVar15) +\n              (uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2) +\n              (iVar23 >> 0x1f) + -1;\n      iVar21 = iVar21 + iVar19;\n      if (pbVar16 <= pbVar22) break;\n      iVar23 = (int)(char)*pbVar22;\n    } while ((iVar23 - 0x30U & 0xff) < 10);\n    if (-1 < iVar6) goto LAB_0003fd54;\n    if (bVar3) {\n      uVar14 = 0;\n      uVar11 = 0x80000000;\n    }\n    else {\n      uVar14 = 0xffffffff;\n      uVar11 = 0x7fffffff;\n    }\n    *(undefined4 *)((int)pNum + 4) = uVar14;\n    *(undefined4 *)pNum = uVar11;\nLAB_0003fc5c:\n    if ((uVar5 != 0) || (pbVar16 <= pbVar22)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar21 = 0;\n    iVar6 = 0;\n    uVar17 = 0;\n    pbVar22 = pbVar20;\nLAB_0003fd54:\n    if (bVar3) {\n      *(uint *)((int)pNum + 4) = -uVar17;\n      *(uint *)pNum = -(uint)(-uVar17 != 0) - iVar6;\n    }\n    else {\n      *(int *)pNum = iVar6;\n      *(uint *)((int)pNum + 4) = uVar17;\n    }\n    if (iVar21 != 0) goto LAB_0003fc5c;\n    if (pbVar8 == pbVar20) {\n      return 1;\n    }\n    if (uVar5 != 0) {\n      return uVar5;\n    }\n    if (pbVar16 <= pbVar22) {\n      return 0;\n    }\n  }\n  pbVar8 = pbVar20 + iVar21;\n  do {\n    bVar1 = *pbVar8;\n    pbVar8 = pbVar8 + iVar19;\n    if ((puVar4[bVar1 - 0x3d18] & 1) == 0) {\n      uVar5 = 1;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar8 < pbVar16);\n  uVar5 = 0;\nLAB_0003fc74:\n  if (iVar21 < iVar19 * 0x13) {\n    return uVar5;\n  }\n  if (iVar19 * 0x13 == iVar21) {\n    iVar23 = ((char)*pbVar20 + -0x39) * 10;\n    if (iVar23 == 0) {\n      pcVar12 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar16 = pbVar20 + iVar19;\n      do {\n        pcVar13 = pcVar12 + 1;\n        iVar23 = ((int)(char)*pbVar16 - (int)*pcVar12) * 10;\n        pbVar16 = pbVar16 + iVar19;\n        if (iVar23 != 0) goto LAB_0003fcf8;\n        pcVar12 = pcVar13;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar13);\n      iVar23 = (char)(pbVar20 + iVar19)[iVar19 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar23 < 0) {\n      return uVar5;\n    }\n  }\n  else {\n    iVar23 = 1;\n  }\n  if (bVar3) {\n    *(undefined4 *)((int)pNum + 4) = 0;\n    *(undefined4 *)pNum = 0x80000000;\n  }\n  else {\n    *(undefined4 *)((int)pNum + 4) = 0xffffffff;\n    *(undefined4 *)pNum = 0x7fffffff;\n  }\n  if (iVar23 == 0) {\n    if (!bVar3) {\n      uVar5 = 3;\n    }\n    return uVar5;\n  }\n  return 2;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "undefined3 in_register_0000001c;" type_identifier identifier ;) (declaration "undefined4 uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "byte *pbVar20;" type_identifier (pointer_declarator "*pbVar20" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "byte *pbVar22;" type_identifier (pointer_declarator "*pbVar22" * identifier) ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "uint uVar24;" type_identifier identifier ;) (expression_statement "puVar4 = PTR_DAT_00190b94;" (assignment_expression "puVar4 = PTR_DAT_00190b94" identifier = identifier) ;) (expression_statement "pbVar16 = (byte *)(zNum + length);" (assignment_expression "pbVar16 = (byte *)(zNum + length)" identifier = (cast_expression "(byte *)(zNum + length)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(zNum + length)" ( (binary_expression "zNum + length" identifier + identifier) )))) ;) (if_statement "if (CONCAT31(in_register_0000001c,enc) == 1) {\n    uVar5 = 0;\n    iVar19 = 1;\n  }\n  else {\n    uVar17 = 3 - CONCAT31(in_register_0000001c,enc);\n    uVar5 = (uint)((int)uVar17 < length);\n    if (uVar5 != 0) {\n      cVar7 = zNum[uVar17];\n      while (uVar18 = uVar17 + 2, cVar7 == '\0') {\n        uVar5 = (uint)((int)uVar18 < length);\n        uVar17 = uVar18;\n        if (uVar5 == 0) break;\n        cVar7 = zNum[uVar18];\n      }\n    }\n    pbVar16 = (byte *)(zNum + (uVar17 ^ 1));\n    iVar19 = 2;\n    zNum = zNum + (enc & 1);\n  }" if (parenthesized_expression "(CONCAT31(in_register_0000001c,enc) == 1)" ( (binary_expression "CONCAT31(in_register_0000001c,enc) == 1" (call_expression "CONCAT31(in_register_0000001c,enc)" identifier (argument_list "(in_register_0000001c,enc)" ( identifier , identifier ))) == number_literal) )) (compound_statement "{\n    uVar5 = 0;\n    iVar19 = 1;\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    uVar17 = 3 - CONCAT31(in_register_0000001c,enc);\n    uVar5 = (uint)((int)uVar17 < length);\n    if (uVar5 != 0) {\n      cVar7 = zNum[uVar17];\n      while (uVar18 = uVar17 + 2, cVar7 == '\0') {\n        uVar5 = (uint)((int)uVar18 < length);\n        uVar17 = uVar18;\n        if (uVar5 == 0) break;\n        cVar7 = zNum[uVar18];\n      }\n    }\n    pbVar16 = (byte *)(zNum + (uVar17 ^ 1));\n    iVar19 = 2;\n    zNum = zNum + (enc & 1);\n  }" else (compound_statement "{\n    uVar17 = 3 - CONCAT31(in_register_0000001c,enc);\n    uVar5 = (uint)((int)uVar17 < length);\n    if (uVar5 != 0) {\n      cVar7 = zNum[uVar17];\n      while (uVar18 = uVar17 + 2, cVar7 == '\0') {\n        uVar5 = (uint)((int)uVar18 < length);\n        uVar17 = uVar18;\n        if (uVar5 == 0) break;\n        cVar7 = zNum[uVar18];\n      }\n    }\n    pbVar16 = (byte *)(zNum + (uVar17 ^ 1));\n    iVar19 = 2;\n    zNum = zNum + (enc & 1);\n  }" { (expression_statement "uVar17 = 3 - CONCAT31(in_register_0000001c,enc);" (assignment_expression "uVar17 = 3 - CONCAT31(in_register_0000001c,enc)" identifier = (binary_expression "3 - CONCAT31(in_register_0000001c,enc)" number_literal - (call_expression "CONCAT31(in_register_0000001c,enc)" identifier (argument_list "(in_register_0000001c,enc)" ( identifier , identifier ))))) ;) (expression_statement "uVar5 = (uint)((int)uVar17 < length);" (assignment_expression "uVar5 = (uint)((int)uVar17 < length)" identifier = (call_expression "(uint)((int)uVar17 < length)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar17 < length)" ( (binary_expression "(int)uVar17 < length" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )))) ;) (if_statement "if (uVar5 != 0) {\n      cVar7 = zNum[uVar17];\n      while (uVar18 = uVar17 + 2, cVar7 == '\0') {\n        uVar5 = (uint)((int)uVar18 < length);\n        uVar17 = uVar18;\n        if (uVar5 == 0) break;\n        cVar7 = zNum[uVar18];\n      }\n    }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      cVar7 = zNum[uVar17];\n      while (uVar18 = uVar17 + 2, cVar7 == '\0') {\n        uVar5 = (uint)((int)uVar18 < length);\n        uVar17 = uVar18;\n        if (uVar5 == 0) break;\n        cVar7 = zNum[uVar18];\n      }\n    }" { (expression_statement "cVar7 = zNum[uVar17];" (assignment_expression "cVar7 = zNum[uVar17]" identifier = (subscript_expression "zNum[uVar17]" identifier [ identifier ])) ;) (while_statement "while (uVar18 = uVar17 + 2, cVar7 == '\0') {\n        uVar5 = (uint)((int)uVar18 < length);\n        uVar17 = uVar18;\n        if (uVar5 == 0) break;\n        cVar7 = zNum[uVar18];\n      }" while (parenthesized_expression "(uVar18 = uVar17 + 2, cVar7 == '\0')" ( (comma_expression "uVar18 = uVar17 + 2, cVar7 == '\0'" (assignment_expression "uVar18 = uVar17 + 2" identifier = (binary_expression "uVar17 + 2" identifier + number_literal)) , (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) )) (compound_statement "{\n        uVar5 = (uint)((int)uVar18 < length);\n        uVar17 = uVar18;\n        if (uVar5 == 0) break;\n        cVar7 = zNum[uVar18];\n      }" { (expression_statement "uVar5 = (uint)((int)uVar18 < length);" (assignment_expression "uVar5 = (uint)((int)uVar18 < length)" identifier = (call_expression "(uint)((int)uVar18 < length)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar18 < length)" ( (binary_expression "(int)uVar18 < length" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )))) ;) (expression_statement "uVar17 = uVar18;" (assignment_expression "uVar17 = uVar18" identifier = identifier) ;) (if_statement "if (uVar5 == 0) break;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "cVar7 = zNum[uVar18];" (assignment_expression "cVar7 = zNum[uVar18]" identifier = (subscript_expression "zNum[uVar18]" identifier [ identifier ])) ;) })) })) (expression_statement "pbVar16 = (byte *)(zNum + (uVar17 ^ 1));" (assignment_expression "pbVar16 = (byte *)(zNum + (uVar17 ^ 1))" identifier = (cast_expression "(byte *)(zNum + (uVar17 ^ 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(zNum + (uVar17 ^ 1))" ( (binary_expression "zNum + (uVar17 ^ 1)" identifier + (parenthesized_expression "(uVar17 ^ 1)" ( (binary_expression "uVar17 ^ 1" identifier ^ number_literal) ))) )))) ;) (expression_statement "iVar19 = 2;" (assignment_expression "iVar19 = 2" identifier = number_literal) ;) (expression_statement "zNum = zNum + (enc & 1);" (assignment_expression "zNum = zNum + (enc & 1)" identifier = (binary_expression "zNum + (enc & 1)" identifier + (parenthesized_expression "(enc & 1)" ( (binary_expression "enc & 1" identifier & number_literal) )))) ;) }))) (expression_statement "bVar2 = zNum < pbVar16;" (assignment_expression "bVar2 = zNum < pbVar16" identifier = (binary_expression "zNum < pbVar16" identifier < identifier)) ;) (if_statement "if (!bVar2) {\n    *(undefined4 *)((int)pNum + 4) = 0;\n    *(undefined4 *)pNum = 0;\n    return 1;\n  }" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (compound_statement "{\n    *(undefined4 *)((int)pNum + 4) = 0;\n    *(undefined4 *)pNum = 0;\n    return 1;\n  }" { (expression_statement "*(undefined4 *)((int)pNum + 4) = 0;" (assignment_expression "*(undefined4 *)((int)pNum + 4) = 0" (pointer_expression "*(undefined4 *)((int)pNum + 4)" * (cast_expression "(undefined4 *)((int)pNum + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pNum + 4)" ( (binary_expression "(int)pNum + 4" (cast_expression "(int)pNum" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)pNum = 0;" (assignment_expression "*(undefined4 *)pNum = 0" (pointer_expression "*(undefined4 *)pNum" * (cast_expression "(undefined4 *)pNum" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "bVar1 = *zNum;" (assignment_expression "bVar1 = *zNum" identifier = (pointer_expression "*zNum" * identifier)) ;) (while_statement "while (zNum = (char *)((byte *)zNum + iVar19), (PTR_DAT_00190b94[bVar1 - 0x3d18] & 1) != 0) {\n    bVar2 = zNum < pbVar16;\n    if (!bVar2) {\n      *(undefined4 *)((int)pNum + 4) = 0;\n      *(undefined4 *)pNum = 0;\n      return 1;\n    }\n    bVar1 = *zNum;\n  }" while (parenthesized_expression "(zNum = (char *)((byte *)zNum + iVar19), (PTR_DAT_00190b94[bVar1 - 0x3d18] & 1) != 0)" ( (comma_expression "zNum = (char *)((byte *)zNum + iVar19), (PTR_DAT_00190b94[bVar1 - 0x3d18] & 1) != 0" (assignment_expression "zNum = (char *)((byte *)zNum + iVar19)" identifier = (cast_expression "(char *)((byte *)zNum + iVar19)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)zNum + iVar19)" ( (binary_expression "(byte *)zNum + iVar19" (cast_expression "(byte *)zNum" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + identifier) )))) , (binary_expression "(PTR_DAT_00190b94[bVar1 - 0x3d18] & 1) != 0" (parenthesized_expression "(PTR_DAT_00190b94[bVar1 - 0x3d18] & 1)" ( (binary_expression "PTR_DAT_00190b94[bVar1 - 0x3d18] & 1" (subscript_expression "PTR_DAT_00190b94[bVar1 - 0x3d18]" identifier [ (binary_expression "bVar1 - 0x3d18" identifier - number_literal) ]) & number_literal) )) != number_literal)) )) (compound_statement "{\n    bVar2 = zNum < pbVar16;\n    if (!bVar2) {\n      *(undefined4 *)((int)pNum + 4) = 0;\n      *(undefined4 *)pNum = 0;\n      return 1;\n    }\n    bVar1 = *zNum;\n  }" { (expression_statement "bVar2 = zNum < pbVar16;" (assignment_expression "bVar2 = zNum < pbVar16" identifier = (binary_expression "zNum < pbVar16" identifier < identifier)) ;) (if_statement "if (!bVar2) {\n      *(undefined4 *)((int)pNum + 4) = 0;\n      *(undefined4 *)pNum = 0;\n      return 1;\n    }" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (compound_statement "{\n      *(undefined4 *)((int)pNum + 4) = 0;\n      *(undefined4 *)pNum = 0;\n      return 1;\n    }" { (expression_statement "*(undefined4 *)((int)pNum + 4) = 0;" (assignment_expression "*(undefined4 *)((int)pNum + 4) = 0" (pointer_expression "*(undefined4 *)((int)pNum + 4)" * (cast_expression "(undefined4 *)((int)pNum + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pNum + 4)" ( (binary_expression "(int)pNum + 4" (cast_expression "(int)pNum" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)pNum = 0;" (assignment_expression "*(undefined4 *)pNum = 0" (pointer_expression "*(undefined4 *)pNum" * (cast_expression "(undefined4 *)pNum" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "bVar1 = *zNum;" (assignment_expression "bVar1 = *zNum" identifier = (pointer_expression "*zNum" * identifier)) ;) })) (expression_statement "pbVar8 = (byte *)zNum + -iVar19;" (assignment_expression "pbVar8 = (byte *)zNum + -iVar19" identifier = (binary_expression "(byte *)zNum + -iVar19" (cast_expression "(byte *)zNum" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + (unary_expression "-iVar19" - identifier))) ;) (if_statement "if (bVar1 == 0x2d) {\n    pbVar8 = pbVar8 + iVar19;\n    bVar3 = true;\n    bVar2 = pbVar8 < pbVar16;\n  }\n  else {\n    bVar3 = false;\n    if (bVar1 == 0x2b) {\n      pbVar8 = pbVar8 + iVar19;\n      bVar2 = pbVar8 < pbVar16;\n    }\n  }" if (parenthesized_expression "(bVar1 == 0x2d)" ( (binary_expression "bVar1 == 0x2d" identifier == number_literal) )) (compound_statement "{\n    pbVar8 = pbVar8 + iVar19;\n    bVar3 = true;\n    bVar2 = pbVar8 < pbVar16;\n  }" { (expression_statement "pbVar8 = pbVar8 + iVar19;" (assignment_expression "pbVar8 = pbVar8 + iVar19" identifier = (binary_expression "pbVar8 + iVar19" identifier + identifier)) ;) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (expression_statement "bVar2 = pbVar8 < pbVar16;" (assignment_expression "bVar2 = pbVar8 < pbVar16" identifier = (binary_expression "pbVar8 < pbVar16" identifier < identifier)) ;) }) (else_clause "else {\n    bVar3 = false;\n    if (bVar1 == 0x2b) {\n      pbVar8 = pbVar8 + iVar19;\n      bVar2 = pbVar8 < pbVar16;\n    }\n  }" else (compound_statement "{\n    bVar3 = false;\n    if (bVar1 == 0x2b) {\n      pbVar8 = pbVar8 + iVar19;\n      bVar2 = pbVar8 < pbVar16;\n    }\n  }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (if_statement "if (bVar1 == 0x2b) {\n      pbVar8 = pbVar8 + iVar19;\n      bVar2 = pbVar8 < pbVar16;\n    }" if (parenthesized_expression "(bVar1 == 0x2b)" ( (binary_expression "bVar1 == 0x2b" identifier == number_literal) )) (compound_statement "{\n      pbVar8 = pbVar8 + iVar19;\n      bVar2 = pbVar8 < pbVar16;\n    }" { (expression_statement "pbVar8 = pbVar8 + iVar19;" (assignment_expression "pbVar8 = pbVar8 + iVar19" identifier = (binary_expression "pbVar8 + iVar19" identifier + identifier)) ;) (expression_statement "bVar2 = pbVar8 < pbVar16;" (assignment_expression "bVar2 = pbVar8 < pbVar16" identifier = (binary_expression "pbVar8 < pbVar16" identifier < identifier)) ;) })) }))) (expression_statement "pbVar20 = pbVar8;" (assignment_expression "pbVar20 = pbVar8" identifier = identifier) ;) (if_statement "if (bVar2) {\n    iVar23 = (int)(char)*pbVar8;\n    if (iVar23 == 0x30) {\n      pbVar20 = pbVar8 + iVar19;\n      do {\n        if (pbVar16 <= pbVar20) goto LAB_0003fd48;\n        iVar23 = (int)(char)*pbVar20;\n        pbVar20 = pbVar20 + iVar19;\n      } while (iVar23 == 0x30);\n      pbVar20 = pbVar20 + -iVar19;\n    }\n    if (9 < (iVar23 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar21 = 0;\n    iVar6 = 0;\n    uVar17 = 0;\n    pbVar22 = pbVar20;\n    do {\n      pbVar22 = pbVar22 + iVar19;\n      uVar9 = uVar17 * 4;\n      uVar24 = uVar17 >> 0x1e;\n      uVar18 = uVar17 * 5;\n      uVar15 = uVar17 * 10;\n      uVar10 = uVar15 + iVar23;\n      uVar17 = uVar10 - 0x30;\n      iVar6 = (uint)(uVar17 < uVar10) +\n              (uint)(uVar10 < uVar15) +\n              (uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2) +\n              (iVar23 >> 0x1f) + -1;\n      iVar21 = iVar21 + iVar19;\n      if (pbVar16 <= pbVar22) break;\n      iVar23 = (int)(char)*pbVar22;\n    } while ((iVar23 - 0x30U & 0xff) < 10);\n    if (-1 < iVar6) goto LAB_0003fd54;\n    if (bVar3) {\n      uVar14 = 0;\n      uVar11 = 0x80000000;\n    }\n    else {\n      uVar14 = 0xffffffff;\n      uVar11 = 0x7fffffff;\n    }\n    *(undefined4 *)((int)pNum + 4) = uVar14;\n    *(undefined4 *)pNum = uVar11;\nLAB_0003fc5c:\n    if ((uVar5 != 0) || (pbVar16 <= pbVar22)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar21 = 0;\n    iVar6 = 0;\n    uVar17 = 0;\n    pbVar22 = pbVar20;\nLAB_0003fd54:\n    if (bVar3) {\n      *(uint *)((int)pNum + 4) = -uVar17;\n      *(uint *)pNum = -(uint)(-uVar17 != 0) - iVar6;\n    }\n    else {\n      *(int *)pNum = iVar6;\n      *(uint *)((int)pNum + 4) = uVar17;\n    }\n    if (iVar21 != 0) goto LAB_0003fc5c;\n    if (pbVar8 == pbVar20) {\n      return 1;\n    }\n    if (uVar5 != 0) {\n      return uVar5;\n    }\n    if (pbVar16 <= pbVar22) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    iVar23 = (int)(char)*pbVar8;\n    if (iVar23 == 0x30) {\n      pbVar20 = pbVar8 + iVar19;\n      do {\n        if (pbVar16 <= pbVar20) goto LAB_0003fd48;\n        iVar23 = (int)(char)*pbVar20;\n        pbVar20 = pbVar20 + iVar19;\n      } while (iVar23 == 0x30);\n      pbVar20 = pbVar20 + -iVar19;\n    }\n    if (9 < (iVar23 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar21 = 0;\n    iVar6 = 0;\n    uVar17 = 0;\n    pbVar22 = pbVar20;\n    do {\n      pbVar22 = pbVar22 + iVar19;\n      uVar9 = uVar17 * 4;\n      uVar24 = uVar17 >> 0x1e;\n      uVar18 = uVar17 * 5;\n      uVar15 = uVar17 * 10;\n      uVar10 = uVar15 + iVar23;\n      uVar17 = uVar10 - 0x30;\n      iVar6 = (uint)(uVar17 < uVar10) +\n              (uint)(uVar10 < uVar15) +\n              (uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2) +\n              (iVar23 >> 0x1f) + -1;\n      iVar21 = iVar21 + iVar19;\n      if (pbVar16 <= pbVar22) break;\n      iVar23 = (int)(char)*pbVar22;\n    } while ((iVar23 - 0x30U & 0xff) < 10);\n    if (-1 < iVar6) goto LAB_0003fd54;\n    if (bVar3) {\n      uVar14 = 0;\n      uVar11 = 0x80000000;\n    }\n    else {\n      uVar14 = 0xffffffff;\n      uVar11 = 0x7fffffff;\n    }\n    *(undefined4 *)((int)pNum + 4) = uVar14;\n    *(undefined4 *)pNum = uVar11;\nLAB_0003fc5c:\n    if ((uVar5 != 0) || (pbVar16 <= pbVar22)) goto LAB_0003fc74;\n  }" { (expression_statement "iVar23 = (int)(char)*pbVar8;" (assignment_expression "iVar23 = (int)(char)*pbVar8" identifier = (cast_expression "(int)(char)*pbVar8" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar8" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar8" * identifier)))) ;) (if_statement "if (iVar23 == 0x30) {\n      pbVar20 = pbVar8 + iVar19;\n      do {\n        if (pbVar16 <= pbVar20) goto LAB_0003fd48;\n        iVar23 = (int)(char)*pbVar20;\n        pbVar20 = pbVar20 + iVar19;\n      } while (iVar23 == 0x30);\n      pbVar20 = pbVar20 + -iVar19;\n    }" if (parenthesized_expression "(iVar23 == 0x30)" ( (binary_expression "iVar23 == 0x30" identifier == number_literal) )) (compound_statement "{\n      pbVar20 = pbVar8 + iVar19;\n      do {\n        if (pbVar16 <= pbVar20) goto LAB_0003fd48;\n        iVar23 = (int)(char)*pbVar20;\n        pbVar20 = pbVar20 + iVar19;\n      } while (iVar23 == 0x30);\n      pbVar20 = pbVar20 + -iVar19;\n    }" { (expression_statement "pbVar20 = pbVar8 + iVar19;" (assignment_expression "pbVar20 = pbVar8 + iVar19" identifier = (binary_expression "pbVar8 + iVar19" identifier + identifier)) ;) (do_statement "do {\n        if (pbVar16 <= pbVar20) goto LAB_0003fd48;\n        iVar23 = (int)(char)*pbVar20;\n        pbVar20 = pbVar20 + iVar19;\n      } while (iVar23 == 0x30);" do (compound_statement "{\n        if (pbVar16 <= pbVar20) goto LAB_0003fd48;\n        iVar23 = (int)(char)*pbVar20;\n        pbVar20 = pbVar20 + iVar19;\n      }" { (if_statement "if (pbVar16 <= pbVar20) goto LAB_0003fd48;" if (parenthesized_expression "(pbVar16 <= pbVar20)" ( (binary_expression "pbVar16 <= pbVar20" identifier <= identifier) )) (goto_statement "goto LAB_0003fd48;" goto statement_identifier ;)) (expression_statement "iVar23 = (int)(char)*pbVar20;" (assignment_expression "iVar23 = (int)(char)*pbVar20" identifier = (cast_expression "(int)(char)*pbVar20" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar20" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar20" * identifier)))) ;) (expression_statement "pbVar20 = pbVar20 + iVar19;" (assignment_expression "pbVar20 = pbVar20 + iVar19" identifier = (binary_expression "pbVar20 + iVar19" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar23 == 0x30)" ( (binary_expression "iVar23 == 0x30" identifier == number_literal) )) ;) (expression_statement "pbVar20 = pbVar20 + -iVar19;" (assignment_expression "pbVar20 = pbVar20 + -iVar19" identifier = (binary_expression "pbVar20 + -iVar19" identifier + (unary_expression "-iVar19" - identifier))) ;) })) (if_statement "if (9 < (iVar23 - 0x30U & 0xff)) goto LAB_0003fd48;" if (parenthesized_expression "(9 < (iVar23 - 0x30U & 0xff))" ( (binary_expression "9 < (iVar23 - 0x30U & 0xff)" number_literal < (parenthesized_expression "(iVar23 - 0x30U & 0xff)" ( (binary_expression "iVar23 - 0x30U & 0xff" (binary_expression "iVar23 - 0x30U" identifier - number_literal) & number_literal) ))) )) (goto_statement "goto LAB_0003fd48;" goto statement_identifier ;)) (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "pbVar22 = pbVar20;" (assignment_expression "pbVar22 = pbVar20" identifier = identifier) ;) (do_statement "do {\n      pbVar22 = pbVar22 + iVar19;\n      uVar9 = uVar17 * 4;\n      uVar24 = uVar17 >> 0x1e;\n      uVar18 = uVar17 * 5;\n      uVar15 = uVar17 * 10;\n      uVar10 = uVar15 + iVar23;\n      uVar17 = uVar10 - 0x30;\n      iVar6 = (uint)(uVar17 < uVar10) +\n              (uint)(uVar10 < uVar15) +\n              (uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2) +\n              (iVar23 >> 0x1f) + -1;\n      iVar21 = iVar21 + iVar19;\n      if (pbVar16 <= pbVar22) break;\n      iVar23 = (int)(char)*pbVar22;\n    } while ((iVar23 - 0x30U & 0xff) < 10);" do (compound_statement "{\n      pbVar22 = pbVar22 + iVar19;\n      uVar9 = uVar17 * 4;\n      uVar24 = uVar17 >> 0x1e;\n      uVar18 = uVar17 * 5;\n      uVar15 = uVar17 * 10;\n      uVar10 = uVar15 + iVar23;\n      uVar17 = uVar10 - 0x30;\n      iVar6 = (uint)(uVar17 < uVar10) +\n              (uint)(uVar10 < uVar15) +\n              (uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2) +\n              (iVar23 >> 0x1f) + -1;\n      iVar21 = iVar21 + iVar19;\n      if (pbVar16 <= pbVar22) break;\n      iVar23 = (int)(char)*pbVar22;\n    }" { (expression_statement "pbVar22 = pbVar22 + iVar19;" (assignment_expression "pbVar22 = pbVar22 + iVar19" identifier = (binary_expression "pbVar22 + iVar19" identifier + identifier)) ;) (expression_statement "uVar9 = uVar17 * 4;" (assignment_expression "uVar9 = uVar17 * 4" identifier = (binary_expression "uVar17 * 4" identifier * number_literal)) ;) (expression_statement "uVar24 = uVar17 >> 0x1e;" (assignment_expression "uVar24 = uVar17 >> 0x1e" identifier = (binary_expression "uVar17 >> 0x1e" identifier >> number_literal)) ;) (expression_statement "uVar18 = uVar17 * 5;" (assignment_expression "uVar18 = uVar17 * 5" identifier = (binary_expression "uVar17 * 5" identifier * number_literal)) ;) (expression_statement "uVar15 = uVar17 * 10;" (assignment_expression "uVar15 = uVar17 * 10" identifier = (binary_expression "uVar17 * 10" identifier * number_literal)) ;) (expression_statement "uVar10 = uVar15 + iVar23;" (assignment_expression "uVar10 = uVar15 + iVar23" identifier = (binary_expression "uVar15 + iVar23" identifier + identifier)) ;) (expression_statement "uVar17 = uVar10 - 0x30;" (assignment_expression "uVar17 = uVar10 - 0x30" identifier = (binary_expression "uVar10 - 0x30" identifier - number_literal)) ;) (expression_statement "iVar6 = (uint)(uVar17 < uVar10) +\n              (uint)(uVar10 < uVar15) +\n              (uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2) +\n              (iVar23 >> 0x1f) + -1;" (assignment_expression "iVar6 = (uint)(uVar17 < uVar10) +\n              (uint)(uVar10 < uVar15) +\n              (uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2) +\n              (iVar23 >> 0x1f) + -1" identifier = (binary_expression "(uint)(uVar17 < uVar10) +\n              (uint)(uVar10 < uVar15) +\n              (uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2) +\n              (iVar23 >> 0x1f) + -1" (binary_expression "(uint)(uVar17 < uVar10) +\n              (uint)(uVar10 < uVar15) +\n              (uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2) +\n              (iVar23 >> 0x1f)" (binary_expression "(uint)(uVar17 < uVar10) +\n              (uint)(uVar10 < uVar15) +\n              (uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2)" (binary_expression "(uint)(uVar17 < uVar10) +\n              (uint)(uVar10 < uVar15)" (call_expression "(uint)(uVar17 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 < uVar10)" ( (binary_expression "uVar17 < uVar10" identifier < identifier) ))) + (call_expression "(uint)(uVar10 < uVar15)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 < uVar15)" ( (binary_expression "uVar10 < uVar15" identifier < identifier) )))) + (parenthesized_expression "(uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2)" ( (binary_expression "uVar18 >> 0x1f | ((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2" (binary_expression "uVar18 >> 0x1f" identifier >> number_literal) | (binary_expression "((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6) * 2" (parenthesized_expression "((uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6)" ( (binary_expression "(uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2) + iVar6" (binary_expression "(uint)(uVar18 < uVar9) + (uVar24 | iVar6 << 2)" (call_expression "(uint)(uVar18 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 < uVar9)" ( (binary_expression "uVar18 < uVar9" identifier < identifier) ))) + (parenthesized_expression "(uVar24 | iVar6 << 2)" ( (binary_expression "uVar24 | iVar6 << 2" identifier | (binary_expression "iVar6 << 2" identifier << number_literal)) ))) + identifier) )) * number_literal)) ))) + (parenthesized_expression "(iVar23 >> 0x1f)" ( (binary_expression "iVar23 >> 0x1f" identifier >> number_literal) ))) + number_literal)) ;) (expression_statement "iVar21 = iVar21 + iVar19;" (assignment_expression "iVar21 = iVar21 + iVar19" identifier = (binary_expression "iVar21 + iVar19" identifier + identifier)) ;) (if_statement "if (pbVar16 <= pbVar22) break;" if (parenthesized_expression "(pbVar16 <= pbVar22)" ( (binary_expression "pbVar16 <= pbVar22" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar23 = (int)(char)*pbVar22;" (assignment_expression "iVar23 = (int)(char)*pbVar22" identifier = (cast_expression "(int)(char)*pbVar22" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar22" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar22" * identifier)))) ;) }) while (parenthesized_expression "((iVar23 - 0x30U & 0xff) < 10)" ( (binary_expression "(iVar23 - 0x30U & 0xff) < 10" (parenthesized_expression "(iVar23 - 0x30U & 0xff)" ( (binary_expression "iVar23 - 0x30U & 0xff" (binary_expression "iVar23 - 0x30U" identifier - number_literal) & number_literal) )) < number_literal) )) ;) (if_statement "if (-1 < iVar6) goto LAB_0003fd54;" if (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) (goto_statement "goto LAB_0003fd54;" goto statement_identifier ;)) (if_statement "if (bVar3) {\n      uVar14 = 0;\n      uVar11 = 0x80000000;\n    }\n    else {\n      uVar14 = 0xffffffff;\n      uVar11 = 0x7fffffff;\n    }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n      uVar14 = 0;\n      uVar11 = 0x80000000;\n    }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = 0x80000000;" (assignment_expression "uVar11 = 0x80000000" identifier = number_literal) ;) }) (else_clause "else {\n      uVar14 = 0xffffffff;\n      uVar11 = 0x7fffffff;\n    }" else (compound_statement "{\n      uVar14 = 0xffffffff;\n      uVar11 = 0x7fffffff;\n    }" { (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) (expression_statement "uVar11 = 0x7fffffff;" (assignment_expression "uVar11 = 0x7fffffff" identifier = number_literal) ;) }))) (expression_statement "*(undefined4 *)((int)pNum + 4) = uVar14;" (assignment_expression "*(undefined4 *)((int)pNum + 4) = uVar14" (pointer_expression "*(undefined4 *)((int)pNum + 4)" * (cast_expression "(undefined4 *)((int)pNum + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pNum + 4)" ( (binary_expression "(int)pNum + 4" (cast_expression "(int)pNum" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)pNum = uVar11;" (assignment_expression "*(undefined4 *)pNum = uVar11" (pointer_expression "*(undefined4 *)pNum" * (cast_expression "(undefined4 *)pNum" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (labeled_statement "LAB_0003fc5c:\n    if ((uVar5 != 0) || (pbVar16 <= pbVar22)) goto LAB_0003fc74;" statement_identifier : (if_statement "if ((uVar5 != 0) || (pbVar16 <= pbVar22)) goto LAB_0003fc74;" if (parenthesized_expression "((uVar5 != 0) || (pbVar16 <= pbVar22))" ( (binary_expression "(uVar5 != 0) || (pbVar16 <= pbVar22)" (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) || (parenthesized_expression "(pbVar16 <= pbVar22)" ( (binary_expression "pbVar16 <= pbVar22" identifier <= identifier) ))) )) (goto_statement "goto LAB_0003fc74;" goto statement_identifier ;))) }) (else_clause "else {\nLAB_0003fd48:\n    iVar21 = 0;\n    iVar6 = 0;\n    uVar17 = 0;\n    pbVar22 = pbVar20;\nLAB_0003fd54:\n    if (bVar3) {\n      *(uint *)((int)pNum + 4) = -uVar17;\n      *(uint *)pNum = -(uint)(-uVar17 != 0) - iVar6;\n    }\n    else {\n      *(int *)pNum = iVar6;\n      *(uint *)((int)pNum + 4) = uVar17;\n    }\n    if (iVar21 != 0) goto LAB_0003fc5c;\n    if (pbVar8 == pbVar20) {\n      return 1;\n    }\n    if (uVar5 != 0) {\n      return uVar5;\n    }\n    if (pbVar16 <= pbVar22) {\n      return 0;\n    }\n  }" else (compound_statement "{\nLAB_0003fd48:\n    iVar21 = 0;\n    iVar6 = 0;\n    uVar17 = 0;\n    pbVar22 = pbVar20;\nLAB_0003fd54:\n    if (bVar3) {\n      *(uint *)((int)pNum + 4) = -uVar17;\n      *(uint *)pNum = -(uint)(-uVar17 != 0) - iVar6;\n    }\n    else {\n      *(int *)pNum = iVar6;\n      *(uint *)((int)pNum + 4) = uVar17;\n    }\n    if (iVar21 != 0) goto LAB_0003fc5c;\n    if (pbVar8 == pbVar20) {\n      return 1;\n    }\n    if (uVar5 != 0) {\n      return uVar5;\n    }\n    if (pbVar16 <= pbVar22) {\n      return 0;\n    }\n  }" { (labeled_statement "LAB_0003fd48:\n    iVar21 = 0;" statement_identifier : (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;)) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "pbVar22 = pbVar20;" (assignment_expression "pbVar22 = pbVar20" identifier = identifier) ;) (labeled_statement "LAB_0003fd54:\n    if (bVar3) {\n      *(uint *)((int)pNum + 4) = -uVar17;\n      *(uint *)pNum = -(uint)(-uVar17 != 0) - iVar6;\n    }\n    else {\n      *(int *)pNum = iVar6;\n      *(uint *)((int)pNum + 4) = uVar17;\n    }" statement_identifier : (if_statement "if (bVar3) {\n      *(uint *)((int)pNum + 4) = -uVar17;\n      *(uint *)pNum = -(uint)(-uVar17 != 0) - iVar6;\n    }\n    else {\n      *(int *)pNum = iVar6;\n      *(uint *)((int)pNum + 4) = uVar17;\n    }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n      *(uint *)((int)pNum + 4) = -uVar17;\n      *(uint *)pNum = -(uint)(-uVar17 != 0) - iVar6;\n    }" { (expression_statement "*(uint *)((int)pNum + 4) = -uVar17;" (assignment_expression "*(uint *)((int)pNum + 4) = -uVar17" (pointer_expression "*(uint *)((int)pNum + 4)" * (cast_expression "(uint *)((int)pNum + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pNum + 4)" ( (binary_expression "(int)pNum + 4" (cast_expression "(int)pNum" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (unary_expression "-uVar17" - identifier)) ;) (expression_statement "*(uint *)pNum = -(uint)(-uVar17 != 0) - iVar6;" (assignment_expression "*(uint *)pNum = -(uint)(-uVar17 != 0) - iVar6" (pointer_expression "*(uint *)pNum" * (cast_expression "(uint *)pNum" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "-(uint)(-uVar17 != 0) - iVar6" (unary_expression "-(uint)(-uVar17 != 0)" - (call_expression "(uint)(-uVar17 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(-uVar17 != 0)" ( (binary_expression "-uVar17 != 0" (unary_expression "-uVar17" - identifier) != number_literal) )))) - identifier)) ;) }) (else_clause "else {\n      *(int *)pNum = iVar6;\n      *(uint *)((int)pNum + 4) = uVar17;\n    }" else (compound_statement "{\n      *(int *)pNum = iVar6;\n      *(uint *)((int)pNum + 4) = uVar17;\n    }" { (expression_statement "*(int *)pNum = iVar6;" (assignment_expression "*(int *)pNum = iVar6" (pointer_expression "*(int *)pNum" * (cast_expression "(int *)pNum" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(uint *)((int)pNum + 4) = uVar17;" (assignment_expression "*(uint *)((int)pNum + 4) = uVar17" (pointer_expression "*(uint *)((int)pNum + 4)" * (cast_expression "(uint *)((int)pNum + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pNum + 4)" ( (binary_expression "(int)pNum + 4" (cast_expression "(int)pNum" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) })))) (if_statement "if (iVar21 != 0) goto LAB_0003fc5c;" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003fc5c;" goto statement_identifier ;)) (if_statement "if (pbVar8 == pbVar20) {\n      return 1;\n    }" if (parenthesized_expression "(pbVar8 == pbVar20)" ( (binary_expression "pbVar8 == pbVar20" identifier == identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (uVar5 != 0) {\n      return uVar5;\n    }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      return uVar5;\n    }" { (return_statement "return uVar5;" return identifier ;) })) (if_statement "if (pbVar16 <= pbVar22) {\n      return 0;\n    }" if (parenthesized_expression "(pbVar16 <= pbVar22)" ( (binary_expression "pbVar16 <= pbVar22" identifier <= identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "pbVar8 = pbVar20 + iVar21;" (assignment_expression "pbVar8 = pbVar20 + iVar21" identifier = (binary_expression "pbVar20 + iVar21" identifier + identifier)) ;) (do_statement "do {\n    bVar1 = *pbVar8;\n    pbVar8 = pbVar8 + iVar19;\n    if ((puVar4[bVar1 - 0x3d18] & 1) == 0) {\n      uVar5 = 1;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar8 < pbVar16);" do (compound_statement "{\n    bVar1 = *pbVar8;\n    pbVar8 = pbVar8 + iVar19;\n    if ((puVar4[bVar1 - 0x3d18] & 1) == 0) {\n      uVar5 = 1;\n      goto LAB_0003fc74;\n    }\n  }" { (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (expression_statement "pbVar8 = pbVar8 + iVar19;" (assignment_expression "pbVar8 = pbVar8 + iVar19" identifier = (binary_expression "pbVar8 + iVar19" identifier + identifier)) ;) (if_statement "if ((puVar4[bVar1 - 0x3d18] & 1) == 0) {\n      uVar5 = 1;\n      goto LAB_0003fc74;\n    }" if (parenthesized_expression "((puVar4[bVar1 - 0x3d18] & 1) == 0)" ( (binary_expression "(puVar4[bVar1 - 0x3d18] & 1) == 0" (parenthesized_expression "(puVar4[bVar1 - 0x3d18] & 1)" ( (binary_expression "puVar4[bVar1 - 0x3d18] & 1" (subscript_expression "puVar4[bVar1 - 0x3d18]" identifier [ (binary_expression "bVar1 - 0x3d18" identifier - number_literal) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar5 = 1;\n      goto LAB_0003fc74;\n    }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0003fc74;" goto statement_identifier ;) })) }) while (parenthesized_expression "(pbVar8 < pbVar16)" ( (binary_expression "pbVar8 < pbVar16" identifier < identifier) )) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0003fc74:\n  if (iVar21 < iVar19 * 0x13) {\n    return uVar5;\n  }" statement_identifier : (if_statement "if (iVar21 < iVar19 * 0x13) {\n    return uVar5;\n  }" if (parenthesized_expression "(iVar21 < iVar19 * 0x13)" ( (binary_expression "iVar21 < iVar19 * 0x13" identifier < (binary_expression "iVar19 * 0x13" identifier * number_literal)) )) (compound_statement "{\n    return uVar5;\n  }" { (return_statement "return uVar5;" return identifier ;) }))) (if_statement "if (iVar19 * 0x13 == iVar21) {\n    iVar23 = ((char)*pbVar20 + -0x39) * 10;\n    if (iVar23 == 0) {\n      pcVar12 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar16 = pbVar20 + iVar19;\n      do {\n        pcVar13 = pcVar12 + 1;\n        iVar23 = ((int)(char)*pbVar16 - (int)*pcVar12) * 10;\n        pbVar16 = pbVar16 + iVar19;\n        if (iVar23 != 0) goto LAB_0003fcf8;\n        pcVar12 = pcVar13;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar13);\n      iVar23 = (char)(pbVar20 + iVar19)[iVar19 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar23 < 0) {\n      return uVar5;\n    }\n  }\n  else {\n    iVar23 = 1;\n  }" if (parenthesized_expression "(iVar19 * 0x13 == iVar21)" ( (binary_expression "iVar19 * 0x13 == iVar21" (binary_expression "iVar19 * 0x13" identifier * number_literal) == identifier) )) (compound_statement "{\n    iVar23 = ((char)*pbVar20 + -0x39) * 10;\n    if (iVar23 == 0) {\n      pcVar12 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar16 = pbVar20 + iVar19;\n      do {\n        pcVar13 = pcVar12 + 1;\n        iVar23 = ((int)(char)*pbVar16 - (int)*pcVar12) * 10;\n        pbVar16 = pbVar16 + iVar19;\n        if (iVar23 != 0) goto LAB_0003fcf8;\n        pcVar12 = pcVar13;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar13);\n      iVar23 = (char)(pbVar20 + iVar19)[iVar19 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar23 < 0) {\n      return uVar5;\n    }\n  }" { (expression_statement "iVar23 = ((char)*pbVar20 + -0x39) * 10;" (assignment_expression "iVar23 = ((char)*pbVar20 + -0x39) * 10" identifier = (binary_expression "((char)*pbVar20 + -0x39) * 10" (parenthesized_expression "((char)*pbVar20 + -0x39)" ( (binary_expression "(char)*pbVar20 + -0x39" (cast_expression "(char)*pbVar20" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar20" * identifier)) + number_literal) )) * number_literal)) ;) (if_statement "if (iVar23 == 0) {\n      pcVar12 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar16 = pbVar20 + iVar19;\n      do {\n        pcVar13 = pcVar12 + 1;\n        iVar23 = ((int)(char)*pbVar16 - (int)*pcVar12) * 10;\n        pbVar16 = pbVar16 + iVar19;\n        if (iVar23 != 0) goto LAB_0003fcf8;\n        pcVar12 = pcVar13;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar13);\n      iVar23 = (char)(pbVar20 + iVar19)[iVar19 * 0x11] + -0x38;\n    }" if (parenthesized_expression "(iVar23 == 0)" ( (binary_expression "iVar23 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar12 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar16 = pbVar20 + iVar19;\n      do {\n        pcVar13 = pcVar12 + 1;\n        iVar23 = ((int)(char)*pbVar16 - (int)*pcVar12) * 10;\n        pbVar16 = pbVar16 + iVar19;\n        if (iVar23 != 0) goto LAB_0003fcf8;\n        pcVar12 = pcVar13;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar13);\n      iVar23 = (char)(pbVar20 + iVar19)[iVar19 * 0x11] + -0x38;\n    }" { (expression_statement "pcVar12 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;" (assignment_expression "pcVar12 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7" identifier = (binary_expression "PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7" identifier + number_literal)) ;) (expression_statement "pbVar16 = pbVar20 + iVar19;" (assignment_expression "pbVar16 = pbVar20 + iVar19" identifier = (binary_expression "pbVar20 + iVar19" identifier + identifier)) ;) (do_statement "do {\n        pcVar13 = pcVar12 + 1;\n        iVar23 = ((int)(char)*pbVar16 - (int)*pcVar12) * 10;\n        pbVar16 = pbVar16 + iVar19;\n        if (iVar23 != 0) goto LAB_0003fcf8;\n        pcVar12 = pcVar13;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar13);" do (compound_statement "{\n        pcVar13 = pcVar12 + 1;\n        iVar23 = ((int)(char)*pbVar16 - (int)*pcVar12) * 10;\n        pbVar16 = pbVar16 + iVar19;\n        if (iVar23 != 0) goto LAB_0003fcf8;\n        pcVar12 = pcVar13;\n      }" { (expression_statement "pcVar13 = pcVar12 + 1;" (assignment_expression "pcVar13 = pcVar12 + 1" identifier = (binary_expression "pcVar12 + 1" identifier + number_literal)) ;) (expression_statement "iVar23 = ((int)(char)*pbVar16 - (int)*pcVar12) * 10;" (assignment_expression "iVar23 = ((int)(char)*pbVar16 - (int)*pcVar12) * 10" identifier = (binary_expression "((int)(char)*pbVar16 - (int)*pcVar12) * 10" (parenthesized_expression "((int)(char)*pbVar16 - (int)*pcVar12)" ( (binary_expression "(int)(char)*pbVar16 - (int)*pcVar12" (cast_expression "(int)(char)*pbVar16" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar16" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar16" * identifier))) - (cast_expression "(int)*pcVar12" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar12" * identifier))) )) * number_literal)) ;) (expression_statement "pbVar16 = pbVar16 + iVar19;" (assignment_expression "pbVar16 = pbVar16 + iVar19" identifier = (binary_expression "pbVar16 + iVar19" identifier + identifier)) ;) (if_statement "if (iVar23 != 0) goto LAB_0003fcf8;" if (parenthesized_expression "(iVar23 != 0)" ( (binary_expression "iVar23 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003fcf8;" goto statement_identifier ;)) (expression_statement "pcVar12 = pcVar13;" (assignment_expression "pcVar12 = pcVar13" identifier = identifier) ;) }) while (parenthesized_expression "(PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar13)" ( (binary_expression "PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar13" (binary_expression "PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6" identifier + number_literal) != identifier) )) ;) (expression_statement "iVar23 = (char)(pbVar20 + iVar19)[iVar19 * 0x11] + -0x38;" (assignment_expression "iVar23 = (char)(pbVar20 + iVar19)[iVar19 * 0x11] + -0x38" identifier = (binary_expression "(char)(pbVar20 + iVar19)[iVar19 * 0x11] + -0x38" (cast_expression "(char)(pbVar20 + iVar19)[iVar19 * 0x11]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(pbVar20 + iVar19)[iVar19 * 0x11]" (parenthesized_expression "(pbVar20 + iVar19)" ( (binary_expression "pbVar20 + iVar19" identifier + identifier) )) [ (binary_expression "iVar19 * 0x11" identifier * number_literal) ])) + number_literal)) ;) })) (labeled_statement "LAB_0003fcf8:\n    if (iVar23 < 0) {\n      return uVar5;\n    }" statement_identifier : (if_statement "if (iVar23 < 0) {\n      return uVar5;\n    }" if (parenthesized_expression "(iVar23 < 0)" ( (binary_expression "iVar23 < 0" identifier < number_literal) )) (compound_statement "{\n      return uVar5;\n    }" { (return_statement "return uVar5;" return identifier ;) }))) }) (else_clause "else {\n    iVar23 = 1;\n  }" else (compound_statement "{\n    iVar23 = 1;\n  }" { (expression_statement "iVar23 = 1;" (assignment_expression "iVar23 = 1" identifier = number_literal) ;) }))) (if_statement "if (bVar3) {\n    *(undefined4 *)((int)pNum + 4) = 0;\n    *(undefined4 *)pNum = 0x80000000;\n  }\n  else {\n    *(undefined4 *)((int)pNum + 4) = 0xffffffff;\n    *(undefined4 *)pNum = 0x7fffffff;\n  }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n    *(undefined4 *)((int)pNum + 4) = 0;\n    *(undefined4 *)pNum = 0x80000000;\n  }" { (expression_statement "*(undefined4 *)((int)pNum + 4) = 0;" (assignment_expression "*(undefined4 *)((int)pNum + 4) = 0" (pointer_expression "*(undefined4 *)((int)pNum + 4)" * (cast_expression "(undefined4 *)((int)pNum + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pNum + 4)" ( (binary_expression "(int)pNum + 4" (cast_expression "(int)pNum" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)pNum = 0x80000000;" (assignment_expression "*(undefined4 *)pNum = 0x80000000" (pointer_expression "*(undefined4 *)pNum" * (cast_expression "(undefined4 *)pNum" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) }) (else_clause "else {\n    *(undefined4 *)((int)pNum + 4) = 0xffffffff;\n    *(undefined4 *)pNum = 0x7fffffff;\n  }" else (compound_statement "{\n    *(undefined4 *)((int)pNum + 4) = 0xffffffff;\n    *(undefined4 *)pNum = 0x7fffffff;\n  }" { (expression_statement "*(undefined4 *)((int)pNum + 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)((int)pNum + 4) = 0xffffffff" (pointer_expression "*(undefined4 *)((int)pNum + 4)" * (cast_expression "(undefined4 *)((int)pNum + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pNum + 4)" ( (binary_expression "(int)pNum + 4" (cast_expression "(int)pNum" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)pNum = 0x7fffffff;" (assignment_expression "*(undefined4 *)pNum = 0x7fffffff" (pointer_expression "*(undefined4 *)pNum" * (cast_expression "(undefined4 *)pNum" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) }))) (if_statement "if (iVar23 == 0) {\n    if (!bVar3) {\n      uVar5 = 3;\n    }\n    return uVar5;\n  }" if (parenthesized_expression "(iVar23 == 0)" ( (binary_expression "iVar23 == 0" identifier == number_literal) )) (compound_statement "{\n    if (!bVar3) {\n      uVar5 = 3;\n    }\n    return uVar5;\n  }" { (if_statement "if (!bVar3) {\n      uVar5 = 3;\n    }" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\n      uVar5 = 3;\n    }" { (expression_statement "uVar5 = 3;" (assignment_expression "uVar5 = 3" identifier = number_literal) ;) })) (return_statement "return uVar5;" return identifier ;) })) (return_statement "return 2;" return number_literal ;) })))
(translation_unit "undefined1 FUN_0003faa0(byte *param_1,int *param_2,int param_3,uint param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined1 uVar4;\n  byte bVar6;\n  int iVar5;\n  uint uVar7;\n  uint uVar8;\n  char *pcVar9;\n  char *pcVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  byte *pbVar18;\n  int iVar19;\n  uint uVar20;\n  \n  puVar3 = PTR_DAT_00190b94;\n  pbVar12 = param_1 + param_3;\n  if (param_4 == 1) {\n    uVar4 = false;\n    iVar15 = 1;\n  }\n  else {\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }\n  bVar1 = param_1 < pbVar12;\n  if (!bVar1) {\n    param_2[1] = 0;\n    *param_2 = 0;\n    return true;\n  }\n  bVar6 = *param_1;\n  while (param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0) {\n    bVar1 = param_1 < pbVar12;\n    if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }\n    bVar6 = *param_1;\n  }\n  param_1 = param_1 + -iVar15;\n  if (bVar6 == 0x2d) {\n    param_1 = param_1 + iVar15;\n    bVar2 = true;\n    bVar1 = param_1 < pbVar12;\n  }\n  else {\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }\n  pbVar16 = param_1;\n  if (bVar1) {\n    iVar19 = (int)(char)*param_1;\n    if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }\n    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\n    do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);\n    if (-1 < iVar5) goto LAB_0003fd54;\n    if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }\n    param_2[1] = iVar5;\n    *param_2 = iVar19;\nLAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }\n  pbVar18 = pbVar16 + iVar17;\n  do {\n    bVar6 = *pbVar18;\n    pbVar18 = pbVar18 + iVar15;\n    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar18 < pbVar12);\n  uVar4 = false;\nLAB_0003fc74:\n  if (iVar17 < iVar15 * 0x13) {\n    return (bool)uVar4;\n  }\n  if (iVar15 * 0x13 == iVar17) {\n    iVar19 = ((char)*pbVar16 + -0x39) * 10;\n    if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }\n  }\n  else {\n    iVar19 = 1;\n  }\n  if (bVar2) {\n    param_2[1] = 0;\n    *param_2 = -0x80000000;\n  }\n  else {\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }\n  if (iVar19 == 0) {\n    if (!bVar2) {\n      uVar4 = 3;\n    }\n    return uVar4;\n  }\n  return 2;\n}\n\n" (function_definition "undefined1 FUN_0003faa0(byte *param_1,int *param_2,int param_3,uint param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined1 uVar4;\n  byte bVar6;\n  int iVar5;\n  uint uVar7;\n  uint uVar8;\n  char *pcVar9;\n  char *pcVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  byte *pbVar18;\n  int iVar19;\n  uint uVar20;\n  \n  puVar3 = PTR_DAT_00190b94;\n  pbVar12 = param_1 + param_3;\n  if (param_4 == 1) {\n    uVar4 = false;\n    iVar15 = 1;\n  }\n  else {\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }\n  bVar1 = param_1 < pbVar12;\n  if (!bVar1) {\n    param_2[1] = 0;\n    *param_2 = 0;\n    return true;\n  }\n  bVar6 = *param_1;\n  while (param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0) {\n    bVar1 = param_1 < pbVar12;\n    if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }\n    bVar6 = *param_1;\n  }\n  param_1 = param_1 + -iVar15;\n  if (bVar6 == 0x2d) {\n    param_1 = param_1 + iVar15;\n    bVar2 = true;\n    bVar1 = param_1 < pbVar12;\n  }\n  else {\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }\n  pbVar16 = param_1;\n  if (bVar1) {\n    iVar19 = (int)(char)*param_1;\n    if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }\n    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\n    do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);\n    if (-1 < iVar5) goto LAB_0003fd54;\n    if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }\n    param_2[1] = iVar5;\n    *param_2 = iVar19;\nLAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }\n  pbVar18 = pbVar16 + iVar17;\n  do {\n    bVar6 = *pbVar18;\n    pbVar18 = pbVar18 + iVar15;\n    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar18 < pbVar12);\n  uVar4 = false;\nLAB_0003fc74:\n  if (iVar17 < iVar15 * 0x13) {\n    return (bool)uVar4;\n  }\n  if (iVar15 * 0x13 == iVar17) {\n    iVar19 = ((char)*pbVar16 + -0x39) * 10;\n    if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }\n  }\n  else {\n    iVar19 = 1;\n  }\n  if (bVar2) {\n    param_2[1] = 0;\n    *param_2 = -0x80000000;\n  }\n  else {\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }\n  if (iVar19 == 0) {\n    if (!bVar2) {\n      uVar4 = 3;\n    }\n    return uVar4;\n  }\n  return 2;\n}" type_identifier (function_declarator "FUN_0003faa0(byte *param_1,int *param_2,int param_3,uint param_4)" identifier (parameter_list "(byte *param_1,int *param_2,int param_3,uint param_4)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined1 uVar4;\n  byte bVar6;\n  int iVar5;\n  uint uVar7;\n  uint uVar8;\n  char *pcVar9;\n  char *pcVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  byte *pbVar18;\n  int iVar19;\n  uint uVar20;\n  \n  puVar3 = PTR_DAT_00190b94;\n  pbVar12 = param_1 + param_3;\n  if (param_4 == 1) {\n    uVar4 = false;\n    iVar15 = 1;\n  }\n  else {\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }\n  bVar1 = param_1 < pbVar12;\n  if (!bVar1) {\n    param_2[1] = 0;\n    *param_2 = 0;\n    return true;\n  }\n  bVar6 = *param_1;\n  while (param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0) {\n    bVar1 = param_1 < pbVar12;\n    if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }\n    bVar6 = *param_1;\n  }\n  param_1 = param_1 + -iVar15;\n  if (bVar6 == 0x2d) {\n    param_1 = param_1 + iVar15;\n    bVar2 = true;\n    bVar1 = param_1 < pbVar12;\n  }\n  else {\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }\n  pbVar16 = param_1;\n  if (bVar1) {\n    iVar19 = (int)(char)*param_1;\n    if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }\n    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\n    do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);\n    if (-1 < iVar5) goto LAB_0003fd54;\n    if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }\n    param_2[1] = iVar5;\n    *param_2 = iVar19;\nLAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }\n  pbVar18 = pbVar16 + iVar17;\n  do {\n    bVar6 = *pbVar18;\n    pbVar18 = pbVar18 + iVar15;\n    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar18 < pbVar12);\n  uVar4 = false;\nLAB_0003fc74:\n  if (iVar17 < iVar15 * 0x13) {\n    return (bool)uVar4;\n  }\n  if (iVar15 * 0x13 == iVar17) {\n    iVar19 = ((char)*pbVar16 + -0x39) * 10;\n    if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }\n  }\n  else {\n    iVar19 = 1;\n  }\n  if (bVar2) {\n    param_2[1] = 0;\n    *param_2 = -0x80000000;\n  }\n  else {\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }\n  if (iVar19 == 0) {\n    if (!bVar2) {\n      uVar4 = 3;\n    }\n    return uVar4;\n  }\n  return 2;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined1 uVar4;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (expression_statement "puVar3 = PTR_DAT_00190b94;" (assignment_expression "puVar3 = PTR_DAT_00190b94" identifier = identifier) ;) (expression_statement "pbVar12 = param_1 + param_3;" (assignment_expression "pbVar12 = param_1 + param_3" identifier = (binary_expression "param_1 + param_3" identifier + identifier)) ;) (if_statement "if (param_4 == 1) {\n    uVar4 = false;\n    iVar15 = 1;\n  }\n  else {\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }" if (parenthesized_expression "(param_4 == 1)" ( (binary_expression "param_4 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar4 = false;\n    iVar15 = 1;\n  }" { (expression_statement "uVar4 = false;" (assignment_expression "uVar4 = false" identifier = false) ;) (expression_statement "iVar15 = 1;" (assignment_expression "iVar15 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }" else (compound_statement "{\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }" { (expression_statement "uVar13 = 3 - param_4;" (assignment_expression "uVar13 = 3 - param_4" identifier = (binary_expression "3 - param_4" number_literal - identifier)) ;) (expression_statement "uVar4 = (int)uVar13 < param_3;" (assignment_expression "uVar4 = (int)uVar13 < param_3" identifier = (binary_expression "(int)uVar13 < param_3" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) ;) (if_statement "if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }" if (parenthesized_expression "((bool)uVar4)" ( (cast_expression "(bool)uVar4" ( (type_descriptor "bool" primitive_type) ) identifier) )) (compound_statement "{\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }" { (expression_statement "bVar6 = param_1[uVar13];" (assignment_expression "bVar6 = param_1[uVar13]" identifier = (subscript_expression "param_1[uVar13]" identifier [ identifier ])) ;) (while_statement "while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }" while (parenthesized_expression "(uVar14 = uVar13 + 2, bVar6 == 0)" ( (comma_expression "uVar14 = uVar13 + 2, bVar6 == 0" (assignment_expression "uVar14 = uVar13 + 2" identifier = (binary_expression "uVar13 + 2" identifier + number_literal)) , (binary_expression "bVar6 == 0" identifier == number_literal)) )) (compound_statement "{\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }" { (expression_statement "uVar4 = (int)uVar14 < param_3;" (assignment_expression "uVar4 = (int)uVar14 < param_3" identifier = (binary_expression "(int)uVar14 < param_3" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) ;) (expression_statement "uVar13 = uVar14;" (assignment_expression "uVar13 = uVar14" identifier = identifier) ;) (if_statement "if (!(bool)uVar4) break;" if (parenthesized_expression "(!(bool)uVar4)" ( (unary_expression "!(bool)uVar4" ! (cast_expression "(bool)uVar4" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "bVar6 = param_1[uVar14];" (assignment_expression "bVar6 = param_1[uVar14]" identifier = (subscript_expression "param_1[uVar14]" identifier [ identifier ])) ;) })) })) (expression_statement "pbVar12 = param_1 + (uVar13 ^ 1);" (assignment_expression "pbVar12 = param_1 + (uVar13 ^ 1)" identifier = (binary_expression "param_1 + (uVar13 ^ 1)" identifier + (parenthesized_expression "(uVar13 ^ 1)" ( (binary_expression "uVar13 ^ 1" identifier ^ number_literal) )))) ;) (expression_statement "iVar15 = 2;" (assignment_expression "iVar15 = 2" identifier = number_literal) ;) (expression_statement "param_1 = param_1 + (param_4 & 1);" (assignment_expression "param_1 = param_1 + (param_4 & 1)" identifier = (binary_expression "param_1 + (param_4 & 1)" identifier + (parenthesized_expression "(param_4 & 1)" ( (binary_expression "param_4 & 1" identifier & number_literal) )))) ;) }))) (expression_statement "bVar1 = param_1 < pbVar12;" (assignment_expression "bVar1 = param_1 < pbVar12" identifier = (binary_expression "param_1 < pbVar12" identifier < identifier)) ;) (if_statement "if (!bVar1) {\n    param_2[1] = 0;\n    *param_2 = 0;\n    return true;\n  }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n    param_2[1] = 0;\n    *param_2 = 0;\n    return true;\n  }" { (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (return_statement "return true;" return true ;) })) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (while_statement "while (param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0) {\n    bVar1 = param_1 < pbVar12;\n    if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }\n    bVar6 = *param_1;\n  }" while (parenthesized_expression "(param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0)" ( (comma_expression "param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0" (assignment_expression "param_1 = param_1 + iVar15" identifier = (binary_expression "param_1 + iVar15" identifier + identifier)) , (binary_expression "(PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0" (parenthesized_expression "(PTR_DAT_00190b94[bVar6 - 0x3d18] & 1)" ( (binary_expression "PTR_DAT_00190b94[bVar6 - 0x3d18] & 1" (subscript_expression "PTR_DAT_00190b94[bVar6 - 0x3d18]" identifier [ (binary_expression "bVar6 - 0x3d18" identifier - number_literal) ]) & number_literal) )) != number_literal)) )) (compound_statement "{\n    bVar1 = param_1 < pbVar12;\n    if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }\n    bVar6 = *param_1;\n  }" { (expression_statement "bVar1 = param_1 < pbVar12;" (assignment_expression "bVar1 = param_1 < pbVar12" identifier = (binary_expression "param_1 < pbVar12" identifier < identifier)) ;) (if_statement "if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }" { (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (return_statement "return true;" return true ;) })) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (expression_statement "param_1 = param_1 + -iVar15;" (assignment_expression "param_1 = param_1 + -iVar15" identifier = (binary_expression "param_1 + -iVar15" identifier + (unary_expression "-iVar15" - identifier))) ;) (if_statement "if (bVar6 == 0x2d) {\n    param_1 = param_1 + iVar15;\n    bVar2 = true;\n    bVar1 = param_1 < pbVar12;\n  }\n  else {\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }" if (parenthesized_expression "(bVar6 == 0x2d)" ( (binary_expression "bVar6 == 0x2d" identifier == number_literal) )) (compound_statement "{\n    param_1 = param_1 + iVar15;\n    bVar2 = true;\n    bVar1 = param_1 < pbVar12;\n  }" { (expression_statement "param_1 = param_1 + iVar15;" (assignment_expression "param_1 = param_1 + iVar15" identifier = (binary_expression "param_1 + iVar15" identifier + identifier)) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "bVar1 = param_1 < pbVar12;" (assignment_expression "bVar1 = param_1 < pbVar12" identifier = (binary_expression "param_1 < pbVar12" identifier < identifier)) ;) }) (else_clause "else {\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }" else (compound_statement "{\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (if_statement "if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }" if (parenthesized_expression "(bVar6 == 0x2b)" ( (binary_expression "bVar6 == 0x2b" identifier == number_literal) )) (compound_statement "{\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }" { (expression_statement "param_1 = param_1 + iVar15;" (assignment_expression "param_1 = param_1 + iVar15" identifier = (binary_expression "param_1 + iVar15" identifier + identifier)) ;) (expression_statement "bVar1 = param_1 < pbVar12;" (assignment_expression "bVar1 = param_1 < pbVar12" identifier = (binary_expression "param_1 < pbVar12" identifier < identifier)) ;) })) }))) (expression_statement "pbVar16 = param_1;" (assignment_expression "pbVar16 = param_1" identifier = identifier) ;) (if_statement "if (bVar1) {\n    iVar19 = (int)(char)*param_1;\n    if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }\n    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\n    do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);\n    if (-1 < iVar5) goto LAB_0003fd54;\n    if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }\n    param_2[1] = iVar5;\n    *param_2 = iVar19;\nLAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    iVar19 = (int)(char)*param_1;\n    if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }\n    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\n    do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);\n    if (-1 < iVar5) goto LAB_0003fd54;\n    if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }\n    param_2[1] = iVar5;\n    *param_2 = iVar19;\nLAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;\n  }" { (expression_statement "iVar19 = (int)(char)*param_1;" (assignment_expression "iVar19 = (int)(char)*param_1" identifier = (cast_expression "(int)(char)*param_1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_1" * identifier)))) ;) (if_statement "if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }" if (parenthesized_expression "(iVar19 == 0x30)" ( (binary_expression "iVar19 == 0x30" identifier == number_literal) )) (compound_statement "{\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }" { (expression_statement "pbVar16 = param_1 + iVar15;" (assignment_expression "pbVar16 = param_1 + iVar15" identifier = (binary_expression "param_1 + iVar15" identifier + identifier)) ;) (do_statement "do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);" do (compound_statement "{\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      }" { (if_statement "if (pbVar12 <= pbVar16) goto LAB_0003fd48;" if (parenthesized_expression "(pbVar12 <= pbVar16)" ( (binary_expression "pbVar12 <= pbVar16" identifier <= identifier) )) (goto_statement "goto LAB_0003fd48;" goto statement_identifier ;)) (expression_statement "iVar19 = (int)(char)*pbVar16;" (assignment_expression "iVar19 = (int)(char)*pbVar16" identifier = (cast_expression "(int)(char)*pbVar16" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar16" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar16" * identifier)))) ;) (expression_statement "pbVar16 = pbVar16 + iVar15;" (assignment_expression "pbVar16 = pbVar16 + iVar15" identifier = (binary_expression "pbVar16 + iVar15" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar19 == 0x30)" ( (binary_expression "iVar19 == 0x30" identifier == number_literal) )) ;) (expression_statement "pbVar16 = pbVar16 + -iVar15;" (assignment_expression "pbVar16 = pbVar16 + -iVar15" identifier = (binary_expression "pbVar16 + -iVar15" identifier + (unary_expression "-iVar15" - identifier))) ;) })) (if_statement "if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;" if (parenthesized_expression "(9 < (iVar19 - 0x30U & 0xff))" ( (binary_expression "9 < (iVar19 - 0x30U & 0xff)" number_literal < (parenthesized_expression "(iVar19 - 0x30U & 0xff)" ( (binary_expression "iVar19 - 0x30U & 0xff" (binary_expression "iVar19 - 0x30U" identifier - number_literal) & number_literal) ))) )) (goto_statement "goto LAB_0003fd48;" goto statement_identifier ;)) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "pbVar18 = pbVar16;" (assignment_expression "pbVar18 = pbVar16" identifier = identifier) ;) (do_statement "do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);" do (compound_statement "{\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    }" { (expression_statement "pbVar18 = pbVar18 + iVar15;" (assignment_expression "pbVar18 = pbVar18 + iVar15" identifier = (binary_expression "pbVar18 + iVar15" identifier + identifier)) ;) (expression_statement "uVar7 = uVar13 * 4;" (assignment_expression "uVar7 = uVar13 * 4" identifier = (binary_expression "uVar13 * 4" identifier * number_literal)) ;) (expression_statement "uVar20 = uVar13 >> 0x1e;" (assignment_expression "uVar20 = uVar13 >> 0x1e" identifier = (binary_expression "uVar13 >> 0x1e" identifier >> number_literal)) ;) (expression_statement "uVar14 = uVar13 * 5;" (assignment_expression "uVar14 = uVar13 * 5" identifier = (binary_expression "uVar13 * 5" identifier * number_literal)) ;) (expression_statement "uVar11 = uVar13 * 10;" (assignment_expression "uVar11 = uVar13 * 10" identifier = (binary_expression "uVar13 * 10" identifier * number_literal)) ;) (expression_statement "uVar8 = uVar11 + iVar19;" (assignment_expression "uVar8 = uVar11 + iVar19" identifier = (binary_expression "uVar11 + iVar19" identifier + identifier)) ;) (expression_statement "uVar13 = uVar8 - 0x30;" (assignment_expression "uVar13 = uVar8 - 0x30" identifier = (binary_expression "uVar8 - 0x30" identifier - number_literal)) ;) (expression_statement "iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;" (assignment_expression "iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1" identifier = (binary_expression "(uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1" (binary_expression "(uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f)" (binary_expression "(uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2)" (binary_expression "(uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11)" (call_expression "(uint)(uVar13 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) ))) + (call_expression "(uint)(uVar8 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar11)" ( (binary_expression "uVar8 < uVar11" identifier < identifier) )))) + (parenthesized_expression "(uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2)" ( (binary_expression "uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2" (binary_expression "uVar14 >> 0x1f" identifier >> number_literal) | (binary_expression "((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2" (parenthesized_expression "((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5)" ( (binary_expression "(uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5" (binary_expression "(uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2)" (call_expression "(uint)(uVar14 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar14 < uVar7)" ( (binary_expression "uVar14 < uVar7" identifier < identifier) ))) + (parenthesized_expression "(uVar20 | iVar5 << 2)" ( (binary_expression "uVar20 | iVar5 << 2" identifier | (binary_expression "iVar5 << 2" identifier << number_literal)) ))) + identifier) )) * number_literal)) ))) + (parenthesized_expression "(iVar19 >> 0x1f)" ( (binary_expression "iVar19 >> 0x1f" identifier >> number_literal) ))) + number_literal)) ;) (expression_statement "iVar17 = iVar17 + iVar15;" (assignment_expression "iVar17 = iVar17 + iVar15" identifier = (binary_expression "iVar17 + iVar15" identifier + identifier)) ;) (if_statement "if (pbVar12 <= pbVar18) break;" if (parenthesized_expression "(pbVar12 <= pbVar18)" ( (binary_expression "pbVar12 <= pbVar18" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar19 = (int)(char)*pbVar18;" (assignment_expression "iVar19 = (int)(char)*pbVar18" identifier = (cast_expression "(int)(char)*pbVar18" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar18" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar18" * identifier)))) ;) }) while (parenthesized_expression "((iVar19 - 0x30U & 0xff) < 10)" ( (binary_expression "(iVar19 - 0x30U & 0xff) < 10" (parenthesized_expression "(iVar19 - 0x30U & 0xff)" ( (binary_expression "iVar19 - 0x30U & 0xff" (binary_expression "iVar19 - 0x30U" identifier - number_literal) & number_literal) )) < number_literal) )) ;) (if_statement "if (-1 < iVar5) goto LAB_0003fd54;" if (parenthesized_expression "(-1 < iVar5)" ( (binary_expression "-1 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_0003fd54;" goto statement_identifier ;)) (if_statement "if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = -0x80000000;" (assignment_expression "iVar19 = -0x80000000" identifier = number_literal) ;) }) (else_clause "else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }" else (compound_statement "{\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }" { (expression_statement "iVar5 = -1;" (assignment_expression "iVar5 = -1" identifier = number_literal) ;) (expression_statement "iVar19 = 0x7fffffff;" (assignment_expression "iVar19 = 0x7fffffff" identifier = number_literal) ;) }))) (expression_statement "param_2[1] = iVar5;" (assignment_expression "param_2[1] = iVar5" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_2 = iVar19;" (assignment_expression "*param_2 = iVar19" (pointer_expression "*param_2" * identifier) = identifier) ;) (labeled_statement "LAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;" statement_identifier : (if_statement "if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;" if (parenthesized_expression "(((bool)uVar4 != false) || (pbVar12 <= pbVar18))" ( (binary_expression "((bool)uVar4 != false) || (pbVar12 <= pbVar18)" (parenthesized_expression "((bool)uVar4 != false)" ( (binary_expression "(bool)uVar4 != false" (cast_expression "(bool)uVar4" ( (type_descriptor "bool" primitive_type) ) identifier) != false) )) || (parenthesized_expression "(pbVar12 <= pbVar18)" ( (binary_expression "pbVar12 <= pbVar18" identifier <= identifier) ))) )) (goto_statement "goto LAB_0003fc74;" goto statement_identifier ;))) }) (else_clause "else {\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }" else (compound_statement "{\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }" { (labeled_statement "LAB_0003fd48:\n    iVar17 = 0;" statement_identifier : (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;)) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "pbVar18 = pbVar16;" (assignment_expression "pbVar18 = pbVar16" identifier = identifier) ;) (labeled_statement "LAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }" statement_identifier : (if_statement "if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }" { (expression_statement "param_2[1] = -uVar13;" (assignment_expression "param_2[1] = -uVar13" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (unary_expression "-uVar13" - identifier)) ;) (expression_statement "*param_2 = -(uint)(-uVar13 != 0) - iVar5;" (assignment_expression "*param_2 = -(uint)(-uVar13 != 0) - iVar5" (pointer_expression "*param_2" * identifier) = (binary_expression "-(uint)(-uVar13 != 0) - iVar5" (unary_expression "-(uint)(-uVar13 != 0)" - (call_expression "(uint)(-uVar13 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(-uVar13 != 0)" ( (binary_expression "-uVar13 != 0" (unary_expression "-uVar13" - identifier) != number_literal) )))) - identifier)) ;) }) (else_clause "else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }" else (compound_statement "{\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }" { (expression_statement "*param_2 = iVar5;" (assignment_expression "*param_2 = iVar5" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2[1] = uVar13;" (assignment_expression "param_2[1] = uVar13" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) })))) (if_statement "if (iVar17 != 0) goto LAB_0003fc5c;" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003fc5c;" goto statement_identifier ;)) (if_statement "if (param_1 == pbVar16) {\n      return true;\n    }" if (parenthesized_expression "(param_1 == pbVar16)" ( (binary_expression "param_1 == pbVar16" identifier == identifier) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) (if_statement "if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }" if (parenthesized_expression "((bool)uVar4 != false)" ( (binary_expression "(bool)uVar4 != false" (cast_expression "(bool)uVar4" ( (type_descriptor "bool" primitive_type) ) identifier) != false) )) (compound_statement "{\n      return (bool)uVar4;\n    }" { (return_statement "return (bool)uVar4;" return (cast_expression "(bool)uVar4" ( (type_descriptor "bool" primitive_type) ) identifier) ;) })) (if_statement "if (pbVar12 <= pbVar18) {\n      return false;\n    }" if (parenthesized_expression "(pbVar12 <= pbVar18)" ( (binary_expression "pbVar12 <= pbVar18" identifier <= identifier) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) }))) (expression_statement "pbVar18 = pbVar16 + iVar17;" (assignment_expression "pbVar18 = pbVar16 + iVar17" identifier = (binary_expression "pbVar16 + iVar17" identifier + identifier)) ;) (do_statement "do {\n    bVar6 = *pbVar18;\n    pbVar18 = pbVar18 + iVar15;\n    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar18 < pbVar12);" do (compound_statement "{\n    bVar6 = *pbVar18;\n    pbVar18 = pbVar18 + iVar15;\n    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }\n  }" { (expression_statement "bVar6 = *pbVar18;" (assignment_expression "bVar6 = *pbVar18" identifier = (pointer_expression "*pbVar18" * identifier)) ;) (expression_statement "pbVar18 = pbVar18 + iVar15;" (assignment_expression "pbVar18 = pbVar18 + iVar15" identifier = (binary_expression "pbVar18 + iVar15" identifier + identifier)) ;) (if_statement "if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }" if (parenthesized_expression "((puVar3[bVar6 - 0x3d18] & 1) == 0)" ( (binary_expression "(puVar3[bVar6 - 0x3d18] & 1) == 0" (parenthesized_expression "(puVar3[bVar6 - 0x3d18] & 1)" ( (binary_expression "puVar3[bVar6 - 0x3d18] & 1" (subscript_expression "puVar3[bVar6 - 0x3d18]" identifier [ (binary_expression "bVar6 - 0x3d18" identifier - number_literal) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }" { (expression_statement "uVar4 = true;" (assignment_expression "uVar4 = true" identifier = true) ;) (goto_statement "goto LAB_0003fc74;" goto statement_identifier ;) })) }) while (parenthesized_expression "(pbVar18 < pbVar12)" ( (binary_expression "pbVar18 < pbVar12" identifier < identifier) )) ;) (expression_statement "uVar4 = false;" (assignment_expression "uVar4 = false" identifier = false) ;) (labeled_statement "LAB_0003fc74:\n  if (iVar17 < iVar15 * 0x13) {\n    return (bool)uVar4;\n  }" statement_identifier : (if_statement "if (iVar17 < iVar15 * 0x13) {\n    return (bool)uVar4;\n  }" if (parenthesized_expression "(iVar17 < iVar15 * 0x13)" ( (binary_expression "iVar17 < iVar15 * 0x13" identifier < (binary_expression "iVar15 * 0x13" identifier * number_literal)) )) (compound_statement "{\n    return (bool)uVar4;\n  }" { (return_statement "return (bool)uVar4;" return (cast_expression "(bool)uVar4" ( (type_descriptor "bool" primitive_type) ) identifier) ;) }))) (if_statement "if (iVar15 * 0x13 == iVar17) {\n    iVar19 = ((char)*pbVar16 + -0x39) * 10;\n    if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }\n  }\n  else {\n    iVar19 = 1;\n  }" if (parenthesized_expression "(iVar15 * 0x13 == iVar17)" ( (binary_expression "iVar15 * 0x13 == iVar17" (binary_expression "iVar15 * 0x13" identifier * number_literal) == identifier) )) (compound_statement "{\n    iVar19 = ((char)*pbVar16 + -0x39) * 10;\n    if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }\n  }" { (expression_statement "iVar19 = ((char)*pbVar16 + -0x39) * 10;" (assignment_expression "iVar19 = ((char)*pbVar16 + -0x39) * 10" identifier = (binary_expression "((char)*pbVar16 + -0x39) * 10" (parenthesized_expression "((char)*pbVar16 + -0x39)" ( (binary_expression "(char)*pbVar16 + -0x39" (cast_expression "(char)*pbVar16" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar16" * identifier)) + number_literal) )) * number_literal)) ;) (if_statement "if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }" { (expression_statement "pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;" (assignment_expression "pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7" identifier = (binary_expression "PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7" identifier + number_literal)) ;) (expression_statement "pbVar12 = pbVar16 + iVar15;" (assignment_expression "pbVar12 = pbVar16 + iVar15" identifier = (binary_expression "pbVar16 + iVar15" identifier + identifier)) ;) (do_statement "do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);" do (compound_statement "{\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      }" { (expression_statement "pcVar10 = pcVar9 + 1;" (assignment_expression "pcVar10 = pcVar9 + 1" identifier = (binary_expression "pcVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;" (assignment_expression "iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10" identifier = (binary_expression "((int)(char)*pbVar12 - (int)*pcVar9) * 10" (parenthesized_expression "((int)(char)*pbVar12 - (int)*pcVar9)" ( (binary_expression "(int)(char)*pbVar12 - (int)*pcVar9" (cast_expression "(int)(char)*pbVar12" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar12" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar12" * identifier))) - (cast_expression "(int)*pcVar9" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar9" * identifier))) )) * number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + iVar15;" (assignment_expression "pbVar12 = pbVar12 + iVar15" identifier = (binary_expression "pbVar12 + iVar15" identifier + identifier)) ;) (if_statement "if (iVar19 != 0) goto LAB_0003fcf8;" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003fcf8;" goto statement_identifier ;)) (expression_statement "pcVar9 = pcVar10;" (assignment_expression "pcVar9 = pcVar10" identifier = identifier) ;) }) while (parenthesized_expression "(PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10)" ( (binary_expression "PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10" (binary_expression "PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6" identifier + number_literal) != identifier) )) ;) (expression_statement "iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;" (assignment_expression "iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38" identifier = (binary_expression "(char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38" (cast_expression "(char)(pbVar16 + iVar15)[iVar15 * 0x11]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(pbVar16 + iVar15)[iVar15 * 0x11]" (parenthesized_expression "(pbVar16 + iVar15)" ( (binary_expression "pbVar16 + iVar15" identifier + identifier) )) [ (binary_expression "iVar15 * 0x11" identifier * number_literal) ])) + number_literal)) ;) })) (labeled_statement "LAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }" statement_identifier : (if_statement "if (iVar19 < 0) {\n      return (bool)uVar4;\n    }" if (parenthesized_expression "(iVar19 < 0)" ( (binary_expression "iVar19 < 0" identifier < number_literal) )) (compound_statement "{\n      return (bool)uVar4;\n    }" { (return_statement "return (bool)uVar4;" return (cast_expression "(bool)uVar4" ( (type_descriptor "bool" primitive_type) ) identifier) ;) }))) }) (else_clause "else {\n    iVar19 = 1;\n  }" else (compound_statement "{\n    iVar19 = 1;\n  }" { (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) }))) (if_statement "if (bVar2) {\n    param_2[1] = 0;\n    *param_2 = -0x80000000;\n  }\n  else {\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    param_2[1] = 0;\n    *param_2 = -0x80000000;\n  }" { (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_2 = -0x80000000;" (assignment_expression "*param_2 = -0x80000000" (pointer_expression "*param_2" * identifier) = number_literal) ;) }) (else_clause "else {\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }" else (compound_statement "{\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }" { (expression_statement "param_2[1] = -1;" (assignment_expression "param_2[1] = -1" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_2 = 0x7fffffff;" (assignment_expression "*param_2 = 0x7fffffff" (pointer_expression "*param_2" * identifier) = number_literal) ;) }))) (if_statement "if (iVar19 == 0) {\n    if (!bVar2) {\n      uVar4 = 3;\n    }\n    return uVar4;\n  }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\n    if (!bVar2) {\n      uVar4 = 3;\n    }\n    return uVar4;\n  }" { (if_statement "if (!bVar2) {\n      uVar4 = 3;\n    }" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (compound_statement "{\n      uVar4 = 3;\n    }" { (expression_statement "uVar4 = 3;" (assignment_expression "uVar4 = 3" identifier = number_literal) ;) })) (return_statement "return uVar4;" return identifier ;) })) (return_statement "return 2;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT)) ;) (if_statement if (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE) ) IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT ^ LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) & LIT) )) != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) })) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) + (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + (parenthesized_expression ( (binary_expression IDENT | (binary_expression IDENT << LIT)) ))) + IDENT) )) * LIT)) ))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) )) < LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != BOOL) )) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (unary_expression - IDENT) != LIT) )))) - IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return BOOL ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != BOOL) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE) ) IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return BOOL ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT * LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE) ) IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) + LIT) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) - (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) [ (binary_expression IDENT * LIT) ])) + LIT)) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE) ) IDENT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (return_statement return IDENT ;) })) (return_statement return LIT ;) })))
(function_definition "undefined1 FUN_0003faa0(byte *param_1,int *param_2,int param_3,uint param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined1 uVar4;\n  byte bVar6;\n  int iVar5;\n  uint uVar7;\n  uint uVar8;\n  char *pcVar9;\n  char *pcVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  byte *pbVar18;\n  int iVar19;\n  uint uVar20;\n  \n  puVar3 = PTR_DAT_00190b94;\n  pbVar12 = param_1 + param_3;\n  if (param_4 == 1) {\n    uVar4 = false;\n    iVar15 = 1;\n  }\n  else {\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }\n  bVar1 = param_1 < pbVar12;\n  if (!bVar1) {\n    param_2[1] = 0;\n    *param_2 = 0;\n    return true;\n  }\n  bVar6 = *param_1;\n  while (param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0) {\n    bVar1 = param_1 < pbVar12;\n    if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }\n    bVar6 = *param_1;\n  }\n  param_1 = param_1 + -iVar15;\n  if (bVar6 == 0x2d) {\n    param_1 = param_1 + iVar15;\n    bVar2 = true;\n    bVar1 = param_1 < pbVar12;\n  }\n  else {\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }\n  pbVar16 = param_1;\n  if (bVar1) {\n    iVar19 = (int)(char)*param_1;\n    if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }\n    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\n    do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);\n    if (-1 < iVar5) goto LAB_0003fd54;\n    if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }\n    param_2[1] = iVar5;\n    *param_2 = iVar19;\nLAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }\n  pbVar18 = pbVar16 + iVar17;\n  do {\n    bVar6 = *pbVar18;\n    pbVar18 = pbVar18 + iVar15;\n    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar18 < pbVar12);\n  uVar4 = false;\nLAB_0003fc74:\n  if (iVar17 < iVar15 * 0x13) {\n    return (bool)uVar4;\n  }\n  if (iVar15 * 0x13 == iVar17) {\n    iVar19 = ((char)*pbVar16 + -0x39) * 10;\n    if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }\n  }\n  else {\n    iVar19 = 1;\n  }\n  if (bVar2) {\n    param_2[1] = 0;\n    *param_2 = -0x80000000;\n  }\n  else {\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }\n  if (iVar19 == 0) {\n    if (!bVar2) {\n      uVar4 = 3;\n    }\n    return uVar4;\n  }\n  return 2;\n}" (type_identifier "undefined1") (function_declarator "FUN_0003faa0(byte *param_1,int *param_2,int param_3,uint param_4)" (identifier "FUN_0003faa0") (parameter_list "(byte *param_1,int *param_2,int param_3,uint param_4)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) () ")"))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined1 uVar4;\n  byte bVar6;\n  int iVar5;\n  uint uVar7;\n  uint uVar8;\n  char *pcVar9;\n  char *pcVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  byte *pbVar18;\n  int iVar19;\n  uint uVar20;\n  \n  puVar3 = PTR_DAT_00190b94;\n  pbVar12 = param_1 + param_3;\n  if (param_4 == 1) {\n    uVar4 = false;\n    iVar15 = 1;\n  }\n  else {\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }\n  bVar1 = param_1 < pbVar12;\n  if (!bVar1) {\n    param_2[1] = 0;\n    *param_2 = 0;\n    return true;\n  }\n  bVar6 = *param_1;\n  while (param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0) {\n    bVar1 = param_1 < pbVar12;\n    if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }\n    bVar6 = *param_1;\n  }\n  param_1 = param_1 + -iVar15;\n  if (bVar6 == 0x2d) {\n    param_1 = param_1 + iVar15;\n    bVar2 = true;\n    bVar1 = param_1 < pbVar12;\n  }\n  else {\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }\n  pbVar16 = param_1;\n  if (bVar1) {\n    iVar19 = (int)(char)*param_1;\n    if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }\n    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\n    do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);\n    if (-1 < iVar5) goto LAB_0003fd54;\n    if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }\n    param_2[1] = iVar5;\n    *param_2 = iVar19;\nLAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }\n  pbVar18 = pbVar16 + iVar17;\n  do {\n    bVar6 = *pbVar18;\n    pbVar18 = pbVar18 + iVar15;\n    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar18 < pbVar12);\n  uVar4 = false;\nLAB_0003fc74:\n  if (iVar17 < iVar15 * 0x13) {\n    return (bool)uVar4;\n  }\n  if (iVar15 * 0x13 == iVar17) {\n    iVar19 = ((char)*pbVar16 + -0x39) * 10;\n    if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }\n  }\n  else {\n    iVar19 = 1;\n  }\n  if (bVar2) {\n    param_2[1] = 0;\n    *param_2 = -0x80000000;\n  }\n  else {\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }\n  if (iVar19 == 0) {\n    if (!bVar2) {\n      uVar4 = 3;\n    }\n    return uVar4;\n  }\n  return 2;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined1 uVar4;" (type_identifier "undefined1") (identifier "uVar4") (; ";")) (declaration "byte bVar6;" (type_identifier "byte") (identifier "bVar6") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "char *pcVar9;" (primitive_type "char") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (declaration "char *pcVar10;" (primitive_type "char") (pointer_declarator "*pcVar10" (* "*") (identifier "pcVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "byte *pbVar16;" (type_identifier "byte") (pointer_declarator "*pbVar16" (* "*") (identifier "pbVar16")) (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "byte *pbVar18;" (type_identifier "byte") (pointer_declarator "*pbVar18" (* "*") (identifier "pbVar18")) (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "uint uVar20;" (type_identifier "uint") (identifier "uVar20") (; ";")) (expression_statement "puVar3 = PTR_DAT_00190b94;" (assignment_expression "puVar3 = PTR_DAT_00190b94" (identifier "puVar3") (= "=") (identifier "PTR_DAT_00190b94")) (; ";")) (expression_statement "pbVar12 = param_1 + param_3;" (assignment_expression "pbVar12 = param_1 + param_3" (identifier "pbVar12") (= "=") (binary_expression "param_1 + param_3" (identifier "param_1") (+ "+") (identifier "param_3"))) (; ";")) (if_statement "if (param_4 == 1) {\n    uVar4 = false;\n    iVar15 = 1;\n  }\n  else {\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }" (if "if") (parenthesized_expression "(param_4 == 1)" (( "(") (binary_expression "param_4 == 1" (identifier "param_4") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    uVar4 = false;\n    iVar15 = 1;\n  }" ({ "{") (expression_statement "uVar4 = false;" (assignment_expression "uVar4 = false" (identifier "uVar4") (= "=") (false "false")) (; ";")) (expression_statement "iVar15 = 1;" (assignment_expression "iVar15 = 1" (identifier "iVar15") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }" (else "else") (compound_statement "{\n    uVar13 = 3 - param_4;\n    uVar4 = (int)uVar13 < param_3;\n    if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }\n    pbVar12 = param_1 + (uVar13 ^ 1);\n    iVar15 = 2;\n    param_1 = param_1 + (param_4 & 1);\n  }" ({ "{") (expression_statement "uVar13 = 3 - param_4;" (assignment_expression "uVar13 = 3 - param_4" (identifier "uVar13") (= "=") (binary_expression "3 - param_4" (number_literal "3") (- "-") (identifier "param_4"))) (; ";")) (expression_statement "uVar4 = (int)uVar13 < param_3;" (assignment_expression "uVar4 = (int)uVar13 < param_3" (identifier "uVar4") (= "=") (binary_expression "(int)uVar13 < param_3" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (< "<") (identifier "param_3"))) (; ";")) (if_statement "if ((bool)uVar4) {\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }" (if "if") (parenthesized_expression "((bool)uVar4)" (( "(") (cast_expression "(bool)uVar4" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar4")) () ")")) (compound_statement "{\n      bVar6 = param_1[uVar13];\n      while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }\n    }" ({ "{") (expression_statement "bVar6 = param_1[uVar13];" (assignment_expression "bVar6 = param_1[uVar13]" (identifier "bVar6") (= "=") (subscript_expression "param_1[uVar13]" (identifier "param_1") ([ "[") (identifier "uVar13") (] "]"))) (; ";")) (while_statement "while (uVar14 = uVar13 + 2, bVar6 == 0) {\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }" (while "while") (parenthesized_expression "(uVar14 = uVar13 + 2, bVar6 == 0)" (( "(") (comma_expression "uVar14 = uVar13 + 2, bVar6 == 0" (assignment_expression "uVar14 = uVar13 + 2" (identifier "uVar14") (= "=") (binary_expression "uVar13 + 2" (identifier "uVar13") (+ "+") (number_literal "2"))) (, ",") (binary_expression "bVar6 == 0" (identifier "bVar6") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n        uVar4 = (int)uVar14 < param_3;\n        uVar13 = uVar14;\n        if (!(bool)uVar4) break;\n        bVar6 = param_1[uVar14];\n      }" ({ "{") (expression_statement "uVar4 = (int)uVar14 < param_3;" (assignment_expression "uVar4 = (int)uVar14 < param_3" (identifier "uVar4") (= "=") (binary_expression "(int)uVar14 < param_3" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (< "<") (identifier "param_3"))) (; ";")) (expression_statement "uVar13 = uVar14;" (assignment_expression "uVar13 = uVar14" (identifier "uVar13") (= "=") (identifier "uVar14")) (; ";")) (if_statement "if (!(bool)uVar4) break;" (if "if") (parenthesized_expression "(!(bool)uVar4)" (( "(") (unary_expression "!(bool)uVar4" (! "!") (cast_expression "(bool)uVar4" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar4"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar6 = param_1[uVar14];" (assignment_expression "bVar6 = param_1[uVar14]" (identifier "bVar6") (= "=") (subscript_expression "param_1[uVar14]" (identifier "param_1") ([ "[") (identifier "uVar14") (] "]"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "pbVar12 = param_1 + (uVar13 ^ 1);" (assignment_expression "pbVar12 = param_1 + (uVar13 ^ 1)" (identifier "pbVar12") (= "=") (binary_expression "param_1 + (uVar13 ^ 1)" (identifier "param_1") (+ "+") (parenthesized_expression "(uVar13 ^ 1)" (( "(") (binary_expression "uVar13 ^ 1" (identifier "uVar13") (^ "^") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar15 = 2;" (assignment_expression "iVar15 = 2" (identifier "iVar15") (= "=") (number_literal "2")) (; ";")) (expression_statement "param_1 = param_1 + (param_4 & 1);" (assignment_expression "param_1 = param_1 + (param_4 & 1)" (identifier "param_1") (= "=") (binary_expression "param_1 + (param_4 & 1)" (identifier "param_1") (+ "+") (parenthesized_expression "(param_4 & 1)" (( "(") (binary_expression "param_4 & 1" (identifier "param_4") (& "&") (number_literal "1")) () ")")))) (; ";")) (} "}")))) (expression_statement "bVar1 = param_1 < pbVar12;" (assignment_expression "bVar1 = param_1 < pbVar12" (identifier "bVar1") (= "=") (binary_expression "param_1 < pbVar12" (identifier "param_1") (< "<") (identifier "pbVar12"))) (; ";")) (if_statement "if (!bVar1) {\n    param_2[1] = 0;\n    *param_2 = 0;\n    return true;\n  }" (if "if") (parenthesized_expression "(!bVar1)" (( "(") (unary_expression "!bVar1" (! "!") (identifier "bVar1")) () ")")) (compound_statement "{\n    param_2[1] = 0;\n    *param_2 = 0;\n    return true;\n  }" ({ "{") (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "0")) (; ";")) (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" (identifier "bVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (while_statement "while (param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0) {\n    bVar1 = param_1 < pbVar12;\n    if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }\n    bVar6 = *param_1;\n  }" (while "while") (parenthesized_expression "(param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0)" (( "(") (comma_expression "param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0" (assignment_expression "param_1 = param_1 + iVar15" (identifier "param_1") (= "=") (binary_expression "param_1 + iVar15" (identifier "param_1") (+ "+") (identifier "iVar15"))) (, ",") (binary_expression "(PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0" (parenthesized_expression "(PTR_DAT_00190b94[bVar6 - 0x3d18] & 1)" (( "(") (binary_expression "PTR_DAT_00190b94[bVar6 - 0x3d18] & 1" (subscript_expression "PTR_DAT_00190b94[bVar6 - 0x3d18]" (identifier "PTR_DAT_00190b94") ([ "[") (binary_expression "bVar6 - 0x3d18" (identifier "bVar6") (- "-") (number_literal "0x3d18")) (] "]")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n    bVar1 = param_1 < pbVar12;\n    if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }\n    bVar6 = *param_1;\n  }" ({ "{") (expression_statement "bVar1 = param_1 < pbVar12;" (assignment_expression "bVar1 = param_1 < pbVar12" (identifier "bVar1") (= "=") (binary_expression "param_1 < pbVar12" (identifier "param_1") (< "<") (identifier "pbVar12"))) (; ";")) (if_statement "if (!bVar1) {\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }" (if "if") (parenthesized_expression "(!bVar1)" (( "(") (unary_expression "!bVar1" (! "!") (identifier "bVar1")) () ")")) (compound_statement "{\n      param_2[1] = 0;\n      *param_2 = 0;\n      return true;\n    }" ({ "{") (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "0")) (; ";")) (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (expression_statement "bVar6 = *param_1;" (assignment_expression "bVar6 = *param_1" (identifier "bVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}"))) (expression_statement "param_1 = param_1 + -iVar15;" (assignment_expression "param_1 = param_1 + -iVar15" (identifier "param_1") (= "=") (binary_expression "param_1 + -iVar15" (identifier "param_1") (+ "+") (unary_expression "-iVar15" (- "-") (identifier "iVar15")))) (; ";")) (if_statement "if (bVar6 == 0x2d) {\n    param_1 = param_1 + iVar15;\n    bVar2 = true;\n    bVar1 = param_1 < pbVar12;\n  }\n  else {\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }" (if "if") (parenthesized_expression "(bVar6 == 0x2d)" (( "(") (binary_expression "bVar6 == 0x2d" (identifier "bVar6") (== "==") (number_literal "0x2d")) () ")")) (compound_statement "{\n    param_1 = param_1 + iVar15;\n    bVar2 = true;\n    bVar1 = param_1 < pbVar12;\n  }" ({ "{") (expression_statement "param_1 = param_1 + iVar15;" (assignment_expression "param_1 = param_1 + iVar15" (identifier "param_1") (= "=") (binary_expression "param_1 + iVar15" (identifier "param_1") (+ "+") (identifier "iVar15"))) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (expression_statement "bVar1 = param_1 < pbVar12;" (assignment_expression "bVar1 = param_1 < pbVar12" (identifier "bVar1") (= "=") (binary_expression "param_1 < pbVar12" (identifier "param_1") (< "<") (identifier "pbVar12"))) (; ";")) (} "}")) (else_clause "else {\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }" (else "else") (compound_statement "{\n    bVar2 = false;\n    if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }\n  }" ({ "{") (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (if_statement "if (bVar6 == 0x2b) {\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }" (if "if") (parenthesized_expression "(bVar6 == 0x2b)" (( "(") (binary_expression "bVar6 == 0x2b" (identifier "bVar6") (== "==") (number_literal "0x2b")) () ")")) (compound_statement "{\n      param_1 = param_1 + iVar15;\n      bVar1 = param_1 < pbVar12;\n    }" ({ "{") (expression_statement "param_1 = param_1 + iVar15;" (assignment_expression "param_1 = param_1 + iVar15" (identifier "param_1") (= "=") (binary_expression "param_1 + iVar15" (identifier "param_1") (+ "+") (identifier "iVar15"))) (; ";")) (expression_statement "bVar1 = param_1 < pbVar12;" (assignment_expression "bVar1 = param_1 < pbVar12" (identifier "bVar1") (= "=") (binary_expression "param_1 < pbVar12" (identifier "param_1") (< "<") (identifier "pbVar12"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "pbVar16 = param_1;" (assignment_expression "pbVar16 = param_1" (identifier "pbVar16") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (bVar1) {\n    iVar19 = (int)(char)*param_1;\n    if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }\n    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\n    do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);\n    if (-1 < iVar5) goto LAB_0003fd54;\n    if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }\n    param_2[1] = iVar5;\n    *param_2 = iVar19;\nLAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;\n  }\n  else {\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n    iVar19 = (int)(char)*param_1;\n    if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }\n    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\n    do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);\n    if (-1 < iVar5) goto LAB_0003fd54;\n    if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }\n    param_2[1] = iVar5;\n    *param_2 = iVar19;\nLAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;\n  }" ({ "{") (expression_statement "iVar19 = (int)(char)*param_1;" (assignment_expression "iVar19 = (int)(char)*param_1" (identifier "iVar19") (= "=") (cast_expression "(int)(char)*param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*param_1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))))) (; ";")) (if_statement "if (iVar19 == 0x30) {\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }" (if "if") (parenthesized_expression "(iVar19 == 0x30)" (( "(") (binary_expression "iVar19 == 0x30" (identifier "iVar19") (== "==") (number_literal "0x30")) () ")")) (compound_statement "{\n      pbVar16 = param_1 + iVar15;\n      do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);\n      pbVar16 = pbVar16 + -iVar15;\n    }" ({ "{") (expression_statement "pbVar16 = param_1 + iVar15;" (assignment_expression "pbVar16 = param_1 + iVar15" (identifier "pbVar16") (= "=") (binary_expression "param_1 + iVar15" (identifier "param_1") (+ "+") (identifier "iVar15"))) (; ";")) (do_statement "do {\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      } while (iVar19 == 0x30);" (do "do") (compound_statement "{\n        if (pbVar12 <= pbVar16) goto LAB_0003fd48;\n        iVar19 = (int)(char)*pbVar16;\n        pbVar16 = pbVar16 + iVar15;\n      }" ({ "{") (if_statement "if (pbVar12 <= pbVar16) goto LAB_0003fd48;" (if "if") (parenthesized_expression "(pbVar12 <= pbVar16)" (( "(") (binary_expression "pbVar12 <= pbVar16" (identifier "pbVar12") (<= "<=") (identifier "pbVar16")) () ")")) (goto_statement "goto LAB_0003fd48;" (goto "goto") (statement_identifier "LAB_0003fd48") (; ";"))) (expression_statement "iVar19 = (int)(char)*pbVar16;" (assignment_expression "iVar19 = (int)(char)*pbVar16" (identifier "iVar19") (= "=") (cast_expression "(int)(char)*pbVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar16" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar16" (* "*") (identifier "pbVar16"))))) (; ";")) (expression_statement "pbVar16 = pbVar16 + iVar15;" (assignment_expression "pbVar16 = pbVar16 + iVar15" (identifier "pbVar16") (= "=") (binary_expression "pbVar16 + iVar15" (identifier "pbVar16") (+ "+") (identifier "iVar15"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar19 == 0x30)" (( "(") (binary_expression "iVar19 == 0x30" (identifier "iVar19") (== "==") (number_literal "0x30")) () ")")) (; ";")) (expression_statement "pbVar16 = pbVar16 + -iVar15;" (assignment_expression "pbVar16 = pbVar16 + -iVar15" (identifier "pbVar16") (= "=") (binary_expression "pbVar16 + -iVar15" (identifier "pbVar16") (+ "+") (unary_expression "-iVar15" (- "-") (identifier "iVar15")))) (; ";")) (} "}"))) (if_statement "if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;" (if "if") (parenthesized_expression "(9 < (iVar19 - 0x30U & 0xff))" (( "(") (binary_expression "9 < (iVar19 - 0x30U & 0xff)" (number_literal "9") (< "<") (parenthesized_expression "(iVar19 - 0x30U & 0xff)" (( "(") (binary_expression "iVar19 - 0x30U & 0xff" (binary_expression "iVar19 - 0x30U" (identifier "iVar19") (- "-") (number_literal "0x30U")) (& "&") (number_literal "0xff")) () ")"))) () ")")) (goto_statement "goto LAB_0003fd48;" (goto "goto") (statement_identifier "LAB_0003fd48") (; ";"))) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar18 = pbVar16;" (assignment_expression "pbVar18 = pbVar16" (identifier "pbVar18") (= "=") (identifier "pbVar16")) (; ";")) (do_statement "do {\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    } while ((iVar19 - 0x30U & 0xff) < 10);" (do "do") (compound_statement "{\n      pbVar18 = pbVar18 + iVar15;\n      uVar7 = uVar13 * 4;\n      uVar20 = uVar13 >> 0x1e;\n      uVar14 = uVar13 * 5;\n      uVar11 = uVar13 * 10;\n      uVar8 = uVar11 + iVar19;\n      uVar13 = uVar8 - 0x30;\n      iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;\n      iVar17 = iVar17 + iVar15;\n      if (pbVar12 <= pbVar18) break;\n      iVar19 = (int)(char)*pbVar18;\n    }" ({ "{") (expression_statement "pbVar18 = pbVar18 + iVar15;" (assignment_expression "pbVar18 = pbVar18 + iVar15" (identifier "pbVar18") (= "=") (binary_expression "pbVar18 + iVar15" (identifier "pbVar18") (+ "+") (identifier "iVar15"))) (; ";")) (expression_statement "uVar7 = uVar13 * 4;" (assignment_expression "uVar7 = uVar13 * 4" (identifier "uVar7") (= "=") (binary_expression "uVar13 * 4" (identifier "uVar13") (* "*") (number_literal "4"))) (; ";")) (expression_statement "uVar20 = uVar13 >> 0x1e;" (assignment_expression "uVar20 = uVar13 >> 0x1e" (identifier "uVar20") (= "=") (binary_expression "uVar13 >> 0x1e" (identifier "uVar13") (>> ">>") (number_literal "0x1e"))) (; ";")) (expression_statement "uVar14 = uVar13 * 5;" (assignment_expression "uVar14 = uVar13 * 5" (identifier "uVar14") (= "=") (binary_expression "uVar13 * 5" (identifier "uVar13") (* "*") (number_literal "5"))) (; ";")) (expression_statement "uVar11 = uVar13 * 10;" (assignment_expression "uVar11 = uVar13 * 10" (identifier "uVar11") (= "=") (binary_expression "uVar13 * 10" (identifier "uVar13") (* "*") (number_literal "10"))) (; ";")) (expression_statement "uVar8 = uVar11 + iVar19;" (assignment_expression "uVar8 = uVar11 + iVar19" (identifier "uVar8") (= "=") (binary_expression "uVar11 + iVar19" (identifier "uVar11") (+ "+") (identifier "iVar19"))) (; ";")) (expression_statement "uVar13 = uVar8 - 0x30;" (assignment_expression "uVar13 = uVar8 - 0x30" (identifier "uVar13") (= "=") (binary_expression "uVar8 - 0x30" (identifier "uVar8") (- "-") (number_literal "0x30"))) (; ";")) (expression_statement "iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1;" (assignment_expression "iVar5 = (uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1" (identifier "iVar5") (= "=") (binary_expression "(uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f) + -1" (binary_expression "(uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +\n              (iVar19 >> 0x1f)" (binary_expression "(uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11) +\n              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2)" (binary_expression "(uint)(uVar13 < uVar8) +\n              (uint)(uVar8 < uVar11)" (call_expression "(uint)(uVar13 < uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar13 < uVar8)" (( "(") (binary_expression "uVar13 < uVar8" (identifier "uVar13") (< "<") (identifier "uVar8")) () ")"))) (+ "+") (call_expression "(uint)(uVar8 < uVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar8 < uVar11)" (( "(") (binary_expression "uVar8 < uVar11" (identifier "uVar8") (< "<") (identifier "uVar11")) () ")")))) (+ "+") (parenthesized_expression "(uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2)" (( "(") (binary_expression "uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2" (binary_expression "uVar14 >> 0x1f" (identifier "uVar14") (>> ">>") (number_literal "0x1f")) (| "|") (binary_expression "((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2" (parenthesized_expression "((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5)" (( "(") (binary_expression "(uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5" (binary_expression "(uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2)" (call_expression "(uint)(uVar14 < uVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar14 < uVar7)" (( "(") (binary_expression "uVar14 < uVar7" (identifier "uVar14") (< "<") (identifier "uVar7")) () ")"))) (+ "+") (parenthesized_expression "(uVar20 | iVar5 << 2)" (( "(") (binary_expression "uVar20 | iVar5 << 2" (identifier "uVar20") (| "|") (binary_expression "iVar5 << 2" (identifier "iVar5") (<< "<<") (number_literal "2"))) () ")"))) (+ "+") (identifier "iVar5")) () ")")) (* "*") (number_literal "2"))) () ")"))) (+ "+") (parenthesized_expression "(iVar19 >> 0x1f)" (( "(") (binary_expression "iVar19 >> 0x1f" (identifier "iVar19") (>> ">>") (number_literal "0x1f")) () ")"))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar17 = iVar17 + iVar15;" (assignment_expression "iVar17 = iVar17 + iVar15" (identifier "iVar17") (= "=") (binary_expression "iVar17 + iVar15" (identifier "iVar17") (+ "+") (identifier "iVar15"))) (; ";")) (if_statement "if (pbVar12 <= pbVar18) break;" (if "if") (parenthesized_expression "(pbVar12 <= pbVar18)" (( "(") (binary_expression "pbVar12 <= pbVar18" (identifier "pbVar12") (<= "<=") (identifier "pbVar18")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar19 = (int)(char)*pbVar18;" (assignment_expression "iVar19 = (int)(char)*pbVar18" (identifier "iVar19") (= "=") (cast_expression "(int)(char)*pbVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar18" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar18" (* "*") (identifier "pbVar18"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((iVar19 - 0x30U & 0xff) < 10)" (( "(") (binary_expression "(iVar19 - 0x30U & 0xff) < 10" (parenthesized_expression "(iVar19 - 0x30U & 0xff)" (( "(") (binary_expression "iVar19 - 0x30U & 0xff" (binary_expression "iVar19 - 0x30U" (identifier "iVar19") (- "-") (number_literal "0x30U")) (& "&") (number_literal "0xff")) () ")")) (< "<") (number_literal "10")) () ")")) (; ";")) (if_statement "if (-1 < iVar5) goto LAB_0003fd54;" (if "if") (parenthesized_expression "(-1 < iVar5)" (( "(") (binary_expression "-1 < iVar5" (number_literal "-1") (< "<") (identifier "iVar5")) () ")")) (goto_statement "goto LAB_0003fd54;" (goto "goto") (statement_identifier "LAB_0003fd54") (; ";"))) (if_statement "if (bVar2) {\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }\n    else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (compound_statement "{\n      iVar5 = 0;\n      iVar19 = -0x80000000;\n    }" ({ "{") (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar19 = -0x80000000;" (assignment_expression "iVar19 = -0x80000000" (identifier "iVar19") (= "=") (number_literal "-0x80000000")) (; ";")) (} "}")) (else_clause "else {\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }" (else "else") (compound_statement "{\n      iVar5 = -1;\n      iVar19 = 0x7fffffff;\n    }" ({ "{") (expression_statement "iVar5 = -1;" (assignment_expression "iVar5 = -1" (identifier "iVar5") (= "=") (number_literal "-1")) (; ";")) (expression_statement "iVar19 = 0x7fffffff;" (assignment_expression "iVar19 = 0x7fffffff" (identifier "iVar19") (= "=") (number_literal "0x7fffffff")) (; ";")) (} "}")))) (expression_statement "param_2[1] = iVar5;" (assignment_expression "param_2[1] = iVar5" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*param_2 = iVar19;" (assignment_expression "*param_2 = iVar19" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar19")) (; ";")) (labeled_statement "LAB_0003fc5c:\n    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;" (statement_identifier "LAB_0003fc5c") (: ":") (if_statement "if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;" (if "if") (parenthesized_expression "(((bool)uVar4 != false) || (pbVar12 <= pbVar18))" (( "(") (binary_expression "((bool)uVar4 != false) || (pbVar12 <= pbVar18)" (parenthesized_expression "((bool)uVar4 != false)" (( "(") (binary_expression "(bool)uVar4 != false" (cast_expression "(bool)uVar4" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar4")) (!= "!=") (false "false")) () ")")) (|| "||") (parenthesized_expression "(pbVar12 <= pbVar18)" (( "(") (binary_expression "pbVar12 <= pbVar18" (identifier "pbVar12") (<= "<=") (identifier "pbVar18")) () ")"))) () ")")) (goto_statement "goto LAB_0003fc74;" (goto "goto") (statement_identifier "LAB_0003fc74") (; ";")))) (} "}")) (else_clause "else {\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }" (else "else") (compound_statement "{\nLAB_0003fd48:\n    iVar17 = 0;\n    iVar5 = 0;\n    uVar13 = 0;\n    pbVar18 = pbVar16;\nLAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }\n    if (iVar17 != 0) goto LAB_0003fc5c;\n    if (param_1 == pbVar16) {\n      return true;\n    }\n    if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }\n    if (pbVar12 <= pbVar18) {\n      return false;\n    }\n  }" ({ "{") (labeled_statement "LAB_0003fd48:\n    iVar17 = 0;" (statement_identifier "LAB_0003fd48") (: ":") (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";"))) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar18 = pbVar16;" (assignment_expression "pbVar18 = pbVar16" (identifier "pbVar18") (= "=") (identifier "pbVar16")) (; ";")) (labeled_statement "LAB_0003fd54:\n    if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }" (statement_identifier "LAB_0003fd54") (: ":") (if_statement "if (bVar2) {\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }\n    else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (compound_statement "{\n      param_2[1] = -uVar13;\n      *param_2 = -(uint)(-uVar13 != 0) - iVar5;\n    }" ({ "{") (expression_statement "param_2[1] = -uVar13;" (assignment_expression "param_2[1] = -uVar13" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (unary_expression "-uVar13" (- "-") (identifier "uVar13"))) (; ";")) (expression_statement "*param_2 = -(uint)(-uVar13 != 0) - iVar5;" (assignment_expression "*param_2 = -(uint)(-uVar13 != 0) - iVar5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "-(uint)(-uVar13 != 0) - iVar5" (unary_expression "-(uint)(-uVar13 != 0)" (- "-") (call_expression "(uint)(-uVar13 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(-uVar13 != 0)" (( "(") (binary_expression "-uVar13 != 0" (unary_expression "-uVar13" (- "-") (identifier "uVar13")) (!= "!=") (number_literal "0")) () ")")))) (- "-") (identifier "iVar5"))) (; ";")) (} "}")) (else_clause "else {\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }" (else "else") (compound_statement "{\n      *param_2 = iVar5;\n      param_2[1] = uVar13;\n    }" ({ "{") (expression_statement "*param_2 = iVar5;" (assignment_expression "*param_2 = iVar5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "param_2[1] = uVar13;" (assignment_expression "param_2[1] = uVar13" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar13")) (; ";")) (} "}"))))) (if_statement "if (iVar17 != 0) goto LAB_0003fc5c;" (if "if") (parenthesized_expression "(iVar17 != 0)" (( "(") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003fc5c;" (goto "goto") (statement_identifier "LAB_0003fc5c") (; ";"))) (if_statement "if (param_1 == pbVar16) {\n      return true;\n    }" (if "if") (parenthesized_expression "(param_1 == pbVar16)" (( "(") (binary_expression "param_1 == pbVar16" (identifier "param_1") (== "==") (identifier "pbVar16")) () ")")) (compound_statement "{\n      return true;\n    }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (if_statement "if ((bool)uVar4 != false) {\n      return (bool)uVar4;\n    }" (if "if") (parenthesized_expression "((bool)uVar4 != false)" (( "(") (binary_expression "(bool)uVar4 != false" (cast_expression "(bool)uVar4" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar4")) (!= "!=") (false "false")) () ")")) (compound_statement "{\n      return (bool)uVar4;\n    }" ({ "{") (return_statement "return (bool)uVar4;" (return "return") (cast_expression "(bool)uVar4" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar4")) (; ";")) (} "}"))) (if_statement "if (pbVar12 <= pbVar18) {\n      return false;\n    }" (if "if") (parenthesized_expression "(pbVar12 <= pbVar18)" (( "(") (binary_expression "pbVar12 <= pbVar18" (identifier "pbVar12") (<= "<=") (identifier "pbVar18")) () ")")) (compound_statement "{\n      return false;\n    }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (} "}")))) (expression_statement "pbVar18 = pbVar16 + iVar17;" (assignment_expression "pbVar18 = pbVar16 + iVar17" (identifier "pbVar18") (= "=") (binary_expression "pbVar16 + iVar17" (identifier "pbVar16") (+ "+") (identifier "iVar17"))) (; ";")) (do_statement "do {\n    bVar6 = *pbVar18;\n    pbVar18 = pbVar18 + iVar15;\n    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }\n  } while (pbVar18 < pbVar12);" (do "do") (compound_statement "{\n    bVar6 = *pbVar18;\n    pbVar18 = pbVar18 + iVar15;\n    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }\n  }" ({ "{") (expression_statement "bVar6 = *pbVar18;" (assignment_expression "bVar6 = *pbVar18" (identifier "bVar6") (= "=") (pointer_expression "*pbVar18" (* "*") (identifier "pbVar18"))) (; ";")) (expression_statement "pbVar18 = pbVar18 + iVar15;" (assignment_expression "pbVar18 = pbVar18 + iVar15" (identifier "pbVar18") (= "=") (binary_expression "pbVar18 + iVar15" (identifier "pbVar18") (+ "+") (identifier "iVar15"))) (; ";")) (if_statement "if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }" (if "if") (parenthesized_expression "((puVar3[bVar6 - 0x3d18] & 1) == 0)" (( "(") (binary_expression "(puVar3[bVar6 - 0x3d18] & 1) == 0" (parenthesized_expression "(puVar3[bVar6 - 0x3d18] & 1)" (( "(") (binary_expression "puVar3[bVar6 - 0x3d18] & 1" (subscript_expression "puVar3[bVar6 - 0x3d18]" (identifier "puVar3") ([ "[") (binary_expression "bVar6 - 0x3d18" (identifier "bVar6") (- "-") (number_literal "0x3d18")) (] "]")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar4 = true;\n      goto LAB_0003fc74;\n    }" ({ "{") (expression_statement "uVar4 = true;" (assignment_expression "uVar4 = true" (identifier "uVar4") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_0003fc74;" (goto "goto") (statement_identifier "LAB_0003fc74") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(pbVar18 < pbVar12)" (( "(") (binary_expression "pbVar18 < pbVar12" (identifier "pbVar18") (< "<") (identifier "pbVar12")) () ")")) (; ";")) (expression_statement "uVar4 = false;" (assignment_expression "uVar4 = false" (identifier "uVar4") (= "=") (false "false")) (; ";")) (labeled_statement "LAB_0003fc74:\n  if (iVar17 < iVar15 * 0x13) {\n    return (bool)uVar4;\n  }" (statement_identifier "LAB_0003fc74") (: ":") (if_statement "if (iVar17 < iVar15 * 0x13) {\n    return (bool)uVar4;\n  }" (if "if") (parenthesized_expression "(iVar17 < iVar15 * 0x13)" (( "(") (binary_expression "iVar17 < iVar15 * 0x13" (identifier "iVar17") (< "<") (binary_expression "iVar15 * 0x13" (identifier "iVar15") (* "*") (number_literal "0x13"))) () ")")) (compound_statement "{\n    return (bool)uVar4;\n  }" ({ "{") (return_statement "return (bool)uVar4;" (return "return") (cast_expression "(bool)uVar4" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar4")) (; ";")) (} "}")))) (if_statement "if (iVar15 * 0x13 == iVar17) {\n    iVar19 = ((char)*pbVar16 + -0x39) * 10;\n    if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }\n  }\n  else {\n    iVar19 = 1;\n  }" (if "if") (parenthesized_expression "(iVar15 * 0x13 == iVar17)" (( "(") (binary_expression "iVar15 * 0x13 == iVar17" (binary_expression "iVar15 * 0x13" (identifier "iVar15") (* "*") (number_literal "0x13")) (== "==") (identifier "iVar17")) () ")")) (compound_statement "{\n    iVar19 = ((char)*pbVar16 + -0x39) * 10;\n    if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }\nLAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }\n  }" ({ "{") (expression_statement "iVar19 = ((char)*pbVar16 + -0x39) * 10;" (assignment_expression "iVar19 = ((char)*pbVar16 + -0x39) * 10" (identifier "iVar19") (= "=") (binary_expression "((char)*pbVar16 + -0x39) * 10" (parenthesized_expression "((char)*pbVar16 + -0x39)" (( "(") (binary_expression "(char)*pbVar16 + -0x39" (cast_expression "(char)*pbVar16" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar16" (* "*") (identifier "pbVar16"))) (+ "+") (number_literal "-0x39")) () ")")) (* "*") (number_literal "10"))) (; ";")) (if_statement "if (iVar19 == 0) {\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }" (if "if") (parenthesized_expression "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;\n      pbVar12 = pbVar16 + iVar15;\n      do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);\n      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;\n    }" ({ "{") (expression_statement "pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;" (assignment_expression "pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7" (identifier "pcVar9") (= "=") (binary_expression "PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7" (identifier "PTR_s_o_page_from_root____pageno_INTEG_0019095c") (+ "+") (number_literal "-0x65c7"))) (; ";")) (expression_statement "pbVar12 = pbVar16 + iVar15;" (assignment_expression "pbVar12 = pbVar16 + iVar15" (identifier "pbVar12") (= "=") (binary_expression "pbVar16 + iVar15" (identifier "pbVar16") (+ "+") (identifier "iVar15"))) (; ";")) (do_statement "do {\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);" (do "do") (compound_statement "{\n        pcVar10 = pcVar9 + 1;\n        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;\n        pbVar12 = pbVar12 + iVar15;\n        if (iVar19 != 0) goto LAB_0003fcf8;\n        pcVar9 = pcVar10;\n      }" ({ "{") (expression_statement "pcVar10 = pcVar9 + 1;" (assignment_expression "pcVar10 = pcVar9 + 1" (identifier "pcVar10") (= "=") (binary_expression "pcVar9 + 1" (identifier "pcVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;" (assignment_expression "iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10" (identifier "iVar19") (= "=") (binary_expression "((int)(char)*pbVar12 - (int)*pcVar9) * 10" (parenthesized_expression "((int)(char)*pbVar12 - (int)*pcVar9)" (( "(") (binary_expression "(int)(char)*pbVar12 - (int)*pcVar9" (cast_expression "(int)(char)*pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar12" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (- "-") (cast_expression "(int)*pcVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9")))) () ")")) (* "*") (number_literal "10"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + iVar15;" (assignment_expression "pbVar12 = pbVar12 + iVar15" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + iVar15" (identifier "pbVar12") (+ "+") (identifier "iVar15"))) (; ";")) (if_statement "if (iVar19 != 0) goto LAB_0003fcf8;" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003fcf8;" (goto "goto") (statement_identifier "LAB_0003fcf8") (; ";"))) (expression_statement "pcVar9 = pcVar10;" (assignment_expression "pcVar9 = pcVar10" (identifier "pcVar9") (= "=") (identifier "pcVar10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10)" (( "(") (binary_expression "PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10" (binary_expression "PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6" (identifier "PTR_s_o_page_from_root____pageno_INTEG_0019095c") (+ "+") (number_literal "-0x65b6")) (!= "!=") (identifier "pcVar10")) () ")")) (; ";")) (expression_statement "iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;" (assignment_expression "iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38" (identifier "iVar19") (= "=") (binary_expression "(char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38" (cast_expression "(char)(pbVar16 + iVar15)[iVar15 * 0x11]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(pbVar16 + iVar15)[iVar15 * 0x11]" (parenthesized_expression "(pbVar16 + iVar15)" (( "(") (binary_expression "pbVar16 + iVar15" (identifier "pbVar16") (+ "+") (identifier "iVar15")) () ")")) ([ "[") (binary_expression "iVar15 * 0x11" (identifier "iVar15") (* "*") (number_literal "0x11")) (] "]"))) (+ "+") (number_literal "-0x38"))) (; ";")) (} "}"))) (labeled_statement "LAB_0003fcf8:\n    if (iVar19 < 0) {\n      return (bool)uVar4;\n    }" (statement_identifier "LAB_0003fcf8") (: ":") (if_statement "if (iVar19 < 0) {\n      return (bool)uVar4;\n    }" (if "if") (parenthesized_expression "(iVar19 < 0)" (( "(") (binary_expression "iVar19 < 0" (identifier "iVar19") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      return (bool)uVar4;\n    }" ({ "{") (return_statement "return (bool)uVar4;" (return "return") (cast_expression "(bool)uVar4" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar4")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    iVar19 = 1;\n  }" (else "else") (compound_statement "{\n    iVar19 = 1;\n  }" ({ "{") (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" (identifier "iVar19") (= "=") (number_literal "1")) (; ";")) (} "}")))) (if_statement "if (bVar2) {\n    param_2[1] = 0;\n    *param_2 = -0x80000000;\n  }\n  else {\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (compound_statement "{\n    param_2[1] = 0;\n    *param_2 = -0x80000000;\n  }" ({ "{") (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_2 = -0x80000000;" (assignment_expression "*param_2 = -0x80000000" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "-0x80000000")) (; ";")) (} "}")) (else_clause "else {\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }" (else "else") (compound_statement "{\n    param_2[1] = -1;\n    *param_2 = 0x7fffffff;\n  }" ({ "{") (expression_statement "param_2[1] = -1;" (assignment_expression "param_2[1] = -1" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "*param_2 = 0x7fffffff;" (assignment_expression "*param_2 = 0x7fffffff" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "0x7fffffff")) (; ";")) (} "}")))) (if_statement "if (iVar19 == 0) {\n    if (!bVar2) {\n      uVar4 = 3;\n    }\n    return uVar4;\n  }" (if "if") (parenthesized_expression "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (!bVar2) {\n      uVar4 = 3;\n    }\n    return uVar4;\n  }" ({ "{") (if_statement "if (!bVar2) {\n      uVar4 = 3;\n    }" (if "if") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (compound_statement "{\n      uVar4 = 3;\n    }" ({ "{") (expression_statement "uVar4 = 3;" (assignment_expression "uVar4 = 3" (identifier "uVar4") (= "=") (number_literal "3")) (; ";")) (} "}"))) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (return_statement "return 2;" (return "return") (number_literal "2") (; ";")) (} "}")))

int function_1(char *var_1,type_1 *pNum,int var_2,type_2 var_7)

{
  type_3 var_10;
  bool bVar2;
  bool bVar3;
  type_4 *puVar4;
  type_5 var_4;
  char var_6;
  int var_20;
  type_3 *var_11;
  type_5 var_18;
  type_5 var_16;
  type_6 uVar11;
  char *var_23;
  char *var_24;
  type_7 in_register_0000001c;
  type_6 uVar14;
  type_5 var_15;
  type_3 *var_8;
  type_5 var_5;
  type_5 var_17;
  int var_9;
  type_3 *var_13;
  int var_21;
  type_3 *var_14;
  int var_12;
  type_5 var_19;
  
  puVar4 = PTR_DAT_00190b94;
  var_8 = (type_3 *)(var_1 + var_2);
  if (var_3(in_register_0000001c,var_7) == 1) {
    var_4 = 0;
    var_9 = 1;
  }
  else {
    var_5 = 3 - var_3(in_register_0000001c,var_7);
    var_4 = (type_5)((int)var_5 < var_2);
    if (var_4 != 0) {
      var_6 = var_1[var_5];
      while (var_17 = var_5 + 2, var_6 == '\0') {
        var_4 = (type_5)((int)var_17 < var_2);
        var_5 = var_17;
        if (var_4 == 0) break;
        var_6 = var_1[var_17];
      }
    }
    var_8 = (type_3 *)(var_1 + (var_5 ^ 1));
    var_9 = 2;
    var_1 = var_1 + (var_7 & 1);
  }
  bVar2 = var_1 < var_8;
  if (!bVar2) {
    *(type_6 *)((int)pNum + 4) = 0;
    *(type_6 *)pNum = 0;
    return 1;
  }
  var_10 = *var_1;
  while (var_1 = (char *)((type_3 *)var_1 + var_9), (PTR_DAT_00190b94[var_10 - 0x3d18] & 1) != 0) {
    bVar2 = var_1 < var_8;
    if (!bVar2) {
      *(type_6 *)((int)pNum + 4) = 0;
      *(type_6 *)pNum = 0;
      return 1;
    }
    var_10 = *var_1;
  }
  var_11 = (type_3 *)var_1 + -var_9;
  if (var_10 == 0x2d) {
    var_11 = var_11 + var_9;
    bVar3 = true;
    bVar2 = var_11 < var_8;
  }
  else {
    bVar3 = false;
    if (var_10 == 0x2b) {
      var_11 = var_11 + var_9;
      bVar2 = var_11 < var_8;
    }
  }
  var_13 = var_11;
  if (bVar2) {
    var_12 = (int)(char)*var_11;
    if (var_12 == 0x30) {
      var_13 = var_11 + var_9;
      do {
        if (var_8 <= var_13) goto LAB_0003fd48;
        var_12 = (int)(char)*var_13;
        var_13 = var_13 + var_9;
      } while (var_12 == 0x30);
      var_13 = var_13 + -var_9;
    }
    if (9 < (var_12 - 0x30U & 0xff)) goto LAB_0003fd48;
    var_21 = 0;
    var_20 = 0;
    var_5 = 0;
    var_14 = var_13;
    do {
      var_14 = var_14 + var_9;
      var_18 = var_5 * 4;
      var_19 = var_5 >> 0x1e;
      var_17 = var_5 * 5;
      var_15 = var_5 * 10;
      var_16 = var_15 + var_12;
      var_5 = var_16 - 0x30;
      var_20 = (type_5)(var_5 < var_16) +
              (type_5)(var_16 < var_15) +
              (var_17 >> 0x1f | ((type_5)(var_17 < var_18) + (var_19 | var_20 << 2) + var_20) * 2) +
              (var_12 >> 0x1f) + -1;
      var_21 = var_21 + var_9;
      if (var_8 <= var_14) break;
      var_12 = (int)(char)*var_14;
    } while ((var_12 - 0x30U & 0xff) < 10);
    if (-1 < var_20) goto LAB_0003fd54;
    if (bVar3) {
      uVar14 = 0;
      uVar11 = 0x80000000;
    }
    else {
      uVar14 = 0xffffffff;
      uVar11 = 0x7fffffff;
    }
    *(type_6 *)((int)pNum + 4) = uVar14;
    *(type_6 *)pNum = uVar11;
LAB_0003fc5c:
    if ((var_4 != 0) || (var_8 <= var_14)) goto LAB_0003fc74;
  }
  else {
LAB_0003fd48:
    var_21 = 0;
    var_20 = 0;
    var_5 = 0;
    var_14 = var_13;
LAB_0003fd54:
    if (bVar3) {
      *(type_5 *)((int)pNum + 4) = -var_5;
      *(type_5 *)pNum = -(type_5)(-var_5 != 0) - var_20;
    }
    else {
      *(int *)pNum = var_20;
      *(type_5 *)((int)pNum + 4) = var_5;
    }
    if (var_21 != 0) goto LAB_0003fc5c;
    if (var_11 == var_13) {
      return 1;
    }
    if (var_4 != 0) {
      return var_4;
    }
    if (var_8 <= var_14) {
      return 0;
    }
  }
  var_11 = var_13 + var_21;
  do {
    var_10 = *var_11;
    var_11 = var_11 + var_9;
    if ((puVar4[var_10 - 0x3d18] & 1) == 0) {
      var_4 = 1;
      goto LAB_0003fc74;
    }
  } while (var_11 < var_8);
  var_4 = 0;
LAB_0003fc74:
  if (var_21 < var_9 * 0x13) {
    return var_4;
  }
  if (var_9 * 0x13 == var_21) {
    var_12 = ((char)*var_13 + -0x39) * 10;
    if (var_12 == 0) {
      var_23 = var_22 + -0x65c7;
      var_8 = var_13 + var_9;
      do {
        var_24 = var_23 + 1;
        var_12 = ((int)(char)*var_8 - (int)*var_23) * 10;
        var_8 = var_8 + var_9;
        if (var_12 != 0) goto LAB_0003fcf8;
        var_23 = var_24;
      } while (var_22 + -0x65b6 != var_24);
      var_12 = (char)(var_13 + var_9)[var_9 * 0x11] + -0x38;
    }
LAB_0003fcf8:
    if (var_12 < 0) {
      return var_4;
    }
  }
  else {
    var_12 = 1;
  }
  if (bVar3) {
    *(type_6 *)((int)pNum + 4) = 0;
    *(type_6 *)pNum = 0x80000000;
  }
  else {
    *(type_6 *)((int)pNum + 4) = 0xffffffff;
    *(type_6 *)pNum = 0x7fffffff;
  }
  if (var_12 == 0) {
    if (!bVar3) {
      var_4 = 3;
    }
    return var_4;
  }
  return 2;
}


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

undefined1 MASKED(byte *param_1,int *param_2,int param_3,uint param_4)

{
  bool bVar1;
  bool bVar2;
  undefined *puVar3;
  undefined1 uVar4;
  byte bVar6;
  int iVar5;
  uint uVar7;
  uint uVar8;
  char *pcVar9;
  char *pcVar10;
  uint uVar11;
  byte *pbVar12;
  uint uVar13;
  uint uVar14;
  int iVar15;
  byte *pbVar16;
  int iVar17;
  byte *pbVar18;
  int iVar19;
  uint uVar20;
  
  puVar3 = PTR_DAT_00190b94;
  pbVar12 = param_1 + param_3;
  if (param_4 == 1) {
    uVar4 = false;
    iVar15 = 1;
  }
  else {
    uVar13 = 3 - param_4;
    uVar4 = (int)uVar13 < param_3;
    if ((bool)uVar4) {
      bVar6 = param_1[uVar13];
      while (uVar14 = uVar13 + 2, bVar6 == 0) {
        uVar4 = (int)uVar14 < param_3;
        uVar13 = uVar14;
        if (!(bool)uVar4) break;
        bVar6 = param_1[uVar14];
      }
    }
    pbVar12 = param_1 + (uVar13 ^ 1);
    iVar15 = 2;
    param_1 = param_1 + (param_4 & 1);
  }
  bVar1 = param_1 < pbVar12;
  if (!bVar1) {
    param_2[1] = 0;
    *param_2 = 0;
    return true;
  }
  bVar6 = *param_1;
  while (param_1 = param_1 + iVar15, (PTR_DAT_00190b94[bVar6 - 0x3d18] & 1) != 0) {
    bVar1 = param_1 < pbVar12;
    if (!bVar1) {
      param_2[1] = 0;
      *param_2 = 0;
      return true;
    }
    bVar6 = *param_1;
  }
  param_1 = param_1 + -iVar15;
  if (bVar6 == 0x2d) {
    param_1 = param_1 + iVar15;
    bVar2 = true;
    bVar1 = param_1 < pbVar12;
  }
  else {
    bVar2 = false;
    if (bVar6 == 0x2b) {
      param_1 = param_1 + iVar15;
      bVar1 = param_1 < pbVar12;
    }
  }
  pbVar16 = param_1;
  if (bVar1) {
    iVar19 = (int)(char)*param_1;
    if (iVar19 == 0x30) {
      pbVar16 = param_1 + iVar15;
      do {
        if (pbVar12 <= pbVar16) goto LAB_0003fd48;
        iVar19 = (int)(char)*pbVar16;
        pbVar16 = pbVar16 + iVar15;
      } while (iVar19 == 0x30);
      pbVar16 = pbVar16 + -iVar15;
    }
    if (9 < (iVar19 - 0x30U & 0xff)) goto LAB_0003fd48;
    iVar17 = 0;
    iVar5 = 0;
    uVar13 = 0;
    pbVar18 = pbVar16;
    do {
      pbVar18 = pbVar18 + iVar15;
      uVar7 = uVar13 * 4;
      uVar20 = uVar13 >> 0x1e;
      uVar14 = uVar13 * 5;
      uVar11 = uVar13 * 10;
      uVar8 = uVar11 + iVar19;
      uVar13 = uVar8 - 0x30;
      iVar5 = (uint)(uVar13 < uVar8) +
              (uint)(uVar8 < uVar11) +
              (uVar14 >> 0x1f | ((uint)(uVar14 < uVar7) + (uVar20 | iVar5 << 2) + iVar5) * 2) +
              (iVar19 >> 0x1f) + -1;
      iVar17 = iVar17 + iVar15;
      if (pbVar12 <= pbVar18) break;
      iVar19 = (int)(char)*pbVar18;
    } while ((iVar19 - 0x30U & 0xff) < 10);
    if (-1 < iVar5) goto LAB_0003fd54;
    if (bVar2) {
      iVar5 = 0;
      iVar19 = -0x80000000;
    }
    else {
      iVar5 = -1;
      iVar19 = 0x7fffffff;
    }
    param_2[1] = iVar5;
    *param_2 = iVar19;
LAB_0003fc5c:
    if (((bool)uVar4 != false) || (pbVar12 <= pbVar18)) goto LAB_0003fc74;
  }
  else {
LAB_0003fd48:
    iVar17 = 0;
    iVar5 = 0;
    uVar13 = 0;
    pbVar18 = pbVar16;
LAB_0003fd54:
    if (bVar2) {
      param_2[1] = -uVar13;
      *param_2 = -(uint)(-uVar13 != 0) - iVar5;
    }
    else {
      *param_2 = iVar5;
      param_2[1] = uVar13;
    }
    if (iVar17 != 0) goto LAB_0003fc5c;
    if (param_1 == pbVar16) {
      return true;
    }
    if ((bool)uVar4 != false) {
      return (bool)uVar4;
    }
    if (pbVar12 <= pbVar18) {
      return false;
    }
  }
  pbVar18 = pbVar16 + iVar17;
  do {
    bVar6 = *pbVar18;
    pbVar18 = pbVar18 + iVar15;
    if ((puVar3[bVar6 - 0x3d18] & 1) == 0) {
      uVar4 = true;
      goto LAB_0003fc74;
    }
  } while (pbVar18 < pbVar12);
  uVar4 = false;
LAB_0003fc74:
  if (iVar17 < iVar15 * 0x13) {
    return (bool)uVar4;
  }
  if (iVar15 * 0x13 == iVar17) {
    iVar19 = ((char)*pbVar16 + -0x39) * 10;
    if (iVar19 == 0) {
      pcVar9 = PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65c7;
      pbVar12 = pbVar16 + iVar15;
      do {
        pcVar10 = pcVar9 + 1;
        iVar19 = ((int)(char)*pbVar12 - (int)*pcVar9) * 10;
        pbVar12 = pbVar12 + iVar15;
        if (iVar19 != 0) goto LAB_0003fcf8;
        pcVar9 = pcVar10;
      } while (PTR_s_o_page_from_root____pageno_INTEG_0019095c + -0x65b6 != pcVar10);
      iVar19 = (char)(pbVar16 + iVar15)[iVar15 * 0x11] + -0x38;
    }
LAB_0003fcf8:
    if (iVar19 < 0) {
      return (bool)uVar4;
    }
  }
  else {
    iVar19 = 1;
  }
  if (bVar2) {
    param_2[1] = 0;
    *param_2 = -0x80000000;
  }
  else {
    param_2[1] = -1;
    *param_2 = 0x7fffffff;
  }
  if (iVar19 == 0) {
    if (!bVar2) {
      uVar4 = 3;
    }
    return uVar4;
  }
  return 2;
}

