
int idxAuthCallback(void *pCtx,int eOp,char *z3,char *z4,char *zDb,char *zTrigger)

{
  ulonglong uVar1;
  bool bVar2;
  int iVar3;
  int *piVar4;
  uint uVar5;
  int iVar6;
  byte *pbVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  undefined *puVar11;
  code *pcVar12;
  uint uVar13;
  int rc;
  byte *pbStack_1c;
  
  puVar11 = PTR___stack_chk_guard_00190e24;
  rc = 0;
  pbStack_1c = *(byte **)PTR___stack_chk_guard_00190e24;
  if ((((uint)eOp < 0x18) && ((int)((0x840200U >> (eOp & 0x1fU)) << 0x1f) < 0)) &&
     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(zDb,PTR_LAB_00190958 + 0x1164), iVar3 == 0)) {
    for (iVar3 = *(int *)((int)pCtx + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {
      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(z3,*(undefined4 *)(iVar3 + 4));
      if (iVar6 == 0) {
        piVar4 = *(int **)((int)pCtx + 0x18);
        goto joined_r0x00022dd8;
      }
    }
  }
LAB_00022e10:
  if (pbStack_1c == *(byte **)puVar11) {
    return rc;
  }
  pbVar7 = pbStack_1c;
  puVar11 = PTR___stack_chk_fail_00190df8;
  (*(code *)PTR___stack_chk_fail_00190df8)();
  uVar8 = (uint)(char)*pbVar7;
  if (uVar8 == 0x2d) {
    uVar8 = (uint)(char)pbVar7[1];
    bVar2 = true;
    pbVar7 = pbVar7 + 1;
  }
  else {
    bVar2 = false;
    if (uVar8 == 0x2b) {
      uVar8 = (uint)(char)pbVar7[1];
      pbVar7 = pbVar7 + 1;
    }
  }
  if (uVar8 == 0x30) {
    pcVar12 = *(code **)(puVar11 + 0x16de34);
    if (pbVar7[1] == 0x78) {
      uVar13 = 0;
      iVar3 = 0;
      pbVar7 = pbVar7 + 2;
      do {
        iVar6 = (int)(char)*pbVar7;
        uVar8 = (uint)*pbVar7;
        if (uVar8 - 0x30 < 10) {
          uVar5 = iVar6 - 0x30;
        }
        else if (uVar8 - 0x61 < 6) {
          uVar5 = iVar6 - 0x57;
        }
        else {
          uVar5 = iVar6 - 0x37;
          if (5 < uVar8 - 0x41) goto LAB_00022f80;
        }
        uVar8 = uVar13 >> 0x1c;
        uVar13 = uVar5 + uVar13 * 0x10;
        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);
        pbVar7 = pbVar7 + 1;
      } while( true );
    }
  }
  else {
    pcVar12 = *(code **)(puVar11 + 0x16de34);
  }
  iVar3 = 0;
  piVar4 = (int *)(*pcVar12)();
  uVar13 = 0;
  while( true ) {
    iVar6 = (int)uVar8 >> 0x1f;
    uVar5 = uVar13 * 10 + uVar8;
    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;
    pbVar7 = pbVar7 + 1;
    uVar8 = (uint)(char)*pbVar7;
    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +
            (uint)(uVar5 < uVar13 * 10) +
            (uVar13 * 5 >> 0x1f |
            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +
            -1;
    uVar13 = uVar5 - 0x30;
  }
LAB_00022f80:
  iVar10 = *(int *)(puVar11 + 0x16dabc);
  iVar9 = 0;
  iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;
  piVar4 = (int *)(iVar10 + -0x2838);
  while( true ) {
    piVar4 = piVar4 + 2;
    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);
    if (iVar6 == 0) break;
    iVar9 = iVar9 + 1;
    if (iVar9 == 9) goto LAB_00022fc8;
    iVar6 = *piVar4;
  }
  uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];
  iVar6 = ((int)uVar8 >> 0x1f) * uVar13;
  uVar1 = (ulonglong)uVar13;
  uVar13 = (uint)(uVar1 * uVar8);
  iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);
LAB_00022fc8:
  if (bVar2) {
    iVar3 = -(uint)(uVar13 != 0) - iVar3;
  }
  return iVar3;
joined_r0x00022dd8:
  if (piVar4 == (int *)0x0) goto LAB_00022e4c;
  if ((*piVar4 == iVar3) && (piVar4[1] == eOp)) goto LAB_00022e10;
  piVar4 = (int *)piVar4[2];
  goto joined_r0x00022dd8;
LAB_00022e4c:
  piVar4 = (int *)idxMalloc(&rc,0xc);
  if (rc == 0) {
    *piVar4 = iVar3;
    piVar4[1] = eOp;
    piVar4[2] = *(int *)((int)pCtx + 0x18);
    *(int **)((int)pCtx + 0x18) = piVar4;
  }
  goto LAB_00022e10;
}



undefined8
FUN_00022d1c(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  ulonglong uVar1;
  bool bVar2;
  int iVar3;
  int *piVar4;
  uint uVar5;
  int iVar6;
  byte *pbVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  undefined *puVar11;
  code *pcVar12;
  uint uVar13;
  int local_20;
  byte *local_1c;
  
  puVar11 = PTR___stack_chk_guard_00190e24;
  local_20 = 0;
  local_1c = *(byte **)PTR___stack_chk_guard_00190e24;
  if (((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&
     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0
     )) {
    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {
      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));
      if (iVar6 == 0) {
        piVar4 = *(int **)(param_1 + 0x18);
        goto joined_r0x00022dd8;
      }
    }
  }
LAB_00022e10:
  if (local_1c == *(byte **)puVar11) {
    return CONCAT44(local_20,*(byte **)puVar11);
  }
  pbVar7 = local_1c;
  puVar11 = PTR___stack_chk_fail_00190df8;
  (*(code *)PTR___stack_chk_fail_00190df8)();
  uVar8 = (uint)(char)*pbVar7;
  if (uVar8 == 0x2d) {
    uVar8 = (uint)(char)pbVar7[1];
    bVar2 = true;
    pbVar7 = pbVar7 + 1;
  }
  else {
    bVar2 = false;
    if (uVar8 == 0x2b) {
      uVar8 = (uint)(char)pbVar7[1];
      pbVar7 = pbVar7 + 1;
    }
  }
  if (uVar8 == 0x30) {
    pcVar12 = *(code **)(puVar11 + 0x16de34);
    if (pbVar7[1] == 0x78) {
      uVar13 = 0;
      iVar3 = 0;
      pbVar7 = pbVar7 + 2;
      do {
        iVar6 = (int)(char)*pbVar7;
        uVar8 = (uint)*pbVar7;
        if (uVar8 - 0x30 < 10) {
          uVar5 = iVar6 - 0x30;
        }
        else if (uVar8 - 0x61 < 6) {
          uVar5 = iVar6 - 0x57;
        }
        else {
          uVar5 = iVar6 - 0x37;
          if (5 < uVar8 - 0x41) goto LAB_00022f80;
        }
        uVar8 = uVar13 >> 0x1c;
        uVar13 = uVar5 + uVar13 * 0x10;
        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);
        pbVar7 = pbVar7 + 1;
      } while( true );
    }
  }
  else {
    pcVar12 = *(code **)(puVar11 + 0x16de34);
  }
  iVar3 = 0;
  piVar4 = (int *)(*pcVar12)();
  uVar13 = 0;
  while( true ) {
    iVar6 = (int)uVar8 >> 0x1f;
    uVar5 = uVar13 * 10 + uVar8;
    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;
    pbVar7 = pbVar7 + 1;
    uVar8 = (uint)(char)*pbVar7;
    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +
            (uint)(uVar5 < uVar13 * 10) +
            (uVar13 * 5 >> 0x1f |
            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +
            -1;
    uVar13 = uVar5 - 0x30;
  }
LAB_00022f80:
  iVar10 = *(int *)(puVar11 + 0x16dabc);
  iVar9 = 0;
  iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;
  piVar4 = (int *)(iVar10 + -0x2838);
  while( true ) {
    piVar4 = piVar4 + 2;
    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);
    if (iVar6 == 0) break;
    iVar9 = iVar9 + 1;
    if (iVar9 == 9) goto LAB_00022fc8;
    iVar6 = *piVar4;
  }
  uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];
  iVar6 = ((int)uVar8 >> 0x1f) * uVar13;
  uVar1 = (ulonglong)uVar13;
  uVar13 = (uint)(uVar1 * uVar8);
  iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);
LAB_00022fc8:
  if (bVar2) {
    uVar13 = -uVar13;
    iVar3 = -(uint)(uVar13 != 0) - iVar3;
  }
  return CONCAT44(iVar3,uVar13);
joined_r0x00022dd8:
  if (piVar4 == (int *)0x0) goto LAB_00022e4c;
  if ((*piVar4 == iVar3) && (piVar4[1] == param_2)) goto LAB_00022e10;
  piVar4 = (int *)piVar4[2];
  goto joined_r0x00022dd8;
LAB_00022e4c:
  piVar4 = (int *)FUN_00020368(&local_20,0xc);
  if (local_20 == 0) {
    *piVar4 = iVar3;
    piVar4[1] = param_2;
    piVar4[2] = *(int *)(param_1 + 0x18);
    *(int **)(param_1 + 0x18) = piVar4;
  }
  goto LAB_00022e10;
}


lui gp,0x17
addiu gp,gp,0x5c04
addu gp,gp,t9
addiu sp,sp,-0x38
sltiu v0,a1,0x18
sw s3,0x2c(sp)
sw s2,0x28(sp)
or s2,a1,zero
sw gp,0x10(sp)
sw ra,0x34(sp)
sw s4,0x30(sp)
sw s1,0x24(sp)
sw s0,0x20(sp)
lw s3,-0x7afc(gp)
lw a1,0x48(sp)
sw zero,0x18(sp)
lw v1,0x0(s3)
sw v1,0x1c(sp)
beq v0,zero,0x00022e40
_lui v0,0x84
addiu v0,v0,0x200
srlv v0,v0,s2
ext v0,v0,0x0,0x1
beq v0,zero,0x00022e40
_lw t9,-0x7f0c(gp)
or s4,a0,zero
or a0,a1,zero
lw a1,-0x7fc8(gp)
or s1,a2,zero
jalr t9
_addiu a1,a1,0x1164
bne v0,zero,0x00022e0c
_lw gp,0x10(sp)
lw s0,0x10(s4)
bne s0,zero,0x00022dc0
_lw t9,-0x7f0c(gp)
b 0x00022e10
_lw v1,0x18(sp)
lw s0,0xc(s0)
beq s0,zero,0x00022e0c
_lw t9,-0x7f0c(gp)
or a0,s1,zero
jalr t9
_lw a1,0x4(s0)
bne v0,zero,0x00022db4
_lw gp,0x10(sp)
lw v0,0x18(s4)
bne v0,zero,0x00022df4
_lw t9,-0x7fcc(gp)
b 0x00022e4c
_li a1,0xc
lw v0,0x8(v0)
beq v0,zero,0x00022e48
_lw t9,-0x7fcc(gp)
lw v1,0x0(v0)
bne v1,s0,0x00022de8
_nop
lw v1,0x4(v0)
bne v1,s2,0x00022de8
_nop
lw v1,0x18(sp)
lw a0,0x1c(sp)
or v0,v1,zero
lw v1,0x0(s3)
bne a0,v1,0x00022e80
_lw ra,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x38
b 0x00022e10
_or v1,zero,zero
li a1,0xc
addiu t9,t9,0x368
bal 0x00020368
_addiu a0,sp,0x18
lw v1,0x18(sp)
bne v1,zero,0x00022e10
_lw gp,0x10(sp)
sw s0,0x0(v0)
sw s2,0x4(v0)
lw a0,0x18(s4)
lw v1,0x18(sp)
sw a0,0x8(v0)
b 0x00022e10
_sw v0,0x18(s4)
lw t9,-0x7b28(gp)
jalr t9
_nop
(translation_unit "undefined8\nFUN_00022d1c(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)\n\n{\n  ulonglong uVar1;\n  bool bVar2;\n  int iVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  uint uVar13;\n  int local_20;\n  byte *local_1c;\n  \n  puVar11 = PTR___stack_chk_guard_00190e24;\n  local_20 = 0;\n  local_1c = *(byte **)PTR___stack_chk_guard_00190e24;\n  if (((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )) {\n    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }\nLAB_00022e10:\n  if (local_1c == *(byte **)puVar11) {\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }\n  pbVar7 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar8 = (uint)(char)*pbVar7;\n  if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }\n  if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }\n  iVar3 = 0;\n  piVar4 = (int *)(*pcVar12)();\n  uVar13 = 0;\n  while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }\nLAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);\n  iVar9 = 0;\n  iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;\n  piVar4 = (int *)(iVar10 + -0x2838);\n  while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }\n  uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];\n  iVar6 = ((int)uVar8 >> 0x1f) * uVar13;\n  uVar1 = (ulonglong)uVar13;\n  uVar13 = (uint)(uVar1 * uVar8);\n  iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);\nLAB_00022fc8:\n  if (bVar2) {\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }\n  return CONCAT44(iVar3,uVar13);\njoined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;\n  if ((*piVar4 == iVar3) && (piVar4[1] == param_2)) goto LAB_00022e10;\n  piVar4 = (int *)piVar4[2];\n  goto joined_r0x00022dd8;\nLAB_00022e4c:\n  piVar4 = (int *)FUN_00020368(&local_20,0xc);\n  if (local_20 == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = param_2;\n    piVar4[2] = *(int *)(param_1 + 0x18);\n    *(int **)(param_1 + 0x18) = piVar4;\n  }\n  goto LAB_00022e10;\n}\n\n" (function_definition "undefined8\nFUN_00022d1c(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)\n\n{\n  ulonglong uVar1;\n  bool bVar2;\n  int iVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  uint uVar13;\n  int local_20;\n  byte *local_1c;\n  \n  puVar11 = PTR___stack_chk_guard_00190e24;\n  local_20 = 0;\n  local_1c = *(byte **)PTR___stack_chk_guard_00190e24;\n  if (((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )) {\n    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }\nLAB_00022e10:\n  if (local_1c == *(byte **)puVar11) {\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }\n  pbVar7 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar8 = (uint)(char)*pbVar7;\n  if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }\n  if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }\n  iVar3 = 0;\n  piVar4 = (int *)(*pcVar12)();\n  uVar13 = 0;\n  while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }\nLAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);\n  iVar9 = 0;\n  iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;\n  piVar4 = (int *)(iVar10 + -0x2838);\n  while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }\n  uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];\n  iVar6 = ((int)uVar8 >> 0x1f) * uVar13;\n  uVar1 = (ulonglong)uVar13;\n  uVar13 = (uint)(uVar1 * uVar8);\n  iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);\nLAB_00022fc8:\n  if (bVar2) {\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }\n  return CONCAT44(iVar3,uVar13);\njoined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;\n  if ((*piVar4 == iVar3) && (piVar4[1] == param_2)) goto LAB_00022e10;\n  piVar4 = (int *)piVar4[2];\n  goto joined_r0x00022dd8;\nLAB_00022e4c:\n  piVar4 = (int *)FUN_00020368(&local_20,0xc);\n  if (local_20 == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = param_2;\n    piVar4[2] = *(int *)(param_1 + 0x18);\n    *(int **)(param_1 + 0x18) = piVar4;\n  }\n  goto LAB_00022e10;\n}" type_identifier (function_declarator "FUN_00022d1c(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)" identifier (parameter_list "(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  ulonglong uVar1;\n  bool bVar2;\n  int iVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  uint uVar13;\n  int local_20;\n  byte *local_1c;\n  \n  puVar11 = PTR___stack_chk_guard_00190e24;\n  local_20 = 0;\n  local_1c = *(byte **)PTR___stack_chk_guard_00190e24;\n  if (((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )) {\n    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }\nLAB_00022e10:\n  if (local_1c == *(byte **)puVar11) {\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }\n  pbVar7 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar8 = (uint)(char)*pbVar7;\n  if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }\n  if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }\n  iVar3 = 0;\n  piVar4 = (int *)(*pcVar12)();\n  uVar13 = 0;\n  while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }\nLAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);\n  iVar9 = 0;\n  iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;\n  piVar4 = (int *)(iVar10 + -0x2838);\n  while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }\n  uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];\n  iVar6 = ((int)uVar8 >> 0x1f) * uVar13;\n  uVar1 = (ulonglong)uVar13;\n  uVar13 = (uint)(uVar1 * uVar8);\n  iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);\nLAB_00022fc8:\n  if (bVar2) {\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }\n  return CONCAT44(iVar3,uVar13);\njoined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;\n  if ((*piVar4 == iVar3) && (piVar4[1] == param_2)) goto LAB_00022e10;\n  piVar4 = (int *)piVar4[2];\n  goto joined_r0x00022dd8;\nLAB_00022e4c:\n  piVar4 = (int *)FUN_00020368(&local_20,0xc);\n  if (local_20 == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = param_2;\n    piVar4[2] = *(int *)(param_1 + 0x18);\n    *(int **)(param_1 + 0x18) = piVar4;\n  }\n  goto LAB_00022e10;\n}" { (declaration "ulonglong uVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "byte *local_1c;" type_identifier (pointer_declarator "*local_1c" * identifier) ;) (expression_statement "puVar11 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar11 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_1c = *(byte **)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_1c = *(byte **)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(byte **)PTR___stack_chk_guard_00190e24" * (cast_expression "(byte **)PTR___stack_chk_guard_00190e24" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )) {\n    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }" if (parenthesized_expression "(((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     ))" ( (binary_expression "((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )" (parenthesized_expression "((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0))" ( (binary_expression "(param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)" (parenthesized_expression "(param_2 < 0x18)" ( (binary_expression "param_2 < 0x18" identifier < number_literal) )) && (parenthesized_expression "((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)" ( (binary_expression "(int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0x840200U >> (param_2 & 0x1f)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0x840200U >> (param_2 & 0x1f)) << 0x1f)" ( (binary_expression "(0x840200U >> (param_2 & 0x1f)) << 0x1f" (parenthesized_expression "(0x840200U >> (param_2 & 0x1f))" ( (binary_expression "0x840200U >> (param_2 & 0x1f)" number_literal >> (parenthesized_expression "(param_2 & 0x1f)" ( (binary_expression "param_2 & 0x1f" identifier & number_literal) ))) )) << number_literal) ))) < number_literal) ))) )) && (parenthesized_expression "(iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )" ( (comma_expression "iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0" (assignment_expression "iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164)" identifier = (call_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164)" (parenthesized_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)" ( (pointer_expression "*(code *)PTR_sqlite3_stricmp_00190a14" * (cast_expression "(code *)PTR_sqlite3_stricmp_00190a14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_5,PTR_LAB_00190958 + 0x1164)" ( identifier , (binary_expression "PTR_LAB_00190958 + 0x1164" identifier + number_literal) )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }" { (for_statement "for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }" for ( (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ; (binary_expression "iVar3 != 0" identifier != number_literal) ; (assignment_expression "iVar3 = *(int *)(iVar3 + 0xc)" identifier = (pointer_expression "*(int *)(iVar3 + 0xc)" * (cast_expression "(int *)(iVar3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ) (compound_statement "{\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }" { (expression_statement "iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));" (assignment_expression "iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4))" identifier = (call_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4))" (parenthesized_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)" ( (pointer_expression "*(code *)PTR_sqlite3_stricmp_00190a14" * (cast_expression "(code *)PTR_sqlite3_stricmp_00190a14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,*(undefined4 *)(iVar3 + 4))" ( identifier , (pointer_expression "*(undefined4 *)(iVar3 + 4)" * (cast_expression "(undefined4 *)(iVar3 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }" { (expression_statement "piVar4 = *(int **)(param_1 + 0x18);" (assignment_expression "piVar4 = *(int **)(param_1 + 0x18)" identifier = (pointer_expression "*(int **)(param_1 + 0x18)" * (cast_expression "(int **)(param_1 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x00022dd8;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_00022e10:\n  if (local_1c == *(byte **)puVar11) {\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }" statement_identifier : (if_statement "if (local_1c == *(byte **)puVar11) {\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }" if (parenthesized_expression "(local_1c == *(byte **)puVar11)" ( (binary_expression "local_1c == *(byte **)puVar11" identifier == (pointer_expression "*(byte **)puVar11" * (cast_expression "(byte **)puVar11" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }" { (return_statement "return CONCAT44(local_20,*(byte **)puVar11);" return (call_expression "CONCAT44(local_20,*(byte **)puVar11)" identifier (argument_list "(local_20,*(byte **)puVar11)" ( identifier , (pointer_expression "*(byte **)puVar11" * (cast_expression "(byte **)puVar11" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) (expression_statement "pbVar7 = local_1c;" (assignment_expression "pbVar7 = local_1c" identifier = identifier) ;) (expression_statement "puVar11 = PTR___stack_chk_fail_00190df8;" (assignment_expression "puVar11 = PTR___stack_chk_fail_00190df8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" * (cast_expression "(code *)PTR___stack_chk_fail_00190df8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar8 = (uint)(char)*pbVar7;" (assignment_expression "uVar8 = (uint)(char)*pbVar7" identifier = (binary_expression "(uint)(char)*pbVar7" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (if_statement "if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }" if (parenthesized_expression "(uVar8 == 0x2d)" ( (binary_expression "uVar8 == 0x2d" identifier == number_literal) )) (compound_statement "{\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }" { (expression_statement "uVar8 = (uint)(char)pbVar7[1];" (assignment_expression "uVar8 = (uint)(char)pbVar7[1]" identifier = (cast_expression "(uint)(char)pbVar7[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)pbVar7[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar7[1]" identifier [ number_literal ])))) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }" else (compound_statement "{\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (if_statement "if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }" if (parenthesized_expression "(uVar8 == 0x2b)" ( (binary_expression "uVar8 == 0x2b" identifier == number_literal) )) (compound_statement "{\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }" { (expression_statement "uVar8 = (uint)(char)pbVar7[1];" (assignment_expression "uVar8 = (uint)(char)pbVar7[1]" identifier = (cast_expression "(uint)(char)pbVar7[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)pbVar7[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar7[1]" identifier [ number_literal ])))) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) })) }))) (if_statement "if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }" if (parenthesized_expression "(uVar8 == 0x30)" ( (binary_expression "uVar8 == 0x30" identifier == number_literal) )) (compound_statement "{\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }" { (expression_statement "pcVar12 = *(code **)(puVar11 + 0x16de34);" (assignment_expression "pcVar12 = *(code **)(puVar11 + 0x16de34)" identifier = (pointer_expression "*(code **)(puVar11 + 0x16de34)" * (cast_expression "(code **)(puVar11 + 0x16de34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x16de34)" ( (binary_expression "puVar11 + 0x16de34" identifier + number_literal) ))))) ;) (if_statement "if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }" if (parenthesized_expression "(pbVar7[1] == 0x78)" ( (binary_expression "pbVar7[1] == 0x78" (subscript_expression "pbVar7[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar7 + 2;" (assignment_expression "pbVar7 = pbVar7 + 2" identifier = (binary_expression "pbVar7 + 2" identifier + number_literal)) ;) (do_statement "do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );" do (compound_statement "{\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      }" { (expression_statement "iVar6 = (int)(char)*pbVar7;" (assignment_expression "iVar6 = (int)(char)*pbVar7" identifier = (cast_expression "(int)(char)*pbVar7" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar7" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar7" * identifier)))) ;) (expression_statement "uVar8 = (uint)*pbVar7;" (assignment_expression "uVar8 = (uint)*pbVar7" identifier = (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" if (parenthesized_expression "(uVar8 - 0x30 < 10)" ( (binary_expression "uVar8 - 0x30 < 10" (binary_expression "uVar8 - 0x30" identifier - number_literal) < number_literal) )) (compound_statement "{\n          uVar5 = iVar6 - 0x30;\n        }" { (expression_statement "uVar5 = iVar6 - 0x30;" (assignment_expression "uVar5 = iVar6 - 0x30" identifier = (binary_expression "iVar6 - 0x30" identifier - number_literal)) ;) }) (else_clause "else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" else (if_statement "if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" if (parenthesized_expression "(uVar8 - 0x61 < 6)" ( (binary_expression "uVar8 - 0x61 < 6" (binary_expression "uVar8 - 0x61" identifier - number_literal) < number_literal) )) (compound_statement "{\n          uVar5 = iVar6 - 0x57;\n        }" { (expression_statement "uVar5 = iVar6 - 0x57;" (assignment_expression "uVar5 = iVar6 - 0x57" identifier = (binary_expression "iVar6 - 0x57" identifier - number_literal)) ;) }) (else_clause "else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" else (compound_statement "{\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" { (expression_statement "uVar5 = iVar6 - 0x37;" (assignment_expression "uVar5 = iVar6 - 0x37" identifier = (binary_expression "iVar6 - 0x37" identifier - number_literal)) ;) (if_statement "if (5 < uVar8 - 0x41) goto LAB_00022f80;" if (parenthesized_expression "(5 < uVar8 - 0x41)" ( (binary_expression "5 < uVar8 - 0x41" number_literal < (binary_expression "uVar8 - 0x41" identifier - number_literal)) )) (goto_statement "goto LAB_00022f80;" goto statement_identifier ;)) }))))) (expression_statement "uVar8 = uVar13 >> 0x1c;" (assignment_expression "uVar8 = uVar13 >> 0x1c" identifier = (binary_expression "uVar13 >> 0x1c" identifier >> number_literal)) ;) (expression_statement "uVar13 = uVar5 + uVar13 * 0x10;" (assignment_expression "uVar13 = uVar5 + uVar13 * 0x10" identifier = (binary_expression "uVar5 + uVar13 * 0x10" identifier + (binary_expression "uVar13 * 0x10" identifier * number_literal))) ;) (expression_statement "iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);" (assignment_expression "iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4)" identifier = (binary_expression "(uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4)" (binary_expression "(uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f)" (call_expression "(uint)(uVar13 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar5)" ( (binary_expression "uVar13 < uVar5" identifier < identifier) ))) + (parenthesized_expression "((int)uVar5 >> 0x1f)" ( (binary_expression "(int)uVar5 >> 0x1f" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (parenthesized_expression "(uVar8 | iVar3 << 4)" ( (binary_expression "uVar8 | iVar3 << 4" identifier | (binary_expression "iVar3 << 4" identifier << number_literal)) )))) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) }) (else_clause "else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }" else (compound_statement "{\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }" { (expression_statement "pcVar12 = *(code **)(puVar11 + 0x16de34);" (assignment_expression "pcVar12 = *(code **)(puVar11 + 0x16de34)" identifier = (pointer_expression "*(code **)(puVar11 + 0x16de34)" * (cast_expression "(code **)(puVar11 + 0x16de34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x16de34)" ( (binary_expression "puVar11 + 0x16de34" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "piVar4 = (int *)(*pcVar12)();" (assignment_expression "piVar4 = (int *)(*pcVar12)()" identifier = (cast_expression "(int *)(*pcVar12)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))))) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }" { (expression_statement "iVar6 = (int)uVar8 >> 0x1f;" (assignment_expression "iVar6 = (int)uVar8 >> 0x1f" identifier = (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "uVar5 = uVar13 * 10 + uVar8;" (assignment_expression "uVar5 = uVar13 * 10 + uVar8" identifier = (binary_expression "uVar13 * 10 + uVar8" (binary_expression "uVar13 * 10" identifier * number_literal) + identifier)) ;) (if_statement "if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;" if (parenthesized_expression "((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0)" ( (binary_expression "(*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0" (parenthesized_expression "(*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8)" ( (binary_expression "*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8" (pointer_expression "*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2)" * (cast_expression "(ushort *)(*piVar4 + (uVar8 & 0xff) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar4 + (uVar8 & 0xff) * 2)" ( (binary_expression "*piVar4 + (uVar8 & 0xff) * 2" (pointer_expression "*piVar4" * identifier) + (binary_expression "(uVar8 & 0xff) * 2" (parenthesized_expression "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (uint)(char)*pbVar7;" (assignment_expression "uVar8 = (uint)(char)*pbVar7" identifier = (binary_expression "(uint)(char)*pbVar7" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (expression_statement "iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;" (assignment_expression "iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1" identifier = (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1" (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6" (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2)" (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10)" (call_expression "(uint)(uVar5 - 0x30 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 - 0x30 < uVar5)" ( (binary_expression "uVar5 - 0x30 < uVar5" (binary_expression "uVar5 - 0x30" identifier - number_literal) < identifier) ))) + (call_expression "(uint)(uVar5 < uVar13 * 10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < uVar13 * 10)" ( (binary_expression "uVar5 < uVar13 * 10" identifier < (binary_expression "uVar13 * 10" identifier * number_literal)) )))) + (parenthesized_expression "(uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2)" ( (binary_expression "uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2" (binary_expression "uVar13 * 5 >> 0x1f" (binary_expression "uVar13 * 5" identifier * number_literal) >> number_literal) | (binary_expression "((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2" (parenthesized_expression "((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3)" ( (binary_expression "(uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3" (binary_expression "(uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2)" (call_expression "(uint)(uVar13 * 5 < uVar13 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 * 5 < uVar13 * 4)" ( (binary_expression "uVar13 * 5 < uVar13 * 4" (binary_expression "uVar13 * 5" identifier * number_literal) < (binary_expression "uVar13 * 4" identifier * number_literal)) ))) + (parenthesized_expression "(uVar13 >> 0x1e | iVar3 << 2)" ( (binary_expression "uVar13 >> 0x1e | iVar3 << 2" (binary_expression "uVar13 >> 0x1e" identifier >> number_literal) | (binary_expression "iVar3 << 2" identifier << number_literal)) ))) + identifier) )) * number_literal)) ))) + identifier) + number_literal)) ;) (expression_statement "uVar13 = uVar5 - 0x30;" (assignment_expression "uVar13 = uVar5 - 0x30" identifier = (binary_expression "uVar5 - 0x30" identifier - number_literal)) ;) })) (labeled_statement "LAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);" statement_identifier : (expression_statement "iVar10 = *(int *)(puVar11 + 0x16dabc);" (assignment_expression "iVar10 = *(int *)(puVar11 + 0x16dabc)" identifier = (pointer_expression "*(int *)(puVar11 + 0x16dabc)" * (cast_expression "(int *)(puVar11 + 0x16dabc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x16dabc)" ( (binary_expression "puVar11 + 0x16dabc" identifier + number_literal) ))))) ;)) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;" (assignment_expression "iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c" identifier = (binary_expression "*(int *)(puVar11 + 0x16dacc) + 0x116c" (pointer_expression "*(int *)(puVar11 + 0x16dacc)" * (cast_expression "(int *)(puVar11 + 0x16dacc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x16dacc)" ( (binary_expression "puVar11 + 0x16dacc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "piVar4 = (int *)(iVar10 + -0x2838);" (assignment_expression "piVar4 = (int *)(iVar10 + -0x2838)" identifier = (cast_expression "(int *)(iVar10 + -0x2838)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0x2838)" ( (binary_expression "iVar10 + -0x2838" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }" { (expression_statement "piVar4 = piVar4 + 2;" (assignment_expression "piVar4 = piVar4 + 2" identifier = (binary_expression "piVar4 + 2" identifier + number_literal)) ;) (expression_statement "iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);" (assignment_expression "iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7)" identifier = (call_expression "(**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7)" (parenthesized_expression "(**(code **)(puVar11 + 0x16db88))" ( (pointer_expression "**(code **)(puVar11 + 0x16db88)" * (pointer_expression "*(code **)(puVar11 + 0x16db88)" * (cast_expression "(code **)(puVar11 + 0x16db88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x16db88)" ( (binary_expression "puVar11 + 0x16db88" identifier + number_literal) ))))) )) (argument_list "(iVar6,pbVar7)" ( identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (if_statement "if (iVar9 == 9) goto LAB_00022fc8;" if (parenthesized_expression "(iVar9 == 9)" ( (binary_expression "iVar9 == 9" identifier == number_literal) )) (goto_statement "goto LAB_00022fc8;" goto statement_identifier ;)) (expression_statement "iVar6 = *piVar4;" (assignment_expression "iVar6 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) })) (expression_statement "uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];" (assignment_expression "uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1]" identifier = (subscript_expression "((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1]" (parenthesized_expression "((int *)(iVar10 + -0x2838))" ( (cast_expression "(int *)(iVar10 + -0x2838)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0x2838)" ( (binary_expression "iVar10 + -0x2838" identifier + number_literal) ))) )) [ (binary_expression "iVar9 * 2 + 1" (binary_expression "iVar9 * 2" identifier * number_literal) + number_literal) ])) ;) (expression_statement "iVar6 = ((int)uVar8 >> 0x1f) * uVar13;" (assignment_expression "iVar6 = ((int)uVar8 >> 0x1f) * uVar13" identifier = (binary_expression "((int)uVar8 >> 0x1f) * uVar13" (parenthesized_expression "((int)uVar8 >> 0x1f)" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * identifier)) ;) (expression_statement "uVar1 = (ulonglong)uVar13;" (assignment_expression "uVar1 = (ulonglong)uVar13" identifier = (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ;) (expression_statement "uVar13 = (uint)(uVar1 * uVar8);" (assignment_expression "uVar13 = (uint)(uVar1 * uVar8)" identifier = (call_expression "(uint)(uVar1 * uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 * uVar8)" ( (binary_expression "uVar1 * uVar8" identifier * identifier) )))) ;) (expression_statement "iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);" (assignment_expression "iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20)" identifier = (binary_expression "iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20)" (binary_expression "iVar6 + uVar8 * iVar3" identifier + (binary_expression "uVar8 * iVar3" identifier * identifier)) + (cast_expression "(int)(uVar1 * uVar8 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar1 * uVar8 >> 0x20)" ( (binary_expression "uVar1 * uVar8 >> 0x20" (binary_expression "uVar1 * uVar8" identifier * identifier) >> number_literal) ))))) ;) (labeled_statement "LAB_00022fc8:\n  if (bVar2) {\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }" statement_identifier : (if_statement "if (bVar2) {\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }" { (expression_statement "uVar13 = -uVar13;" (assignment_expression "uVar13 = -uVar13" identifier = (unary_expression "-uVar13" - identifier)) ;) (expression_statement "iVar3 = -(uint)(uVar13 != 0) - iVar3;" (assignment_expression "iVar3 = -(uint)(uVar13 != 0) - iVar3" identifier = (binary_expression "-(uint)(uVar13 != 0) - iVar3" (unary_expression "-(uint)(uVar13 != 0)" - (call_expression "(uint)(uVar13 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )))) - identifier)) ;) }))) (return_statement "return CONCAT44(iVar3,uVar13);" return (call_expression "CONCAT44(iVar3,uVar13)" identifier (argument_list "(iVar3,uVar13)" ( identifier , identifier ))) ;) (labeled_statement "joined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;" statement_identifier : (if_statement "if (piVar4 == (int *)0x0) goto LAB_00022e4c;" if (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00022e4c;" goto statement_identifier ;))) (if_statement "if ((*piVar4 == iVar3) && (piVar4[1] == param_2)) goto LAB_00022e10;" if (parenthesized_expression "((*piVar4 == iVar3) && (piVar4[1] == param_2))" ( (binary_expression "(*piVar4 == iVar3) && (piVar4[1] == param_2)" (parenthesized_expression "(*piVar4 == iVar3)" ( (binary_expression "*piVar4 == iVar3" (pointer_expression "*piVar4" * identifier) == identifier) )) && (parenthesized_expression "(piVar4[1] == param_2)" ( (binary_expression "piVar4[1] == param_2" (subscript_expression "piVar4[1]" identifier [ number_literal ]) == identifier) ))) )) (goto_statement "goto LAB_00022e10;" goto statement_identifier ;)) (expression_statement "piVar4 = (int *)piVar4[2];" (assignment_expression "piVar4 = (int *)piVar4[2]" identifier = (cast_expression "(int *)piVar4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[2]" identifier [ number_literal ]))) ;) (goto_statement "goto joined_r0x00022dd8;" goto statement_identifier ;) (labeled_statement "LAB_00022e4c:\n  piVar4 = (int *)FUN_00020368(&local_20,0xc);" statement_identifier : (expression_statement "piVar4 = (int *)FUN_00020368(&local_20,0xc);" (assignment_expression "piVar4 = (int *)FUN_00020368(&local_20,0xc)" identifier = (cast_expression "(int *)FUN_00020368(&local_20,0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00020368(&local_20,0xc)" identifier (argument_list "(&local_20,0xc)" ( (pointer_expression "&local_20" & identifier) , number_literal ))))) ;)) (if_statement "if (local_20 == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = param_2;\n    piVar4[2] = *(int *)(param_1 + 0x18);\n    *(int **)(param_1 + 0x18) = piVar4;\n  }" if (parenthesized_expression "(local_20 == 0)" ( (binary_expression "local_20 == 0" identifier == number_literal) )) (compound_statement "{\n    *piVar4 = iVar3;\n    piVar4[1] = param_2;\n    piVar4[2] = *(int *)(param_1 + 0x18);\n    *(int **)(param_1 + 0x18) = piVar4;\n  }" { (expression_statement "*piVar4 = iVar3;" (assignment_expression "*piVar4 = iVar3" (pointer_expression "*piVar4" * identifier) = identifier) ;) (expression_statement "piVar4[1] = param_2;" (assignment_expression "piVar4[1] = param_2" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[2] = *(int *)(param_1 + 0x18);" (assignment_expression "piVar4[2] = *(int *)(param_1 + 0x18)" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(param_1 + 0x18) = piVar4;" (assignment_expression "*(int **)(param_1 + 0x18) = piVar4" (pointer_expression "*(int **)(param_1 + 0x18)" * (cast_expression "(int **)(param_1 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) })) (goto_statement "goto LAB_00022e10;" goto statement_identifier ;) })))
(translation_unit "int idxAuthCallback(void *pCtx,int eOp,char *z3,char *z4,char *zDb,char *zTrigger)\n\n{\n  ulonglong uVar1;\n  bool bVar2;\n  int iVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  uint uVar13;\n  int rc;\n  byte *pbStack_1c;\n  \n  puVar11 = PTR___stack_chk_guard_00190e24;\n  rc = 0;\n  pbStack_1c = *(byte **)PTR___stack_chk_guard_00190e24;\n  if ((((uint)eOp < 0x18) && ((int)((0x840200U >> (eOp & 0x1fU)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(zDb,PTR_LAB_00190958 + 0x1164), iVar3 == 0)) {\n    for (iVar3 = *(int *)((int)pCtx + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(z3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)((int)pCtx + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }\nLAB_00022e10:\n  if (pbStack_1c == *(byte **)puVar11) {\n    return rc;\n  }\n  pbVar7 = pbStack_1c;\n  puVar11 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar8 = (uint)(char)*pbVar7;\n  if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }\n  if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }\n  iVar3 = 0;\n  piVar4 = (int *)(*pcVar12)();\n  uVar13 = 0;\n  while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }\nLAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);\n  iVar9 = 0;\n  iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;\n  piVar4 = (int *)(iVar10 + -0x2838);\n  while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }\n  uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];\n  iVar6 = ((int)uVar8 >> 0x1f) * uVar13;\n  uVar1 = (ulonglong)uVar13;\n  uVar13 = (uint)(uVar1 * uVar8);\n  iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);\nLAB_00022fc8:\n  if (bVar2) {\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }\n  return iVar3;\njoined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;\n  if ((*piVar4 == iVar3) && (piVar4[1] == eOp)) goto LAB_00022e10;\n  piVar4 = (int *)piVar4[2];\n  goto joined_r0x00022dd8;\nLAB_00022e4c:\n  piVar4 = (int *)idxMalloc(&rc,0xc);\n  if (rc == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = eOp;\n    piVar4[2] = *(int *)((int)pCtx + 0x18);\n    *(int **)((int)pCtx + 0x18) = piVar4;\n  }\n  goto LAB_00022e10;\n}\n\n" (function_definition "int idxAuthCallback(void *pCtx,int eOp,char *z3,char *z4,char *zDb,char *zTrigger)\n\n{\n  ulonglong uVar1;\n  bool bVar2;\n  int iVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  uint uVar13;\n  int rc;\n  byte *pbStack_1c;\n  \n  puVar11 = PTR___stack_chk_guard_00190e24;\n  rc = 0;\n  pbStack_1c = *(byte **)PTR___stack_chk_guard_00190e24;\n  if ((((uint)eOp < 0x18) && ((int)((0x840200U >> (eOp & 0x1fU)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(zDb,PTR_LAB_00190958 + 0x1164), iVar3 == 0)) {\n    for (iVar3 = *(int *)((int)pCtx + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(z3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)((int)pCtx + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }\nLAB_00022e10:\n  if (pbStack_1c == *(byte **)puVar11) {\n    return rc;\n  }\n  pbVar7 = pbStack_1c;\n  puVar11 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar8 = (uint)(char)*pbVar7;\n  if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }\n  if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }\n  iVar3 = 0;\n  piVar4 = (int *)(*pcVar12)();\n  uVar13 = 0;\n  while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }\nLAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);\n  iVar9 = 0;\n  iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;\n  piVar4 = (int *)(iVar10 + -0x2838);\n  while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }\n  uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];\n  iVar6 = ((int)uVar8 >> 0x1f) * uVar13;\n  uVar1 = (ulonglong)uVar13;\n  uVar13 = (uint)(uVar1 * uVar8);\n  iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);\nLAB_00022fc8:\n  if (bVar2) {\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }\n  return iVar3;\njoined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;\n  if ((*piVar4 == iVar3) && (piVar4[1] == eOp)) goto LAB_00022e10;\n  piVar4 = (int *)piVar4[2];\n  goto joined_r0x00022dd8;\nLAB_00022e4c:\n  piVar4 = (int *)idxMalloc(&rc,0xc);\n  if (rc == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = eOp;\n    piVar4[2] = *(int *)((int)pCtx + 0x18);\n    *(int **)((int)pCtx + 0x18) = piVar4;\n  }\n  goto LAB_00022e10;\n}" primitive_type (function_declarator "idxAuthCallback(void *pCtx,int eOp,char *z3,char *z4,char *zDb,char *zTrigger)" identifier (parameter_list "(void *pCtx,int eOp,char *z3,char *z4,char *zDb,char *zTrigger)" ( (parameter_declaration "void *pCtx" primitive_type (pointer_declarator "*pCtx" * identifier)) , (parameter_declaration "int eOp" primitive_type identifier) , (parameter_declaration "char *z3" primitive_type (pointer_declarator "*z3" * identifier)) , (parameter_declaration "char *z4" primitive_type (pointer_declarator "*z4" * identifier)) , (parameter_declaration "char *zDb" primitive_type (pointer_declarator "*zDb" * identifier)) , (parameter_declaration "char *zTrigger" primitive_type (pointer_declarator "*zTrigger" * identifier)) ))) (compound_statement "{\n  ulonglong uVar1;\n  bool bVar2;\n  int iVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  uint uVar13;\n  int rc;\n  byte *pbStack_1c;\n  \n  puVar11 = PTR___stack_chk_guard_00190e24;\n  rc = 0;\n  pbStack_1c = *(byte **)PTR___stack_chk_guard_00190e24;\n  if ((((uint)eOp < 0x18) && ((int)((0x840200U >> (eOp & 0x1fU)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(zDb,PTR_LAB_00190958 + 0x1164), iVar3 == 0)) {\n    for (iVar3 = *(int *)((int)pCtx + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(z3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)((int)pCtx + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }\nLAB_00022e10:\n  if (pbStack_1c == *(byte **)puVar11) {\n    return rc;\n  }\n  pbVar7 = pbStack_1c;\n  puVar11 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar8 = (uint)(char)*pbVar7;\n  if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }\n  if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }\n  iVar3 = 0;\n  piVar4 = (int *)(*pcVar12)();\n  uVar13 = 0;\n  while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }\nLAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);\n  iVar9 = 0;\n  iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;\n  piVar4 = (int *)(iVar10 + -0x2838);\n  while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }\n  uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];\n  iVar6 = ((int)uVar8 >> 0x1f) * uVar13;\n  uVar1 = (ulonglong)uVar13;\n  uVar13 = (uint)(uVar1 * uVar8);\n  iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);\nLAB_00022fc8:\n  if (bVar2) {\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }\n  return iVar3;\njoined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;\n  if ((*piVar4 == iVar3) && (piVar4[1] == eOp)) goto LAB_00022e10;\n  piVar4 = (int *)piVar4[2];\n  goto joined_r0x00022dd8;\nLAB_00022e4c:\n  piVar4 = (int *)idxMalloc(&rc,0xc);\n  if (rc == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = eOp;\n    piVar4[2] = *(int *)((int)pCtx + 0x18);\n    *(int **)((int)pCtx + 0x18) = piVar4;\n  }\n  goto LAB_00022e10;\n}" { (declaration "ulonglong uVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int rc;" primitive_type identifier ;) (declaration "byte *pbStack_1c;" type_identifier (pointer_declarator "*pbStack_1c" * identifier) ;) (expression_statement "puVar11 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar11 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "rc = 0;" (assignment_expression "rc = 0" identifier = number_literal) ;) (expression_statement "pbStack_1c = *(byte **)PTR___stack_chk_guard_00190e24;" (assignment_expression "pbStack_1c = *(byte **)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(byte **)PTR___stack_chk_guard_00190e24" * (cast_expression "(byte **)PTR___stack_chk_guard_00190e24" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((((uint)eOp < 0x18) && ((int)((0x840200U >> (eOp & 0x1fU)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(zDb,PTR_LAB_00190958 + 0x1164), iVar3 == 0)) {\n    for (iVar3 = *(int *)((int)pCtx + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(z3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)((int)pCtx + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }" if (parenthesized_expression "((((uint)eOp < 0x18) && ((int)((0x840200U >> (eOp & 0x1fU)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(zDb,PTR_LAB_00190958 + 0x1164), iVar3 == 0))" ( (binary_expression "(((uint)eOp < 0x18) && ((int)((0x840200U >> (eOp & 0x1fU)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(zDb,PTR_LAB_00190958 + 0x1164), iVar3 == 0)" (parenthesized_expression "(((uint)eOp < 0x18) && ((int)((0x840200U >> (eOp & 0x1fU)) << 0x1f) < 0))" ( (binary_expression "((uint)eOp < 0x18) && ((int)((0x840200U >> (eOp & 0x1fU)) << 0x1f) < 0)" (parenthesized_expression "((uint)eOp < 0x18)" ( (binary_expression "(uint)eOp < 0x18" (cast_expression "(uint)eOp" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) )) && (parenthesized_expression "((int)((0x840200U >> (eOp & 0x1fU)) << 0x1f) < 0)" ( (binary_expression "(int)((0x840200U >> (eOp & 0x1fU)) << 0x1f) < 0" (cast_expression "(int)((0x840200U >> (eOp & 0x1fU)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0x840200U >> (eOp & 0x1fU)) << 0x1f)" ( (binary_expression "(0x840200U >> (eOp & 0x1fU)) << 0x1f" (parenthesized_expression "(0x840200U >> (eOp & 0x1fU))" ( (binary_expression "0x840200U >> (eOp & 0x1fU)" number_literal >> (parenthesized_expression "(eOp & 0x1fU)" ( (binary_expression "eOp & 0x1fU" identifier & number_literal) ))) )) << number_literal) ))) < number_literal) ))) )) && (parenthesized_expression "(iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(zDb,PTR_LAB_00190958 + 0x1164), iVar3 == 0)" ( (comma_expression "iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(zDb,PTR_LAB_00190958 + 0x1164), iVar3 == 0" (assignment_expression "iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(zDb,PTR_LAB_00190958 + 0x1164)" identifier = (call_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)(zDb,PTR_LAB_00190958 + 0x1164)" (parenthesized_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)" ( (pointer_expression "*(code *)PTR_sqlite3_stricmp_00190a14" * (cast_expression "(code *)PTR_sqlite3_stricmp_00190a14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(zDb,PTR_LAB_00190958 + 0x1164)" ( identifier , (binary_expression "PTR_LAB_00190958 + 0x1164" identifier + number_literal) )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    for (iVar3 = *(int *)((int)pCtx + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(z3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)((int)pCtx + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }" { (for_statement "for (iVar3 = *(int *)((int)pCtx + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(z3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)((int)pCtx + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }" for ( (assignment_expression "iVar3 = *(int *)((int)pCtx + 0x10)" identifier = (pointer_expression "*(int *)((int)pCtx + 0x10)" * (cast_expression "(int *)((int)pCtx + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pCtx + 0x10)" ( (binary_expression "(int)pCtx + 0x10" (cast_expression "(int)pCtx" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ; (binary_expression "iVar3 != 0" identifier != number_literal) ; (assignment_expression "iVar3 = *(int *)(iVar3 + 0xc)" identifier = (pointer_expression "*(int *)(iVar3 + 0xc)" * (cast_expression "(int *)(iVar3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ) (compound_statement "{\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(z3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)((int)pCtx + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }" { (expression_statement "iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(z3,*(undefined4 *)(iVar3 + 4));" (assignment_expression "iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(z3,*(undefined4 *)(iVar3 + 4))" identifier = (call_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)(z3,*(undefined4 *)(iVar3 + 4))" (parenthesized_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)" ( (pointer_expression "*(code *)PTR_sqlite3_stricmp_00190a14" * (cast_expression "(code *)PTR_sqlite3_stricmp_00190a14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(z3,*(undefined4 *)(iVar3 + 4))" ( identifier , (pointer_expression "*(undefined4 *)(iVar3 + 4)" * (cast_expression "(undefined4 *)(iVar3 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar6 == 0) {\n        piVar4 = *(int **)((int)pCtx + 0x18);\n        goto joined_r0x00022dd8;\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        piVar4 = *(int **)((int)pCtx + 0x18);\n        goto joined_r0x00022dd8;\n      }" { (expression_statement "piVar4 = *(int **)((int)pCtx + 0x18);" (assignment_expression "piVar4 = *(int **)((int)pCtx + 0x18)" identifier = (pointer_expression "*(int **)((int)pCtx + 0x18)" * (cast_expression "(int **)((int)pCtx + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pCtx + 0x18)" ( (binary_expression "(int)pCtx + 0x18" (cast_expression "(int)pCtx" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (goto_statement "goto joined_r0x00022dd8;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_00022e10:\n  if (pbStack_1c == *(byte **)puVar11) {\n    return rc;\n  }" statement_identifier : (if_statement "if (pbStack_1c == *(byte **)puVar11) {\n    return rc;\n  }" if (parenthesized_expression "(pbStack_1c == *(byte **)puVar11)" ( (binary_expression "pbStack_1c == *(byte **)puVar11" identifier == (pointer_expression "*(byte **)puVar11" * (cast_expression "(byte **)puVar11" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return rc;\n  }" { (return_statement "return rc;" return identifier ;) }))) (expression_statement "pbVar7 = pbStack_1c;" (assignment_expression "pbVar7 = pbStack_1c" identifier = identifier) ;) (expression_statement "puVar11 = PTR___stack_chk_fail_00190df8;" (assignment_expression "puVar11 = PTR___stack_chk_fail_00190df8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" * (cast_expression "(code *)PTR___stack_chk_fail_00190df8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar8 = (uint)(char)*pbVar7;" (assignment_expression "uVar8 = (uint)(char)*pbVar7" identifier = (binary_expression "(uint)(char)*pbVar7" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (if_statement "if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }" if (parenthesized_expression "(uVar8 == 0x2d)" ( (binary_expression "uVar8 == 0x2d" identifier == number_literal) )) (compound_statement "{\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }" { (expression_statement "uVar8 = (uint)(char)pbVar7[1];" (assignment_expression "uVar8 = (uint)(char)pbVar7[1]" identifier = (cast_expression "(uint)(char)pbVar7[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)pbVar7[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar7[1]" identifier [ number_literal ])))) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }" else (compound_statement "{\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (if_statement "if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }" if (parenthesized_expression "(uVar8 == 0x2b)" ( (binary_expression "uVar8 == 0x2b" identifier == number_literal) )) (compound_statement "{\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }" { (expression_statement "uVar8 = (uint)(char)pbVar7[1];" (assignment_expression "uVar8 = (uint)(char)pbVar7[1]" identifier = (cast_expression "(uint)(char)pbVar7[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)pbVar7[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar7[1]" identifier [ number_literal ])))) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) })) }))) (if_statement "if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }" if (parenthesized_expression "(uVar8 == 0x30)" ( (binary_expression "uVar8 == 0x30" identifier == number_literal) )) (compound_statement "{\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }" { (expression_statement "pcVar12 = *(code **)(puVar11 + 0x16de34);" (assignment_expression "pcVar12 = *(code **)(puVar11 + 0x16de34)" identifier = (pointer_expression "*(code **)(puVar11 + 0x16de34)" * (cast_expression "(code **)(puVar11 + 0x16de34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x16de34)" ( (binary_expression "puVar11 + 0x16de34" identifier + number_literal) ))))) ;) (if_statement "if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }" if (parenthesized_expression "(pbVar7[1] == 0x78)" ( (binary_expression "pbVar7[1] == 0x78" (subscript_expression "pbVar7[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar7 + 2;" (assignment_expression "pbVar7 = pbVar7 + 2" identifier = (binary_expression "pbVar7 + 2" identifier + number_literal)) ;) (do_statement "do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );" do (compound_statement "{\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      }" { (expression_statement "iVar6 = (int)(char)*pbVar7;" (assignment_expression "iVar6 = (int)(char)*pbVar7" identifier = (cast_expression "(int)(char)*pbVar7" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar7" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar7" * identifier)))) ;) (expression_statement "uVar8 = (uint)*pbVar7;" (assignment_expression "uVar8 = (uint)*pbVar7" identifier = (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" if (parenthesized_expression "(uVar8 - 0x30 < 10)" ( (binary_expression "uVar8 - 0x30 < 10" (binary_expression "uVar8 - 0x30" identifier - number_literal) < number_literal) )) (compound_statement "{\n          uVar5 = iVar6 - 0x30;\n        }" { (expression_statement "uVar5 = iVar6 - 0x30;" (assignment_expression "uVar5 = iVar6 - 0x30" identifier = (binary_expression "iVar6 - 0x30" identifier - number_literal)) ;) }) (else_clause "else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" else (if_statement "if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" if (parenthesized_expression "(uVar8 - 0x61 < 6)" ( (binary_expression "uVar8 - 0x61 < 6" (binary_expression "uVar8 - 0x61" identifier - number_literal) < number_literal) )) (compound_statement "{\n          uVar5 = iVar6 - 0x57;\n        }" { (expression_statement "uVar5 = iVar6 - 0x57;" (assignment_expression "uVar5 = iVar6 - 0x57" identifier = (binary_expression "iVar6 - 0x57" identifier - number_literal)) ;) }) (else_clause "else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" else (compound_statement "{\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" { (expression_statement "uVar5 = iVar6 - 0x37;" (assignment_expression "uVar5 = iVar6 - 0x37" identifier = (binary_expression "iVar6 - 0x37" identifier - number_literal)) ;) (if_statement "if (5 < uVar8 - 0x41) goto LAB_00022f80;" if (parenthesized_expression "(5 < uVar8 - 0x41)" ( (binary_expression "5 < uVar8 - 0x41" number_literal < (binary_expression "uVar8 - 0x41" identifier - number_literal)) )) (goto_statement "goto LAB_00022f80;" goto statement_identifier ;)) }))))) (expression_statement "uVar8 = uVar13 >> 0x1c;" (assignment_expression "uVar8 = uVar13 >> 0x1c" identifier = (binary_expression "uVar13 >> 0x1c" identifier >> number_literal)) ;) (expression_statement "uVar13 = uVar5 + uVar13 * 0x10;" (assignment_expression "uVar13 = uVar5 + uVar13 * 0x10" identifier = (binary_expression "uVar5 + uVar13 * 0x10" identifier + (binary_expression "uVar13 * 0x10" identifier * number_literal))) ;) (expression_statement "iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);" (assignment_expression "iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4)" identifier = (binary_expression "(uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4)" (binary_expression "(uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f)" (call_expression "(uint)(uVar13 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar5)" ( (binary_expression "uVar13 < uVar5" identifier < identifier) ))) + (parenthesized_expression "((int)uVar5 >> 0x1f)" ( (binary_expression "(int)uVar5 >> 0x1f" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (parenthesized_expression "(uVar8 | iVar3 << 4)" ( (binary_expression "uVar8 | iVar3 << 4" identifier | (binary_expression "iVar3 << 4" identifier << number_literal)) )))) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) }) (else_clause "else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }" else (compound_statement "{\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }" { (expression_statement "pcVar12 = *(code **)(puVar11 + 0x16de34);" (assignment_expression "pcVar12 = *(code **)(puVar11 + 0x16de34)" identifier = (pointer_expression "*(code **)(puVar11 + 0x16de34)" * (cast_expression "(code **)(puVar11 + 0x16de34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x16de34)" ( (binary_expression "puVar11 + 0x16de34" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "piVar4 = (int *)(*pcVar12)();" (assignment_expression "piVar4 = (int *)(*pcVar12)()" identifier = (cast_expression "(int *)(*pcVar12)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))))) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }" { (expression_statement "iVar6 = (int)uVar8 >> 0x1f;" (assignment_expression "iVar6 = (int)uVar8 >> 0x1f" identifier = (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "uVar5 = uVar13 * 10 + uVar8;" (assignment_expression "uVar5 = uVar13 * 10 + uVar8" identifier = (binary_expression "uVar13 * 10 + uVar8" (binary_expression "uVar13 * 10" identifier * number_literal) + identifier)) ;) (if_statement "if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;" if (parenthesized_expression "((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0)" ( (binary_expression "(*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0" (parenthesized_expression "(*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8)" ( (binary_expression "*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8" (pointer_expression "*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2)" * (cast_expression "(ushort *)(*piVar4 + (uVar8 & 0xff) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar4 + (uVar8 & 0xff) * 2)" ( (binary_expression "*piVar4 + (uVar8 & 0xff) * 2" (pointer_expression "*piVar4" * identifier) + (binary_expression "(uVar8 & 0xff) * 2" (parenthesized_expression "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (uint)(char)*pbVar7;" (assignment_expression "uVar8 = (uint)(char)*pbVar7" identifier = (binary_expression "(uint)(char)*pbVar7" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (expression_statement "iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;" (assignment_expression "iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1" identifier = (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1" (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6" (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2)" (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10)" (call_expression "(uint)(uVar5 - 0x30 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 - 0x30 < uVar5)" ( (binary_expression "uVar5 - 0x30 < uVar5" (binary_expression "uVar5 - 0x30" identifier - number_literal) < identifier) ))) + (call_expression "(uint)(uVar5 < uVar13 * 10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < uVar13 * 10)" ( (binary_expression "uVar5 < uVar13 * 10" identifier < (binary_expression "uVar13 * 10" identifier * number_literal)) )))) + (parenthesized_expression "(uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2)" ( (binary_expression "uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2" (binary_expression "uVar13 * 5 >> 0x1f" (binary_expression "uVar13 * 5" identifier * number_literal) >> number_literal) | (binary_expression "((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2" (parenthesized_expression "((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3)" ( (binary_expression "(uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3" (binary_expression "(uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2)" (call_expression "(uint)(uVar13 * 5 < uVar13 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 * 5 < uVar13 * 4)" ( (binary_expression "uVar13 * 5 < uVar13 * 4" (binary_expression "uVar13 * 5" identifier * number_literal) < (binary_expression "uVar13 * 4" identifier * number_literal)) ))) + (parenthesized_expression "(uVar13 >> 0x1e | iVar3 << 2)" ( (binary_expression "uVar13 >> 0x1e | iVar3 << 2" (binary_expression "uVar13 >> 0x1e" identifier >> number_literal) | (binary_expression "iVar3 << 2" identifier << number_literal)) ))) + identifier) )) * number_literal)) ))) + identifier) + number_literal)) ;) (expression_statement "uVar13 = uVar5 - 0x30;" (assignment_expression "uVar13 = uVar5 - 0x30" identifier = (binary_expression "uVar5 - 0x30" identifier - number_literal)) ;) })) (labeled_statement "LAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);" statement_identifier : (expression_statement "iVar10 = *(int *)(puVar11 + 0x16dabc);" (assignment_expression "iVar10 = *(int *)(puVar11 + 0x16dabc)" identifier = (pointer_expression "*(int *)(puVar11 + 0x16dabc)" * (cast_expression "(int *)(puVar11 + 0x16dabc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x16dabc)" ( (binary_expression "puVar11 + 0x16dabc" identifier + number_literal) ))))) ;)) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;" (assignment_expression "iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c" identifier = (binary_expression "*(int *)(puVar11 + 0x16dacc) + 0x116c" (pointer_expression "*(int *)(puVar11 + 0x16dacc)" * (cast_expression "(int *)(puVar11 + 0x16dacc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x16dacc)" ( (binary_expression "puVar11 + 0x16dacc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "piVar4 = (int *)(iVar10 + -0x2838);" (assignment_expression "piVar4 = (int *)(iVar10 + -0x2838)" identifier = (cast_expression "(int *)(iVar10 + -0x2838)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0x2838)" ( (binary_expression "iVar10 + -0x2838" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }" { (expression_statement "piVar4 = piVar4 + 2;" (assignment_expression "piVar4 = piVar4 + 2" identifier = (binary_expression "piVar4 + 2" identifier + number_literal)) ;) (expression_statement "iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);" (assignment_expression "iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7)" identifier = (call_expression "(**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7)" (parenthesized_expression "(**(code **)(puVar11 + 0x16db88))" ( (pointer_expression "**(code **)(puVar11 + 0x16db88)" * (pointer_expression "*(code **)(puVar11 + 0x16db88)" * (cast_expression "(code **)(puVar11 + 0x16db88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x16db88)" ( (binary_expression "puVar11 + 0x16db88" identifier + number_literal) ))))) )) (argument_list "(iVar6,pbVar7)" ( identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (if_statement "if (iVar9 == 9) goto LAB_00022fc8;" if (parenthesized_expression "(iVar9 == 9)" ( (binary_expression "iVar9 == 9" identifier == number_literal) )) (goto_statement "goto LAB_00022fc8;" goto statement_identifier ;)) (expression_statement "iVar6 = *piVar4;" (assignment_expression "iVar6 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) })) (expression_statement "uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];" (assignment_expression "uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1]" identifier = (subscript_expression "((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1]" (parenthesized_expression "((int *)(iVar10 + -0x2838))" ( (cast_expression "(int *)(iVar10 + -0x2838)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0x2838)" ( (binary_expression "iVar10 + -0x2838" identifier + number_literal) ))) )) [ (binary_expression "iVar9 * 2 + 1" (binary_expression "iVar9 * 2" identifier * number_literal) + number_literal) ])) ;) (expression_statement "iVar6 = ((int)uVar8 >> 0x1f) * uVar13;" (assignment_expression "iVar6 = ((int)uVar8 >> 0x1f) * uVar13" identifier = (binary_expression "((int)uVar8 >> 0x1f) * uVar13" (parenthesized_expression "((int)uVar8 >> 0x1f)" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * identifier)) ;) (expression_statement "uVar1 = (ulonglong)uVar13;" (assignment_expression "uVar1 = (ulonglong)uVar13" identifier = (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ;) (expression_statement "uVar13 = (uint)(uVar1 * uVar8);" (assignment_expression "uVar13 = (uint)(uVar1 * uVar8)" identifier = (call_expression "(uint)(uVar1 * uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 * uVar8)" ( (binary_expression "uVar1 * uVar8" identifier * identifier) )))) ;) (expression_statement "iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);" (assignment_expression "iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20)" identifier = (binary_expression "iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20)" (binary_expression "iVar6 + uVar8 * iVar3" identifier + (binary_expression "uVar8 * iVar3" identifier * identifier)) + (cast_expression "(int)(uVar1 * uVar8 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar1 * uVar8 >> 0x20)" ( (binary_expression "uVar1 * uVar8 >> 0x20" (binary_expression "uVar1 * uVar8" identifier * identifier) >> number_literal) ))))) ;) (labeled_statement "LAB_00022fc8:\n  if (bVar2) {\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }" statement_identifier : (if_statement "if (bVar2) {\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }" { (expression_statement "iVar3 = -(uint)(uVar13 != 0) - iVar3;" (assignment_expression "iVar3 = -(uint)(uVar13 != 0) - iVar3" identifier = (binary_expression "-(uint)(uVar13 != 0) - iVar3" (unary_expression "-(uint)(uVar13 != 0)" - (call_expression "(uint)(uVar13 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )))) - identifier)) ;) }))) (return_statement "return iVar3;" return identifier ;) (labeled_statement "joined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;" statement_identifier : (if_statement "if (piVar4 == (int *)0x0) goto LAB_00022e4c;" if (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00022e4c;" goto statement_identifier ;))) (if_statement "if ((*piVar4 == iVar3) && (piVar4[1] == eOp)) goto LAB_00022e10;" if (parenthesized_expression "((*piVar4 == iVar3) && (piVar4[1] == eOp))" ( (binary_expression "(*piVar4 == iVar3) && (piVar4[1] == eOp)" (parenthesized_expression "(*piVar4 == iVar3)" ( (binary_expression "*piVar4 == iVar3" (pointer_expression "*piVar4" * identifier) == identifier) )) && (parenthesized_expression "(piVar4[1] == eOp)" ( (binary_expression "piVar4[1] == eOp" (subscript_expression "piVar4[1]" identifier [ number_literal ]) == identifier) ))) )) (goto_statement "goto LAB_00022e10;" goto statement_identifier ;)) (expression_statement "piVar4 = (int *)piVar4[2];" (assignment_expression "piVar4 = (int *)piVar4[2]" identifier = (cast_expression "(int *)piVar4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[2]" identifier [ number_literal ]))) ;) (goto_statement "goto joined_r0x00022dd8;" goto statement_identifier ;) (labeled_statement "LAB_00022e4c:\n  piVar4 = (int *)idxMalloc(&rc,0xc);" statement_identifier : (expression_statement "piVar4 = (int *)idxMalloc(&rc,0xc);" (assignment_expression "piVar4 = (int *)idxMalloc(&rc,0xc)" identifier = (cast_expression "(int *)idxMalloc(&rc,0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "idxMalloc(&rc,0xc)" identifier (argument_list "(&rc,0xc)" ( (pointer_expression "&rc" & identifier) , number_literal ))))) ;)) (if_statement "if (rc == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = eOp;\n    piVar4[2] = *(int *)((int)pCtx + 0x18);\n    *(int **)((int)pCtx + 0x18) = piVar4;\n  }" if (parenthesized_expression "(rc == 0)" ( (binary_expression "rc == 0" identifier == number_literal) )) (compound_statement "{\n    *piVar4 = iVar3;\n    piVar4[1] = eOp;\n    piVar4[2] = *(int *)((int)pCtx + 0x18);\n    *(int **)((int)pCtx + 0x18) = piVar4;\n  }" { (expression_statement "*piVar4 = iVar3;" (assignment_expression "*piVar4 = iVar3" (pointer_expression "*piVar4" * identifier) = identifier) ;) (expression_statement "piVar4[1] = eOp;" (assignment_expression "piVar4[1] = eOp" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[2] = *(int *)((int)pCtx + 0x18);" (assignment_expression "piVar4[2] = *(int *)((int)pCtx + 0x18)" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = (pointer_expression "*(int *)((int)pCtx + 0x18)" * (cast_expression "(int *)((int)pCtx + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pCtx + 0x18)" ( (binary_expression "(int)pCtx + 0x18" (cast_expression "(int)pCtx" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int **)((int)pCtx + 0x18) = piVar4;" (assignment_expression "*(int **)((int)pCtx + 0x18) = piVar4" (pointer_expression "*(int **)((int)pCtx + 0x18)" * (cast_expression "(int **)((int)pCtx + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pCtx + 0x18)" ( (binary_expression "(int)pCtx + 0x18" (cast_expression "(int)pCtx" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) })) (goto_statement "goto LAB_00022e10;" goto statement_identifier ;) })))
(translation_unit "undefined8\nFUN_00022d1c(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)\n\n{\n  ulonglong uVar1;\n  bool bVar2;\n  int iVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  uint uVar13;\n  int local_20;\n  byte *local_1c;\n  \n  puVar11 = PTR___stack_chk_guard_00190e24;\n  local_20 = 0;\n  local_1c = *(byte **)PTR___stack_chk_guard_00190e24;\n  if (((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )) {\n    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }\nLAB_00022e10:\n  if (local_1c == *(byte **)puVar11) {\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }\n  pbVar7 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar8 = (uint)(char)*pbVar7;\n  if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }\n  if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }\n  iVar3 = 0;\n  piVar4 = (int *)(*pcVar12)();\n  uVar13 = 0;\n  while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }\nLAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);\n  iVar9 = 0;\n  iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;\n  piVar4 = (int *)(iVar10 + -0x2838);\n  while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }\n  uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];\n  iVar6 = ((int)uVar8 >> 0x1f) * uVar13;\n  uVar1 = (ulonglong)uVar13;\n  uVar13 = (uint)(uVar1 * uVar8);\n  iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);\nLAB_00022fc8:\n  if (bVar2) {\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }\n  return CONCAT44(iVar3,uVar13);\njoined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;\n  if ((*piVar4 == iVar3) && (piVar4[1] == param_2)) goto LAB_00022e10;\n  piVar4 = (int *)piVar4[2];\n  goto joined_r0x00022dd8;\nLAB_00022e4c:\n  piVar4 = (int *)FUN_00020368(&local_20,0xc);\n  if (local_20 == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = param_2;\n    piVar4[2] = *(int *)(param_1 + 0x18);\n    *(int **)(param_1 + 0x18) = piVar4;\n  }\n  goto LAB_00022e10;\n}\n\n" (function_definition "undefined8\nFUN_00022d1c(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)\n\n{\n  ulonglong uVar1;\n  bool bVar2;\n  int iVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  uint uVar13;\n  int local_20;\n  byte *local_1c;\n  \n  puVar11 = PTR___stack_chk_guard_00190e24;\n  local_20 = 0;\n  local_1c = *(byte **)PTR___stack_chk_guard_00190e24;\n  if (((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )) {\n    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }\nLAB_00022e10:\n  if (local_1c == *(byte **)puVar11) {\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }\n  pbVar7 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar8 = (uint)(char)*pbVar7;\n  if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }\n  if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }\n  iVar3 = 0;\n  piVar4 = (int *)(*pcVar12)();\n  uVar13 = 0;\n  while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }\nLAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);\n  iVar9 = 0;\n  iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;\n  piVar4 = (int *)(iVar10 + -0x2838);\n  while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }\n  uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];\n  iVar6 = ((int)uVar8 >> 0x1f) * uVar13;\n  uVar1 = (ulonglong)uVar13;\n  uVar13 = (uint)(uVar1 * uVar8);\n  iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);\nLAB_00022fc8:\n  if (bVar2) {\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }\n  return CONCAT44(iVar3,uVar13);\njoined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;\n  if ((*piVar4 == iVar3) && (piVar4[1] == param_2)) goto LAB_00022e10;\n  piVar4 = (int *)piVar4[2];\n  goto joined_r0x00022dd8;\nLAB_00022e4c:\n  piVar4 = (int *)FUN_00020368(&local_20,0xc);\n  if (local_20 == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = param_2;\n    piVar4[2] = *(int *)(param_1 + 0x18);\n    *(int **)(param_1 + 0x18) = piVar4;\n  }\n  goto LAB_00022e10;\n}" type_identifier (function_declarator "FUN_00022d1c(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)" identifier (parameter_list "(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  ulonglong uVar1;\n  bool bVar2;\n  int iVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  uint uVar13;\n  int local_20;\n  byte *local_1c;\n  \n  puVar11 = PTR___stack_chk_guard_00190e24;\n  local_20 = 0;\n  local_1c = *(byte **)PTR___stack_chk_guard_00190e24;\n  if (((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )) {\n    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }\nLAB_00022e10:\n  if (local_1c == *(byte **)puVar11) {\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }\n  pbVar7 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar8 = (uint)(char)*pbVar7;\n  if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }\n  if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }\n  iVar3 = 0;\n  piVar4 = (int *)(*pcVar12)();\n  uVar13 = 0;\n  while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }\nLAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);\n  iVar9 = 0;\n  iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;\n  piVar4 = (int *)(iVar10 + -0x2838);\n  while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }\n  uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];\n  iVar6 = ((int)uVar8 >> 0x1f) * uVar13;\n  uVar1 = (ulonglong)uVar13;\n  uVar13 = (uint)(uVar1 * uVar8);\n  iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);\nLAB_00022fc8:\n  if (bVar2) {\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }\n  return CONCAT44(iVar3,uVar13);\njoined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;\n  if ((*piVar4 == iVar3) && (piVar4[1] == param_2)) goto LAB_00022e10;\n  piVar4 = (int *)piVar4[2];\n  goto joined_r0x00022dd8;\nLAB_00022e4c:\n  piVar4 = (int *)FUN_00020368(&local_20,0xc);\n  if (local_20 == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = param_2;\n    piVar4[2] = *(int *)(param_1 + 0x18);\n    *(int **)(param_1 + 0x18) = piVar4;\n  }\n  goto LAB_00022e10;\n}" { (declaration "ulonglong uVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "byte *local_1c;" type_identifier (pointer_declarator "*local_1c" * identifier) ;) (expression_statement "puVar11 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar11 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_1c = *(byte **)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_1c = *(byte **)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(byte **)PTR___stack_chk_guard_00190e24" * (cast_expression "(byte **)PTR___stack_chk_guard_00190e24" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )) {\n    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }" if (parenthesized_expression "(((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     ))" ( (binary_expression "((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )" (parenthesized_expression "((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0))" ( (binary_expression "(param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)" (parenthesized_expression "(param_2 < 0x18)" ( (binary_expression "param_2 < 0x18" identifier < number_literal) )) && (parenthesized_expression "((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)" ( (binary_expression "(int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0x840200U >> (param_2 & 0x1f)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0x840200U >> (param_2 & 0x1f)) << 0x1f)" ( (binary_expression "(0x840200U >> (param_2 & 0x1f)) << 0x1f" (parenthesized_expression "(0x840200U >> (param_2 & 0x1f))" ( (binary_expression "0x840200U >> (param_2 & 0x1f)" number_literal >> (parenthesized_expression "(param_2 & 0x1f)" ( (binary_expression "param_2 & 0x1f" identifier & number_literal) ))) )) << number_literal) ))) < number_literal) ))) )) && (parenthesized_expression "(iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )" ( (comma_expression "iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0" (assignment_expression "iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164)" identifier = (call_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164)" (parenthesized_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)" ( (pointer_expression "*(code *)PTR_sqlite3_stricmp_00190a14" * (cast_expression "(code *)PTR_sqlite3_stricmp_00190a14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_5,PTR_LAB_00190958 + 0x1164)" ( identifier , (binary_expression "PTR_LAB_00190958 + 0x1164" identifier + number_literal) )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }" { (for_statement "for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }" for ( (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ; (binary_expression "iVar3 != 0" identifier != number_literal) ; (assignment_expression "iVar3 = *(int *)(iVar3 + 0xc)" identifier = (pointer_expression "*(int *)(iVar3 + 0xc)" * (cast_expression "(int *)(iVar3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ) (compound_statement "{\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }" { (expression_statement "iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));" (assignment_expression "iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4))" identifier = (call_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4))" (parenthesized_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)" ( (pointer_expression "*(code *)PTR_sqlite3_stricmp_00190a14" * (cast_expression "(code *)PTR_sqlite3_stricmp_00190a14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,*(undefined4 *)(iVar3 + 4))" ( identifier , (pointer_expression "*(undefined4 *)(iVar3 + 4)" * (cast_expression "(undefined4 *)(iVar3 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }" { (expression_statement "piVar4 = *(int **)(param_1 + 0x18);" (assignment_expression "piVar4 = *(int **)(param_1 + 0x18)" identifier = (pointer_expression "*(int **)(param_1 + 0x18)" * (cast_expression "(int **)(param_1 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x00022dd8;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_00022e10:\n  if (local_1c == *(byte **)puVar11) {\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }" statement_identifier : (if_statement "if (local_1c == *(byte **)puVar11) {\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }" if (parenthesized_expression "(local_1c == *(byte **)puVar11)" ( (binary_expression "local_1c == *(byte **)puVar11" identifier == (pointer_expression "*(byte **)puVar11" * (cast_expression "(byte **)puVar11" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }" { (return_statement "return CONCAT44(local_20,*(byte **)puVar11);" return (call_expression "CONCAT44(local_20,*(byte **)puVar11)" identifier (argument_list "(local_20,*(byte **)puVar11)" ( identifier , (pointer_expression "*(byte **)puVar11" * (cast_expression "(byte **)puVar11" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) (expression_statement "pbVar7 = local_1c;" (assignment_expression "pbVar7 = local_1c" identifier = identifier) ;) (expression_statement "puVar11 = PTR___stack_chk_fail_00190df8;" (assignment_expression "puVar11 = PTR___stack_chk_fail_00190df8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" * (cast_expression "(code *)PTR___stack_chk_fail_00190df8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar8 = (uint)(char)*pbVar7;" (assignment_expression "uVar8 = (uint)(char)*pbVar7" identifier = (binary_expression "(uint)(char)*pbVar7" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (if_statement "if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }" if (parenthesized_expression "(uVar8 == 0x2d)" ( (binary_expression "uVar8 == 0x2d" identifier == number_literal) )) (compound_statement "{\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }" { (expression_statement "uVar8 = (uint)(char)pbVar7[1];" (assignment_expression "uVar8 = (uint)(char)pbVar7[1]" identifier = (cast_expression "(uint)(char)pbVar7[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)pbVar7[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar7[1]" identifier [ number_literal ])))) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }" else (compound_statement "{\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (if_statement "if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }" if (parenthesized_expression "(uVar8 == 0x2b)" ( (binary_expression "uVar8 == 0x2b" identifier == number_literal) )) (compound_statement "{\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }" { (expression_statement "uVar8 = (uint)(char)pbVar7[1];" (assignment_expression "uVar8 = (uint)(char)pbVar7[1]" identifier = (cast_expression "(uint)(char)pbVar7[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)pbVar7[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar7[1]" identifier [ number_literal ])))) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) })) }))) (if_statement "if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }" if (parenthesized_expression "(uVar8 == 0x30)" ( (binary_expression "uVar8 == 0x30" identifier == number_literal) )) (compound_statement "{\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }" { (expression_statement "pcVar12 = *(code **)(puVar11 + 0x16de34);" (assignment_expression "pcVar12 = *(code **)(puVar11 + 0x16de34)" identifier = (pointer_expression "*(code **)(puVar11 + 0x16de34)" * (cast_expression "(code **)(puVar11 + 0x16de34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x16de34)" ( (binary_expression "puVar11 + 0x16de34" identifier + number_literal) ))))) ;) (if_statement "if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }" if (parenthesized_expression "(pbVar7[1] == 0x78)" ( (binary_expression "pbVar7[1] == 0x78" (subscript_expression "pbVar7[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar7 + 2;" (assignment_expression "pbVar7 = pbVar7 + 2" identifier = (binary_expression "pbVar7 + 2" identifier + number_literal)) ;) (do_statement "do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );" do (compound_statement "{\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      }" { (expression_statement "iVar6 = (int)(char)*pbVar7;" (assignment_expression "iVar6 = (int)(char)*pbVar7" identifier = (cast_expression "(int)(char)*pbVar7" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar7" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar7" * identifier)))) ;) (expression_statement "uVar8 = (uint)*pbVar7;" (assignment_expression "uVar8 = (uint)*pbVar7" identifier = (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" if (parenthesized_expression "(uVar8 - 0x30 < 10)" ( (binary_expression "uVar8 - 0x30 < 10" (binary_expression "uVar8 - 0x30" identifier - number_literal) < number_literal) )) (compound_statement "{\n          uVar5 = iVar6 - 0x30;\n        }" { (expression_statement "uVar5 = iVar6 - 0x30;" (assignment_expression "uVar5 = iVar6 - 0x30" identifier = (binary_expression "iVar6 - 0x30" identifier - number_literal)) ;) }) (else_clause "else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" else (if_statement "if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" if (parenthesized_expression "(uVar8 - 0x61 < 6)" ( (binary_expression "uVar8 - 0x61 < 6" (binary_expression "uVar8 - 0x61" identifier - number_literal) < number_literal) )) (compound_statement "{\n          uVar5 = iVar6 - 0x57;\n        }" { (expression_statement "uVar5 = iVar6 - 0x57;" (assignment_expression "uVar5 = iVar6 - 0x57" identifier = (binary_expression "iVar6 - 0x57" identifier - number_literal)) ;) }) (else_clause "else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" else (compound_statement "{\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" { (expression_statement "uVar5 = iVar6 - 0x37;" (assignment_expression "uVar5 = iVar6 - 0x37" identifier = (binary_expression "iVar6 - 0x37" identifier - number_literal)) ;) (if_statement "if (5 < uVar8 - 0x41) goto LAB_00022f80;" if (parenthesized_expression "(5 < uVar8 - 0x41)" ( (binary_expression "5 < uVar8 - 0x41" number_literal < (binary_expression "uVar8 - 0x41" identifier - number_literal)) )) (goto_statement "goto LAB_00022f80;" goto statement_identifier ;)) }))))) (expression_statement "uVar8 = uVar13 >> 0x1c;" (assignment_expression "uVar8 = uVar13 >> 0x1c" identifier = (binary_expression "uVar13 >> 0x1c" identifier >> number_literal)) ;) (expression_statement "uVar13 = uVar5 + uVar13 * 0x10;" (assignment_expression "uVar13 = uVar5 + uVar13 * 0x10" identifier = (binary_expression "uVar5 + uVar13 * 0x10" identifier + (binary_expression "uVar13 * 0x10" identifier * number_literal))) ;) (expression_statement "iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);" (assignment_expression "iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4)" identifier = (binary_expression "(uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4)" (binary_expression "(uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f)" (call_expression "(uint)(uVar13 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar5)" ( (binary_expression "uVar13 < uVar5" identifier < identifier) ))) + (parenthesized_expression "((int)uVar5 >> 0x1f)" ( (binary_expression "(int)uVar5 >> 0x1f" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (parenthesized_expression "(uVar8 | iVar3 << 4)" ( (binary_expression "uVar8 | iVar3 << 4" identifier | (binary_expression "iVar3 << 4" identifier << number_literal)) )))) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) }) (else_clause "else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }" else (compound_statement "{\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }" { (expression_statement "pcVar12 = *(code **)(puVar11 + 0x16de34);" (assignment_expression "pcVar12 = *(code **)(puVar11 + 0x16de34)" identifier = (pointer_expression "*(code **)(puVar11 + 0x16de34)" * (cast_expression "(code **)(puVar11 + 0x16de34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x16de34)" ( (binary_expression "puVar11 + 0x16de34" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "piVar4 = (int *)(*pcVar12)();" (assignment_expression "piVar4 = (int *)(*pcVar12)()" identifier = (cast_expression "(int *)(*pcVar12)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))))) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }" { (expression_statement "iVar6 = (int)uVar8 >> 0x1f;" (assignment_expression "iVar6 = (int)uVar8 >> 0x1f" identifier = (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "uVar5 = uVar13 * 10 + uVar8;" (assignment_expression "uVar5 = uVar13 * 10 + uVar8" identifier = (binary_expression "uVar13 * 10 + uVar8" (binary_expression "uVar13 * 10" identifier * number_literal) + identifier)) ;) (if_statement "if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;" if (parenthesized_expression "((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0)" ( (binary_expression "(*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0" (parenthesized_expression "(*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8)" ( (binary_expression "*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8" (pointer_expression "*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2)" * (cast_expression "(ushort *)(*piVar4 + (uVar8 & 0xff) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar4 + (uVar8 & 0xff) * 2)" ( (binary_expression "*piVar4 + (uVar8 & 0xff) * 2" (pointer_expression "*piVar4" * identifier) + (binary_expression "(uVar8 & 0xff) * 2" (parenthesized_expression "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (uint)(char)*pbVar7;" (assignment_expression "uVar8 = (uint)(char)*pbVar7" identifier = (binary_expression "(uint)(char)*pbVar7" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (expression_statement "iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;" (assignment_expression "iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1" identifier = (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1" (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6" (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2)" (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10)" (call_expression "(uint)(uVar5 - 0x30 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 - 0x30 < uVar5)" ( (binary_expression "uVar5 - 0x30 < uVar5" (binary_expression "uVar5 - 0x30" identifier - number_literal) < identifier) ))) + (call_expression "(uint)(uVar5 < uVar13 * 10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < uVar13 * 10)" ( (binary_expression "uVar5 < uVar13 * 10" identifier < (binary_expression "uVar13 * 10" identifier * number_literal)) )))) + (parenthesized_expression "(uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2)" ( (binary_expression "uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2" (binary_expression "uVar13 * 5 >> 0x1f" (binary_expression "uVar13 * 5" identifier * number_literal) >> number_literal) | (binary_expression "((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2" (parenthesized_expression "((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3)" ( (binary_expression "(uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3" (binary_expression "(uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2)" (call_expression "(uint)(uVar13 * 5 < uVar13 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 * 5 < uVar13 * 4)" ( (binary_expression "uVar13 * 5 < uVar13 * 4" (binary_expression "uVar13 * 5" identifier * number_literal) < (binary_expression "uVar13 * 4" identifier * number_literal)) ))) + (parenthesized_expression "(uVar13 >> 0x1e | iVar3 << 2)" ( (binary_expression "uVar13 >> 0x1e | iVar3 << 2" (binary_expression "uVar13 >> 0x1e" identifier >> number_literal) | (binary_expression "iVar3 << 2" identifier << number_literal)) ))) + identifier) )) * number_literal)) ))) + identifier) + number_literal)) ;) (expression_statement "uVar13 = uVar5 - 0x30;" (assignment_expression "uVar13 = uVar5 - 0x30" identifier = (binary_expression "uVar5 - 0x30" identifier - number_literal)) ;) })) (labeled_statement "LAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);" statement_identifier : (expression_statement "iVar10 = *(int *)(puVar11 + 0x16dabc);" (assignment_expression "iVar10 = *(int *)(puVar11 + 0x16dabc)" identifier = (pointer_expression "*(int *)(puVar11 + 0x16dabc)" * (cast_expression "(int *)(puVar11 + 0x16dabc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x16dabc)" ( (binary_expression "puVar11 + 0x16dabc" identifier + number_literal) ))))) ;)) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;" (assignment_expression "iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c" identifier = (binary_expression "*(int *)(puVar11 + 0x16dacc) + 0x116c" (pointer_expression "*(int *)(puVar11 + 0x16dacc)" * (cast_expression "(int *)(puVar11 + 0x16dacc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x16dacc)" ( (binary_expression "puVar11 + 0x16dacc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "piVar4 = (int *)(iVar10 + -0x2838);" (assignment_expression "piVar4 = (int *)(iVar10 + -0x2838)" identifier = (cast_expression "(int *)(iVar10 + -0x2838)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0x2838)" ( (binary_expression "iVar10 + -0x2838" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }" { (expression_statement "piVar4 = piVar4 + 2;" (assignment_expression "piVar4 = piVar4 + 2" identifier = (binary_expression "piVar4 + 2" identifier + number_literal)) ;) (expression_statement "iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);" (assignment_expression "iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7)" identifier = (call_expression "(**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7)" (parenthesized_expression "(**(code **)(puVar11 + 0x16db88))" ( (pointer_expression "**(code **)(puVar11 + 0x16db88)" * (pointer_expression "*(code **)(puVar11 + 0x16db88)" * (cast_expression "(code **)(puVar11 + 0x16db88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x16db88)" ( (binary_expression "puVar11 + 0x16db88" identifier + number_literal) ))))) )) (argument_list "(iVar6,pbVar7)" ( identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (if_statement "if (iVar9 == 9) goto LAB_00022fc8;" if (parenthesized_expression "(iVar9 == 9)" ( (binary_expression "iVar9 == 9" identifier == number_literal) )) (goto_statement "goto LAB_00022fc8;" goto statement_identifier ;)) (expression_statement "iVar6 = *piVar4;" (assignment_expression "iVar6 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) })) (expression_statement "uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];" (assignment_expression "uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1]" identifier = (subscript_expression "((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1]" (parenthesized_expression "((int *)(iVar10 + -0x2838))" ( (cast_expression "(int *)(iVar10 + -0x2838)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0x2838)" ( (binary_expression "iVar10 + -0x2838" identifier + number_literal) ))) )) [ (binary_expression "iVar9 * 2 + 1" (binary_expression "iVar9 * 2" identifier * number_literal) + number_literal) ])) ;) (expression_statement "iVar6 = ((int)uVar8 >> 0x1f) * uVar13;" (assignment_expression "iVar6 = ((int)uVar8 >> 0x1f) * uVar13" identifier = (binary_expression "((int)uVar8 >> 0x1f) * uVar13" (parenthesized_expression "((int)uVar8 >> 0x1f)" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * identifier)) ;) (expression_statement "uVar1 = (ulonglong)uVar13;" (assignment_expression "uVar1 = (ulonglong)uVar13" identifier = (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ;) (expression_statement "uVar13 = (uint)(uVar1 * uVar8);" (assignment_expression "uVar13 = (uint)(uVar1 * uVar8)" identifier = (call_expression "(uint)(uVar1 * uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 * uVar8)" ( (binary_expression "uVar1 * uVar8" identifier * identifier) )))) ;) (expression_statement "iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);" (assignment_expression "iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20)" identifier = (binary_expression "iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20)" (binary_expression "iVar6 + uVar8 * iVar3" identifier + (binary_expression "uVar8 * iVar3" identifier * identifier)) + (cast_expression "(int)(uVar1 * uVar8 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar1 * uVar8 >> 0x20)" ( (binary_expression "uVar1 * uVar8 >> 0x20" (binary_expression "uVar1 * uVar8" identifier * identifier) >> number_literal) ))))) ;) (labeled_statement "LAB_00022fc8:\n  if (bVar2) {\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }" statement_identifier : (if_statement "if (bVar2) {\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }" { (expression_statement "uVar13 = -uVar13;" (assignment_expression "uVar13 = -uVar13" identifier = (unary_expression "-uVar13" - identifier)) ;) (expression_statement "iVar3 = -(uint)(uVar13 != 0) - iVar3;" (assignment_expression "iVar3 = -(uint)(uVar13 != 0) - iVar3" identifier = (binary_expression "-(uint)(uVar13 != 0) - iVar3" (unary_expression "-(uint)(uVar13 != 0)" - (call_expression "(uint)(uVar13 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )))) - identifier)) ;) }))) (return_statement "return CONCAT44(iVar3,uVar13);" return (call_expression "CONCAT44(iVar3,uVar13)" identifier (argument_list "(iVar3,uVar13)" ( identifier , identifier ))) ;) (labeled_statement "joined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;" statement_identifier : (if_statement "if (piVar4 == (int *)0x0) goto LAB_00022e4c;" if (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00022e4c;" goto statement_identifier ;))) (if_statement "if ((*piVar4 == iVar3) && (piVar4[1] == param_2)) goto LAB_00022e10;" if (parenthesized_expression "((*piVar4 == iVar3) && (piVar4[1] == param_2))" ( (binary_expression "(*piVar4 == iVar3) && (piVar4[1] == param_2)" (parenthesized_expression "(*piVar4 == iVar3)" ( (binary_expression "*piVar4 == iVar3" (pointer_expression "*piVar4" * identifier) == identifier) )) && (parenthesized_expression "(piVar4[1] == param_2)" ( (binary_expression "piVar4[1] == param_2" (subscript_expression "piVar4[1]" identifier [ number_literal ]) == identifier) ))) )) (goto_statement "goto LAB_00022e10;" goto statement_identifier ;)) (expression_statement "piVar4 = (int *)piVar4[2];" (assignment_expression "piVar4 = (int *)piVar4[2]" identifier = (cast_expression "(int *)piVar4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[2]" identifier [ number_literal ]))) ;) (goto_statement "goto joined_r0x00022dd8;" goto statement_identifier ;) (labeled_statement "LAB_00022e4c:\n  piVar4 = (int *)FUN_00020368(&local_20,0xc);" statement_identifier : (expression_statement "piVar4 = (int *)FUN_00020368(&local_20,0xc);" (assignment_expression "piVar4 = (int *)FUN_00020368(&local_20,0xc)" identifier = (cast_expression "(int *)FUN_00020368(&local_20,0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00020368(&local_20,0xc)" identifier (argument_list "(&local_20,0xc)" ( (pointer_expression "&local_20" & identifier) , number_literal ))))) ;)) (if_statement "if (local_20 == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = param_2;\n    piVar4[2] = *(int *)(param_1 + 0x18);\n    *(int **)(param_1 + 0x18) = piVar4;\n  }" if (parenthesized_expression "(local_20 == 0)" ( (binary_expression "local_20 == 0" identifier == number_literal) )) (compound_statement "{\n    *piVar4 = iVar3;\n    piVar4[1] = param_2;\n    piVar4[2] = *(int *)(param_1 + 0x18);\n    *(int **)(param_1 + 0x18) = piVar4;\n  }" { (expression_statement "*piVar4 = iVar3;" (assignment_expression "*piVar4 = iVar3" (pointer_expression "*piVar4" * identifier) = identifier) ;) (expression_statement "piVar4[1] = param_2;" (assignment_expression "piVar4[1] = param_2" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[2] = *(int *)(param_1 + 0x18);" (assignment_expression "piVar4[2] = *(int *)(param_1 + 0x18)" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(param_1 + 0x18) = piVar4;" (assignment_expression "*(int **)(param_1 + 0x18) = piVar4" (pointer_expression "*(int **)(param_1 + 0x18)" * (cast_expression "(int **)(param_1 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) })) (goto_statement "goto LAB_00022e10;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) << LIT) ))) < LIT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) })) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (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 = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (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 (parenthesized_expression ( IDENT )) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (goto_statement goto statement_identifier ;)) }))))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + (parenthesized_expression ( (binary_expression IDENT | (binary_expression IDENT << LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) )))) & LIT) )) == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT - LIT) < IDENT) ))) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (binary_expression IDENT * LIT)) )))) + (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT * LIT) < (binary_expression IDENT * LIT)) ))) + (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT << LIT)) ))) + IDENT) )) * LIT)) ))) + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) )) [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression IDENT * IDENT)) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) >> LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) - IDENT)) ;) }))) (return_statement return (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == IDENT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (goto_statement goto statement_identifier ;) })))
(function_definition "undefined8\nFUN_00022d1c(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)\n\n{\n  ulonglong uVar1;\n  bool bVar2;\n  int iVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  uint uVar13;\n  int local_20;\n  byte *local_1c;\n  \n  puVar11 = PTR___stack_chk_guard_00190e24;\n  local_20 = 0;\n  local_1c = *(byte **)PTR___stack_chk_guard_00190e24;\n  if (((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )) {\n    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }\nLAB_00022e10:\n  if (local_1c == *(byte **)puVar11) {\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }\n  pbVar7 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar8 = (uint)(char)*pbVar7;\n  if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }\n  if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }\n  iVar3 = 0;\n  piVar4 = (int *)(*pcVar12)();\n  uVar13 = 0;\n  while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }\nLAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);\n  iVar9 = 0;\n  iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;\n  piVar4 = (int *)(iVar10 + -0x2838);\n  while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }\n  uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];\n  iVar6 = ((int)uVar8 >> 0x1f) * uVar13;\n  uVar1 = (ulonglong)uVar13;\n  uVar13 = (uint)(uVar1 * uVar8);\n  iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);\nLAB_00022fc8:\n  if (bVar2) {\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }\n  return CONCAT44(iVar3,uVar13);\njoined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;\n  if ((*piVar4 == iVar3) && (piVar4[1] == param_2)) goto LAB_00022e10;\n  piVar4 = (int *)piVar4[2];\n  goto joined_r0x00022dd8;\nLAB_00022e4c:\n  piVar4 = (int *)FUN_00020368(&local_20,0xc);\n  if (local_20 == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = param_2;\n    piVar4[2] = *(int *)(param_1 + 0x18);\n    *(int **)(param_1 + 0x18) = piVar4;\n  }\n  goto LAB_00022e10;\n}" (type_identifier "undefined8") (function_declarator "FUN_00022d1c(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)" (identifier "FUN_00022d1c") (parameter_list "(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) () ")"))) (compound_statement "{\n  ulonglong uVar1;\n  bool bVar2;\n  int iVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  uint uVar13;\n  int local_20;\n  byte *local_1c;\n  \n  puVar11 = PTR___stack_chk_guard_00190e24;\n  local_20 = 0;\n  local_1c = *(byte **)PTR___stack_chk_guard_00190e24;\n  if (((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )) {\n    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }\nLAB_00022e10:\n  if (local_1c == *(byte **)puVar11) {\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }\n  pbVar7 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar8 = (uint)(char)*pbVar7;\n  if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }\n  if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }\n  iVar3 = 0;\n  piVar4 = (int *)(*pcVar12)();\n  uVar13 = 0;\n  while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }\nLAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);\n  iVar9 = 0;\n  iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;\n  piVar4 = (int *)(iVar10 + -0x2838);\n  while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }\n  uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];\n  iVar6 = ((int)uVar8 >> 0x1f) * uVar13;\n  uVar1 = (ulonglong)uVar13;\n  uVar13 = (uint)(uVar1 * uVar8);\n  iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);\nLAB_00022fc8:\n  if (bVar2) {\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }\n  return CONCAT44(iVar3,uVar13);\njoined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;\n  if ((*piVar4 == iVar3) && (piVar4[1] == param_2)) goto LAB_00022e10;\n  piVar4 = (int *)piVar4[2];\n  goto joined_r0x00022dd8;\nLAB_00022e4c:\n  piVar4 = (int *)FUN_00020368(&local_20,0xc);\n  if (local_20 == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = param_2;\n    piVar4[2] = *(int *)(param_1 + 0x18);\n    *(int **)(param_1 + 0x18) = piVar4;\n  }\n  goto LAB_00022e10;\n}" ({ "{") (declaration "ulonglong uVar1;" (type_identifier "ulonglong") (identifier "uVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined *puVar11;" (type_identifier "undefined") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "code *pcVar12;" (type_identifier "code") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "byte *local_1c;" (type_identifier "byte") (pointer_declarator "*local_1c" (* "*") (identifier "local_1c")) (; ";")) (expression_statement "puVar11 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar11 = PTR___stack_chk_guard_00190e24" (identifier "puVar11") (= "=") (identifier "PTR___stack_chk_guard_00190e24")) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_1c = *(byte **)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_1c = *(byte **)PTR___stack_chk_guard_00190e24" (identifier "local_1c") (= "=") (pointer_expression "*(byte **)PTR___stack_chk_guard_00190e24" (* "*") (cast_expression "(byte **)PTR___stack_chk_guard_00190e24" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_00190e24")))) (; ";")) (if_statement "if (((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )) {\n    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     ))" (( "(") (binary_expression "((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&\n     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )" (parenthesized_expression "((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0))" (( "(") (binary_expression "(param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)" (parenthesized_expression "(param_2 < 0x18)" (( "(") (binary_expression "param_2 < 0x18" (identifier "param_2") (< "<") (number_literal "0x18")) () ")")) (&& "&&") (parenthesized_expression "((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)" (( "(") (binary_expression "(int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0x840200U >> (param_2 & 0x1f)) << 0x1f)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((0x840200U >> (param_2 & 0x1f)) << 0x1f)" (( "(") (binary_expression "(0x840200U >> (param_2 & 0x1f)) << 0x1f" (parenthesized_expression "(0x840200U >> (param_2 & 0x1f))" (( "(") (binary_expression "0x840200U >> (param_2 & 0x1f)" (number_literal "0x840200U") (>> ">>") (parenthesized_expression "(param_2 & 0x1f)" (( "(") (binary_expression "param_2 & 0x1f" (identifier "param_2") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (<< "<<") (number_literal "0x1f")) () ")"))) (< "<") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0\n     )" (( "(") (comma_expression "iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0" (assignment_expression "iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164)" (parenthesized_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)" (( "(") (pointer_expression "*(code *)PTR_sqlite3_stricmp_00190a14" (* "*") (cast_expression "(code *)PTR_sqlite3_stricmp_00190a14" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_sqlite3_stricmp_00190a14"))) () ")")) (argument_list "(param_5,PTR_LAB_00190958 + 0x1164)" (( "(") (identifier "param_5") (, ",") (binary_expression "PTR_LAB_00190958 + 0x1164" (identifier "PTR_LAB_00190958") (+ "+") (number_literal "0x1164")) () ")")))) (, ",") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }\n  }" ({ "{") (for_statement "for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }" (for "for") (( "(") (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar3 = *(int *)(iVar3 + 0xc)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar3 + 0xc)" (* "*") (cast_expression "(int *)(iVar3 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")"))))) () ")") (compound_statement "{\n      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));\n      if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }\n    }" ({ "{") (expression_statement "iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));" (assignment_expression "iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4))" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4))" (parenthesized_expression "(*(code *)PTR_sqlite3_stricmp_00190a14)" (( "(") (pointer_expression "*(code *)PTR_sqlite3_stricmp_00190a14" (* "*") (cast_expression "(code *)PTR_sqlite3_stricmp_00190a14" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_sqlite3_stricmp_00190a14"))) () ")")) (argument_list "(param_3,*(undefined4 *)(iVar3 + 4))" (( "(") (identifier "param_3") (, ",") (pointer_expression "*(undefined4 *)(iVar3 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 4)" (( "(") (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar6 == 0) {\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        piVar4 = *(int **)(param_1 + 0x18);\n        goto joined_r0x00022dd8;\n      }" ({ "{") (expression_statement "piVar4 = *(int **)(param_1 + 0x18);" (assignment_expression "piVar4 = *(int **)(param_1 + 0x18)" (identifier "piVar4") (= "=") (pointer_expression "*(int **)(param_1 + 0x18)" (* "*") (cast_expression "(int **)(param_1 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x00022dd8;" (goto "goto") (statement_identifier "joined_r0x00022dd8") (; ";")) (} "}"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00022e10:\n  if (local_1c == *(byte **)puVar11) {\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }" (statement_identifier "LAB_00022e10") (: ":") (if_statement "if (local_1c == *(byte **)puVar11) {\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }" (if "if") (parenthesized_expression "(local_1c == *(byte **)puVar11)" (( "(") (binary_expression "local_1c == *(byte **)puVar11" (identifier "local_1c") (== "==") (pointer_expression "*(byte **)puVar11" (* "*") (cast_expression "(byte **)puVar11" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar11")))) () ")")) (compound_statement "{\n    return CONCAT44(local_20,*(byte **)puVar11);\n  }" ({ "{") (return_statement "return CONCAT44(local_20,*(byte **)puVar11);" (return "return") (call_expression "CONCAT44(local_20,*(byte **)puVar11)" (identifier "CONCAT44") (argument_list "(local_20,*(byte **)puVar11)" (( "(") (identifier "local_20") (, ",") (pointer_expression "*(byte **)puVar11" (* "*") (cast_expression "(byte **)puVar11" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar11"))) () ")"))) (; ";")) (} "}")))) (expression_statement "pbVar7 = local_1c;" (assignment_expression "pbVar7 = local_1c" (identifier "pbVar7") (= "=") (identifier "local_1c")) (; ";")) (expression_statement "puVar11 = PTR___stack_chk_fail_00190df8;" (assignment_expression "puVar11 = PTR___stack_chk_fail_00190df8" (identifier "puVar11") (= "=") (identifier "PTR___stack_chk_fail_00190df8")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00190df8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00190df8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar8 = (uint)(char)*pbVar7;" (assignment_expression "uVar8 = (uint)(char)*pbVar7" (identifier "uVar8") (= "=") (binary_expression "(uint)(char)*pbVar7" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(char)" (( "(") (identifier "char") () ")"))) (* "*") (identifier "pbVar7"))) (; ";")) (if_statement "if (uVar8 == 0x2d) {\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }\n  else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }" (if "if") (parenthesized_expression "(uVar8 == 0x2d)" (( "(") (binary_expression "uVar8 == 0x2d" (identifier "uVar8") (== "==") (number_literal "0x2d")) () ")")) (compound_statement "{\n    uVar8 = (uint)(char)pbVar7[1];\n    bVar2 = true;\n    pbVar7 = pbVar7 + 1;\n  }" ({ "{") (expression_statement "uVar8 = (uint)(char)pbVar7[1];" (assignment_expression "uVar8 = (uint)(char)pbVar7[1]" (identifier "uVar8") (= "=") (cast_expression "(uint)(char)pbVar7[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(char)pbVar7[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar7[1]" (identifier "pbVar7") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }" (else "else") (compound_statement "{\n    bVar2 = false;\n    if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }\n  }" ({ "{") (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (if_statement "if (uVar8 == 0x2b) {\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }" (if "if") (parenthesized_expression "(uVar8 == 0x2b)" (( "(") (binary_expression "uVar8 == 0x2b" (identifier "uVar8") (== "==") (number_literal "0x2b")) () ")")) (compound_statement "{\n      uVar8 = (uint)(char)pbVar7[1];\n      pbVar7 = pbVar7 + 1;\n    }" ({ "{") (expression_statement "uVar8 = (uint)(char)pbVar7[1];" (assignment_expression "uVar8 = (uint)(char)pbVar7[1]" (identifier "uVar8") (= "=") (cast_expression "(uint)(char)pbVar7[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(char)pbVar7[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar7[1]" (identifier "pbVar7") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (uVar8 == 0x30) {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }\n  else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }" (if "if") (parenthesized_expression "(uVar8 == 0x30)" (( "(") (binary_expression "uVar8 == 0x30" (identifier "uVar8") (== "==") (number_literal "0x30")) () ")")) (compound_statement "{\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n    if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }\n  }" ({ "{") (expression_statement "pcVar12 = *(code **)(puVar11 + 0x16de34);" (assignment_expression "pcVar12 = *(code **)(puVar11 + 0x16de34)" (identifier "pcVar12") (= "=") (pointer_expression "*(code **)(puVar11 + 0x16de34)" (* "*") (cast_expression "(code **)(puVar11 + 0x16de34)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x16de34)" (( "(") (binary_expression "puVar11 + 0x16de34" (identifier "puVar11") (+ "+") (number_literal "0x16de34")) () ")"))))) (; ";")) (if_statement "if (pbVar7[1] == 0x78) {\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(pbVar7[1] == 0x78)" (( "(") (binary_expression "pbVar7[1] == 0x78" (subscript_expression "pbVar7[1]" (identifier "pbVar7") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0x78")) () ")")) (compound_statement "{\n      uVar13 = 0;\n      iVar3 = 0;\n      pbVar7 = pbVar7 + 2;\n      do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );\n    }" ({ "{") (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7 = pbVar7 + 2;" (assignment_expression "pbVar7 = pbVar7 + 2" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 2" (identifier "pbVar7") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      } while( true );" (do "do") (compound_statement "{\n        iVar6 = (int)(char)*pbVar7;\n        uVar8 = (uint)*pbVar7;\n        if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }\n        uVar8 = uVar13 >> 0x1c;\n        uVar13 = uVar5 + uVar13 * 0x10;\n        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);\n        pbVar7 = pbVar7 + 1;\n      }" ({ "{") (expression_statement "iVar6 = (int)(char)*pbVar7;" (assignment_expression "iVar6 = (int)(char)*pbVar7" (identifier "iVar6") (= "=") (cast_expression "(int)(char)*pbVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))))) (; ";")) (expression_statement "uVar8 = (uint)*pbVar7;" (assignment_expression "uVar8 = (uint)*pbVar7" (identifier "uVar8") (= "=") (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar7"))) (; ";")) (if_statement "if (uVar8 - 0x30 < 10) {\n          uVar5 = iVar6 - 0x30;\n        }\n        else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" (if "if") (parenthesized_expression "(uVar8 - 0x30 < 10)" (( "(") (binary_expression "uVar8 - 0x30 < 10" (binary_expression "uVar8 - 0x30" (identifier "uVar8") (- "-") (number_literal "0x30")) (< "<") (number_literal "10")) () ")")) (compound_statement "{\n          uVar5 = iVar6 - 0x30;\n        }" ({ "{") (expression_statement "uVar5 = iVar6 - 0x30;" (assignment_expression "uVar5 = iVar6 - 0x30" (identifier "uVar5") (= "=") (binary_expression "iVar6 - 0x30" (identifier "iVar6") (- "-") (number_literal "0x30"))) (; ";")) (} "}")) (else_clause "else if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" (else "else") (if_statement "if (uVar8 - 0x61 < 6) {\n          uVar5 = iVar6 - 0x57;\n        }\n        else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" (if "if") (parenthesized_expression "(uVar8 - 0x61 < 6)" (( "(") (binary_expression "uVar8 - 0x61 < 6" (binary_expression "uVar8 - 0x61" (identifier "uVar8") (- "-") (number_literal "0x61")) (< "<") (number_literal "6")) () ")")) (compound_statement "{\n          uVar5 = iVar6 - 0x57;\n        }" ({ "{") (expression_statement "uVar5 = iVar6 - 0x57;" (assignment_expression "uVar5 = iVar6 - 0x57" (identifier "uVar5") (= "=") (binary_expression "iVar6 - 0x57" (identifier "iVar6") (- "-") (number_literal "0x57"))) (; ";")) (} "}")) (else_clause "else {\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" (else "else") (compound_statement "{\n          uVar5 = iVar6 - 0x37;\n          if (5 < uVar8 - 0x41) goto LAB_00022f80;\n        }" ({ "{") (expression_statement "uVar5 = iVar6 - 0x37;" (assignment_expression "uVar5 = iVar6 - 0x37" (identifier "uVar5") (= "=") (binary_expression "iVar6 - 0x37" (identifier "iVar6") (- "-") (number_literal "0x37"))) (; ";")) (if_statement "if (5 < uVar8 - 0x41) goto LAB_00022f80;" (if "if") (parenthesized_expression "(5 < uVar8 - 0x41)" (( "(") (binary_expression "5 < uVar8 - 0x41" (number_literal "5") (< "<") (binary_expression "uVar8 - 0x41" (identifier "uVar8") (- "-") (number_literal "0x41"))) () ")")) (goto_statement "goto LAB_00022f80;" (goto "goto") (statement_identifier "LAB_00022f80") (; ";"))) (} "}")))))) (expression_statement "uVar8 = uVar13 >> 0x1c;" (assignment_expression "uVar8 = uVar13 >> 0x1c" (identifier "uVar8") (= "=") (binary_expression "uVar13 >> 0x1c" (identifier "uVar13") (>> ">>") (number_literal "0x1c"))) (; ";")) (expression_statement "uVar13 = uVar5 + uVar13 * 0x10;" (assignment_expression "uVar13 = uVar5 + uVar13 * 0x10" (identifier "uVar13") (= "=") (binary_expression "uVar5 + uVar13 * 0x10" (identifier "uVar5") (+ "+") (binary_expression "uVar13 * 0x10" (identifier "uVar13") (* "*") (number_literal "0x10")))) (; ";")) (expression_statement "iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);" (assignment_expression "iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4)" (identifier "iVar3") (= "=") (binary_expression "(uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4)" (binary_expression "(uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f)" (call_expression "(uint)(uVar13 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar13 < uVar5)" (( "(") (binary_expression "uVar13 < uVar5" (identifier "uVar13") (< "<") (identifier "uVar5")) () ")"))) (+ "+") (parenthesized_expression "((int)uVar5 >> 0x1f)" (( "(") (binary_expression "(int)uVar5 >> 0x1f" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (>> ">>") (number_literal "0x1f")) () ")"))) (+ "+") (parenthesized_expression "(uVar8 | iVar3 << 4)" (( "(") (binary_expression "uVar8 | iVar3 << 4" (identifier "uVar8") (| "|") (binary_expression "iVar3 << 4" (identifier "iVar3") (<< "<<") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }" (else "else") (compound_statement "{\n    pcVar12 = *(code **)(puVar11 + 0x16de34);\n  }" ({ "{") (expression_statement "pcVar12 = *(code **)(puVar11 + 0x16de34);" (assignment_expression "pcVar12 = *(code **)(puVar11 + 0x16de34)" (identifier "pcVar12") (= "=") (pointer_expression "*(code **)(puVar11 + 0x16de34)" (* "*") (cast_expression "(code **)(puVar11 + 0x16de34)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x16de34)" (( "(") (binary_expression "puVar11 + 0x16de34" (identifier "puVar11") (+ "+") (number_literal "0x16de34")) () ")"))))) (; ";")) (} "}")))) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4 = (int *)(*pcVar12)();" (assignment_expression "piVar4 = (int *)(*pcVar12)()" (identifier "piVar4") (= "=") (cast_expression "(int *)(*pcVar12)()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (while_statement "while( true ) {\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iVar6 = (int)uVar8 >> 0x1f;\n    uVar5 = uVar13 * 10 + uVar8;\n    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;\n    pbVar7 = pbVar7 + 1;\n    uVar8 = (uint)(char)*pbVar7;\n    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;\n    uVar13 = uVar5 - 0x30;\n  }" ({ "{") (expression_statement "iVar6 = (int)uVar8 >> 0x1f;" (assignment_expression "iVar6 = (int)uVar8 >> 0x1f" (identifier "iVar6") (= "=") (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar5 = uVar13 * 10 + uVar8;" (assignment_expression "uVar5 = uVar13 * 10 + uVar8" (identifier "uVar5") (= "=") (binary_expression "uVar13 * 10 + uVar8" (binary_expression "uVar13 * 10" (identifier "uVar13") (* "*") (number_literal "10")) (+ "+") (identifier "uVar8"))) (; ";")) (if_statement "if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;" (if "if") (parenthesized_expression "((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0)" (( "(") (binary_expression "(*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0" (parenthesized_expression "(*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8)" (( "(") (binary_expression "*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8" (pointer_expression "*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2)" (* "*") (cast_expression "(ushort *)(*piVar4 + (uVar8 & 0xff) * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar4 + (uVar8 & 0xff) * 2)" (( "(") (binary_expression "*piVar4 + (uVar8 & 0xff) * 2" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (+ "+") (binary_expression "(uVar8 & 0xff) * 2" (parenthesized_expression "(uVar8 & 0xff)" (( "(") (binary_expression "uVar8 & 0xff" (identifier "uVar8") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar8 = (uint)(char)*pbVar7;" (assignment_expression "uVar8 = (uint)(char)*pbVar7" (identifier "uVar8") (= "=") (binary_expression "(uint)(char)*pbVar7" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(char)" (( "(") (identifier "char") () ")"))) (* "*") (identifier "pbVar7"))) (; ";")) (expression_statement "iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1;" (assignment_expression "iVar3 = (uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1" (identifier "iVar3") (= "=") (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +\n            -1" (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6" (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10) +\n            (uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2)" (binary_expression "(uint)(uVar5 - 0x30 < uVar5) +\n            (uint)(uVar5 < uVar13 * 10)" (call_expression "(uint)(uVar5 - 0x30 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar5 - 0x30 < uVar5)" (( "(") (binary_expression "uVar5 - 0x30 < uVar5" (binary_expression "uVar5 - 0x30" (identifier "uVar5") (- "-") (number_literal "0x30")) (< "<") (identifier "uVar5")) () ")"))) (+ "+") (call_expression "(uint)(uVar5 < uVar13 * 10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar5 < uVar13 * 10)" (( "(") (binary_expression "uVar5 < uVar13 * 10" (identifier "uVar5") (< "<") (binary_expression "uVar13 * 10" (identifier "uVar13") (* "*") (number_literal "10"))) () ")")))) (+ "+") (parenthesized_expression "(uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2)" (( "(") (binary_expression "uVar13 * 5 >> 0x1f |\n            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2" (binary_expression "uVar13 * 5 >> 0x1f" (binary_expression "uVar13 * 5" (identifier "uVar13") (* "*") (number_literal "5")) (>> ">>") (number_literal "0x1f")) (| "|") (binary_expression "((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2" (parenthesized_expression "((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3)" (( "(") (binary_expression "(uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3" (binary_expression "(uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2)" (call_expression "(uint)(uVar13 * 5 < uVar13 * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar13 * 5 < uVar13 * 4)" (( "(") (binary_expression "uVar13 * 5 < uVar13 * 4" (binary_expression "uVar13 * 5" (identifier "uVar13") (* "*") (number_literal "5")) (< "<") (binary_expression "uVar13 * 4" (identifier "uVar13") (* "*") (number_literal "4"))) () ")"))) (+ "+") (parenthesized_expression "(uVar13 >> 0x1e | iVar3 << 2)" (( "(") (binary_expression "uVar13 >> 0x1e | iVar3 << 2" (binary_expression "uVar13 >> 0x1e" (identifier "uVar13") (>> ">>") (number_literal "0x1e")) (| "|") (binary_expression "iVar3 << 2" (identifier "iVar3") (<< "<<") (number_literal "2"))) () ")"))) (+ "+") (identifier "iVar3")) () ")")) (* "*") (number_literal "2"))) () ")"))) (+ "+") (identifier "iVar6")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar13 = uVar5 - 0x30;" (assignment_expression "uVar13 = uVar5 - 0x30" (identifier "uVar13") (= "=") (binary_expression "uVar5 - 0x30" (identifier "uVar5") (- "-") (number_literal "0x30"))) (; ";")) (} "}"))) (labeled_statement "LAB_00022f80:\n  iVar10 = *(int *)(puVar11 + 0x16dabc);" (statement_identifier "LAB_00022f80") (: ":") (expression_statement "iVar10 = *(int *)(puVar11 + 0x16dabc);" (assignment_expression "iVar10 = *(int *)(puVar11 + 0x16dabc)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar11 + 0x16dabc)" (* "*") (cast_expression "(int *)(puVar11 + 0x16dabc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 0x16dabc)" (( "(") (binary_expression "puVar11 + 0x16dabc" (identifier "puVar11") (+ "+") (number_literal "0x16dabc")) () ")"))))) (; ";"))) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;" (assignment_expression "iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c" (identifier "iVar6") (= "=") (binary_expression "*(int *)(puVar11 + 0x16dacc) + 0x116c" (pointer_expression "*(int *)(puVar11 + 0x16dacc)" (* "*") (cast_expression "(int *)(puVar11 + 0x16dacc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 0x16dacc)" (( "(") (binary_expression "puVar11 + 0x16dacc" (identifier "puVar11") (+ "+") (number_literal "0x16dacc")) () ")")))) (+ "+") (number_literal "0x116c"))) (; ";")) (expression_statement "piVar4 = (int *)(iVar10 + -0x2838);" (assignment_expression "piVar4 = (int *)(iVar10 + -0x2838)" (identifier "piVar4") (= "=") (cast_expression "(int *)(iVar10 + -0x2838)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + -0x2838)" (( "(") (binary_expression "iVar10 + -0x2838" (identifier "iVar10") (+ "+") (number_literal "-0x2838")) () ")")))) (; ";")) (while_statement "while( true ) {\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    piVar4 = piVar4 + 2;\n    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);\n    if (iVar6 == 0) break;\n    iVar9 = iVar9 + 1;\n    if (iVar9 == 9) goto LAB_00022fc8;\n    iVar6 = *piVar4;\n  }" ({ "{") (expression_statement "piVar4 = piVar4 + 2;" (assignment_expression "piVar4 = piVar4 + 2" (identifier "piVar4") (= "=") (binary_expression "piVar4 + 2" (identifier "piVar4") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);" (assignment_expression "iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7)" (identifier "iVar6") (= "=") (call_expression "(**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7)" (parenthesized_expression "(**(code **)(puVar11 + 0x16db88))" (( "(") (pointer_expression "**(code **)(puVar11 + 0x16db88)" (* "*") (pointer_expression "*(code **)(puVar11 + 0x16db88)" (* "*") (cast_expression "(code **)(puVar11 + 0x16db88)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x16db88)" (( "(") (binary_expression "puVar11 + 0x16db88" (identifier "puVar11") (+ "+") (number_literal "0x16db88")) () ")"))))) () ")")) (argument_list "(iVar6,pbVar7)" (( "(") (identifier "iVar6") (, ",") (identifier "pbVar7") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) break;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar9 == 9) goto LAB_00022fc8;" (if "if") (parenthesized_expression "(iVar9 == 9)" (( "(") (binary_expression "iVar9 == 9" (identifier "iVar9") (== "==") (number_literal "9")) () ")")) (goto_statement "goto LAB_00022fc8;" (goto "goto") (statement_identifier "LAB_00022fc8") (; ";"))) (expression_statement "iVar6 = *piVar4;" (assignment_expression "iVar6 = *piVar4" (identifier "iVar6") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (} "}"))) (expression_statement "uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];" (assignment_expression "uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1]" (identifier "uVar8") (= "=") (subscript_expression "((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1]" (parenthesized_expression "((int *)(iVar10 + -0x2838))" (( "(") (cast_expression "(int *)(iVar10 + -0x2838)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + -0x2838)" (( "(") (binary_expression "iVar10 + -0x2838" (identifier "iVar10") (+ "+") (number_literal "-0x2838")) () ")"))) () ")")) ([ "[") (binary_expression "iVar9 * 2 + 1" (binary_expression "iVar9 * 2" (identifier "iVar9") (* "*") (number_literal "2")) (+ "+") (number_literal "1")) (] "]"))) (; ";")) (expression_statement "iVar6 = ((int)uVar8 >> 0x1f) * uVar13;" (assignment_expression "iVar6 = ((int)uVar8 >> 0x1f) * uVar13" (identifier "iVar6") (= "=") (binary_expression "((int)uVar8 >> 0x1f) * uVar13" (parenthesized_expression "((int)uVar8 >> 0x1f)" (( "(") (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (>> ">>") (number_literal "0x1f")) () ")")) (* "*") (identifier "uVar13"))) (; ";")) (expression_statement "uVar1 = (ulonglong)uVar13;" (assignment_expression "uVar1 = (ulonglong)uVar13" (identifier "uVar1") (= "=") (cast_expression "(ulonglong)uVar13" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar13"))) (; ";")) (expression_statement "uVar13 = (uint)(uVar1 * uVar8);" (assignment_expression "uVar13 = (uint)(uVar1 * uVar8)" (identifier "uVar13") (= "=") (call_expression "(uint)(uVar1 * uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar1 * uVar8)" (( "(") (binary_expression "uVar1 * uVar8" (identifier "uVar1") (* "*") (identifier "uVar8")) () ")")))) (; ";")) (expression_statement "iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);" (assignment_expression "iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20)" (identifier "iVar3") (= "=") (binary_expression "iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20)" (binary_expression "iVar6 + uVar8 * iVar3" (identifier "iVar6") (+ "+") (binary_expression "uVar8 * iVar3" (identifier "uVar8") (* "*") (identifier "iVar3"))) (+ "+") (cast_expression "(int)(uVar1 * uVar8 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar1 * uVar8 >> 0x20)" (( "(") (binary_expression "uVar1 * uVar8 >> 0x20" (binary_expression "uVar1 * uVar8" (identifier "uVar1") (* "*") (identifier "uVar8")) (>> ">>") (number_literal "0x20")) () ")"))))) (; ";")) (labeled_statement "LAB_00022fc8:\n  if (bVar2) {\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }" (statement_identifier "LAB_00022fc8") (: ":") (if_statement "if (bVar2) {\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (compound_statement "{\n    uVar13 = -uVar13;\n    iVar3 = -(uint)(uVar13 != 0) - iVar3;\n  }" ({ "{") (expression_statement "uVar13 = -uVar13;" (assignment_expression "uVar13 = -uVar13" (identifier "uVar13") (= "=") (unary_expression "-uVar13" (- "-") (identifier "uVar13"))) (; ";")) (expression_statement "iVar3 = -(uint)(uVar13 != 0) - iVar3;" (assignment_expression "iVar3 = -(uint)(uVar13 != 0) - iVar3" (identifier "iVar3") (= "=") (binary_expression "-(uint)(uVar13 != 0) - iVar3" (unary_expression "-(uint)(uVar13 != 0)" (- "-") (call_expression "(uint)(uVar13 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar13 != 0)" (( "(") (binary_expression "uVar13 != 0" (identifier "uVar13") (!= "!=") (number_literal "0")) () ")")))) (- "-") (identifier "iVar3"))) (; ";")) (} "}")))) (return_statement "return CONCAT44(iVar3,uVar13);" (return "return") (call_expression "CONCAT44(iVar3,uVar13)" (identifier "CONCAT44") (argument_list "(iVar3,uVar13)" (( "(") (identifier "iVar3") (, ",") (identifier "uVar13") () ")"))) (; ";")) (labeled_statement "joined_r0x00022dd8:\n  if (piVar4 == (int *)0x0) goto LAB_00022e4c;" (statement_identifier "joined_r0x00022dd8") (: ":") (if_statement "if (piVar4 == (int *)0x0) goto LAB_00022e4c;" (if "if") (parenthesized_expression "(piVar4 == (int *)0x0)" (( "(") (binary_expression "piVar4 == (int *)0x0" (identifier "piVar4") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00022e4c;" (goto "goto") (statement_identifier "LAB_00022e4c") (; ";")))) (if_statement "if ((*piVar4 == iVar3) && (piVar4[1] == param_2)) goto LAB_00022e10;" (if "if") (parenthesized_expression "((*piVar4 == iVar3) && (piVar4[1] == param_2))" (( "(") (binary_expression "(*piVar4 == iVar3) && (piVar4[1] == param_2)" (parenthesized_expression "(*piVar4 == iVar3)" (( "(") (binary_expression "*piVar4 == iVar3" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (== "==") (identifier "iVar3")) () ")")) (&& "&&") (parenthesized_expression "(piVar4[1] == param_2)" (( "(") (binary_expression "piVar4[1] == param_2" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (== "==") (identifier "param_2")) () ")"))) () ")")) (goto_statement "goto LAB_00022e10;" (goto "goto") (statement_identifier "LAB_00022e10") (; ";"))) (expression_statement "piVar4 = (int *)piVar4[2];" (assignment_expression "piVar4 = (int *)piVar4[2]" (identifier "piVar4") (= "=") (cast_expression "(int *)piVar4[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (goto_statement "goto joined_r0x00022dd8;" (goto "goto") (statement_identifier "joined_r0x00022dd8") (; ";")) (labeled_statement "LAB_00022e4c:\n  piVar4 = (int *)FUN_00020368(&local_20,0xc);" (statement_identifier "LAB_00022e4c") (: ":") (expression_statement "piVar4 = (int *)FUN_00020368(&local_20,0xc);" (assignment_expression "piVar4 = (int *)FUN_00020368(&local_20,0xc)" (identifier "piVar4") (= "=") (cast_expression "(int *)FUN_00020368(&local_20,0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00020368(&local_20,0xc)" (identifier "FUN_00020368") (argument_list "(&local_20,0xc)" (( "(") (pointer_expression "&local_20" (& "&") (identifier "local_20")) (, ",") (number_literal "0xc") () ")"))))) (; ";"))) (if_statement "if (local_20 == 0) {\n    *piVar4 = iVar3;\n    piVar4[1] = param_2;\n    piVar4[2] = *(int *)(param_1 + 0x18);\n    *(int **)(param_1 + 0x18) = piVar4;\n  }" (if "if") (parenthesized_expression "(local_20 == 0)" (( "(") (binary_expression "local_20 == 0" (identifier "local_20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *piVar4 = iVar3;\n    piVar4[1] = param_2;\n    piVar4[2] = *(int *)(param_1 + 0x18);\n    *(int **)(param_1 + 0x18) = piVar4;\n  }" ({ "{") (expression_statement "*piVar4 = iVar3;" (assignment_expression "*piVar4 = iVar3" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "piVar4[1] = param_2;" (assignment_expression "piVar4[1] = param_2" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "piVar4[2] = *(int *)(param_1 + 0x18);" (assignment_expression "piVar4[2] = *(int *)(param_1 + 0x18)" (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*(int **)(param_1 + 0x18) = piVar4;" (assignment_expression "*(int **)(param_1 + 0x18) = piVar4" (pointer_expression "*(int **)(param_1 + 0x18)" (* "*") (cast_expression "(int **)(param_1 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (} "}"))) (goto_statement "goto LAB_00022e10;" (goto "goto") (statement_identifier "LAB_00022e10") (; ";")) (} "}")))

int function_1(void *pCtx,int var_1,char *z3,char *z4,char *zDb,char *zTrigger)

{
  type_1 var_14;
  bool bVar2;
  int var_3;
  int *var_12;
  type_2 var_10;
  int var_4;
  type_3 *var_6;
  type_2 var_7;
  int var_13;
  int var_11;
  type_4 *var_8;
  type_5 *pcVar12;
  type_2 var_9;
  int var_16;
  type_3 *var_5;
  
  var_8 = PTR___stack_chk_guard_00190e24;
  var_16 = 0;
  var_5 = *(type_3 **)PTR___stack_chk_guard_00190e24;
  if ((((type_2)var_1 < 0x18) && ((int)((0x840200U >> (var_1 & 0x1fU)) << 0x1f) < 0)) &&
     (var_3 = (*(type_5 *)PTR_sqlite3_stricmp_00190a14)(zDb,var_2 + 0x1164), var_3 == 0)) {
    for (var_3 = *(int *)((int)pCtx + 0x10); var_3 != 0; var_3 = *(int *)(var_3 + 0xc)) {
      var_4 = (*(type_5 *)PTR_sqlite3_stricmp_00190a14)(z3,*(type_6 *)(var_3 + 4));
      if (var_4 == 0) {
        var_12 = *(int **)((int)pCtx + 0x18);
        goto joined_r0x00022dd8;
      }
    }
  }
LAB_00022e10:
  if (var_5 == *(type_3 **)var_8) {
    return var_16;
  }
  var_6 = var_5;
  var_8 = PTR___stack_chk_fail_00190df8;
  (*(type_5 *)PTR___stack_chk_fail_00190df8)();
  var_7 = (type_2)(char)*var_6;
  if (var_7 == 0x2d) {
    var_7 = (type_2)(char)var_6[1];
    bVar2 = true;
    var_6 = var_6 + 1;
  }
  else {
    bVar2 = false;
    if (var_7 == 0x2b) {
      var_7 = (type_2)(char)var_6[1];
      var_6 = var_6 + 1;
    }
  }
  if (var_7 == 0x30) {
    pcVar12 = *(type_5 **)(var_8 + 0x16de34);
    if (var_6[1] == 0x78) {
      var_9 = 0;
      var_3 = 0;
      var_6 = var_6 + 2;
      do {
        var_4 = (int)(char)*var_6;
        var_7 = (type_2)*var_6;
        if (var_7 - 0x30 < 10) {
          var_10 = var_4 - 0x30;
        }
        else if (var_7 - 0x61 < 6) {
          var_10 = var_4 - 0x57;
        }
        else {
          var_10 = var_4 - 0x37;
          if (5 < var_7 - 0x41) goto LAB_00022f80;
        }
        var_7 = var_9 >> 0x1c;
        var_9 = var_10 + var_9 * 0x10;
        var_3 = (type_2)(var_9 < var_10) + ((int)var_10 >> 0x1f) + (var_7 | var_3 << 4);
        var_6 = var_6 + 1;
      } while( true );
    }
  }
  else {
    pcVar12 = *(type_5 **)(var_8 + 0x16de34);
  }
  var_3 = 0;
  var_12 = (int *)(*pcVar12)();
  var_9 = 0;
  while( true ) {
    var_4 = (int)var_7 >> 0x1f;
    var_10 = var_9 * 10 + var_7;
    if ((*(type_7 *)(*var_12 + (var_7 & 0xff) * 2) & 8) == 0) break;
    var_6 = var_6 + 1;
    var_7 = (type_2)(char)*var_6;
    var_3 = (type_2)(var_10 - 0x30 < var_10) +
            (type_2)(var_10 < var_9 * 10) +
            (var_9 * 5 >> 0x1f |
            ((type_2)(var_9 * 5 < var_9 * 4) + (var_9 >> 0x1e | var_3 << 2) + var_3) * 2) + var_4 +
            -1;
    var_9 = var_10 - 0x30;
  }
LAB_00022f80:
  var_11 = *(int *)(var_8 + 0x16dabc);
  var_13 = 0;
  var_4 = *(int *)(var_8 + 0x16dacc) + 0x116c;
  var_12 = (int *)(var_11 + -0x2838);
  while( true ) {
    var_12 = var_12 + 2;
    var_4 = (**(type_5 **)(var_8 + 0x16db88))(var_4,var_6);
    if (var_4 == 0) break;
    var_13 = var_13 + 1;
    if (var_13 == 9) goto LAB_00022fc8;
    var_4 = *var_12;
  }
  var_7 = ((int *)(var_11 + -0x2838))[var_13 * 2 + 1];
  var_4 = ((int)var_7 >> 0x1f) * var_9;
  var_14 = (type_1)var_9;
  var_9 = (type_2)(var_14 * var_7);
  var_3 = var_4 + var_7 * var_3 + (int)(var_14 * var_7 >> 0x20);
LAB_00022fc8:
  if (bVar2) {
    var_3 = -(type_2)(var_9 != 0) - var_3;
  }
  return var_3;
joined_r0x00022dd8:
  if (var_12 == (int *)0x0) goto LAB_00022e4c;
  if ((*var_12 == var_3) && (var_12[1] == var_1)) goto LAB_00022e10;
  var_12 = (int *)var_12[2];
  goto joined_r0x00022dd8;
LAB_00022e4c:
  var_12 = (int *)var_15(&var_16,0xc);
  if (var_16 == 0) {
    *var_12 = var_3;
    var_12[1] = var_1;
    var_12[2] = *(int *)((int)pCtx + 0x18);
    *(int **)((int)pCtx + 0x18) = var_12;
  }
  goto LAB_00022e10;
}


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

undefined8
MASKED(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  ulonglong uVar1;
  bool bVar2;
  int iVar3;
  int *piVar4;
  uint uVar5;
  int iVar6;
  byte *pbVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  undefined *puVar11;
  code *pcVar12;
  uint uVar13;
  int local_20;
  byte *local_1c;
  
  puVar11 = PTR___stack_chk_guard_00190e24;
  local_20 = 0;
  local_1c = *(byte **)PTR___stack_chk_guard_00190e24;
  if (((param_2 < 0x18) && ((int)((0x840200U >> (param_2 & 0x1f)) << 0x1f) < 0)) &&
     (iVar3 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_5,PTR_LAB_00190958 + 0x1164), iVar3 == 0
     )) {
    for (iVar3 = *(int *)(param_1 + 0x10); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {
      iVar6 = (*(code *)PTR_sqlite3_stricmp_00190a14)(param_3,*(undefined4 *)(iVar3 + 4));
      if (iVar6 == 0) {
        piVar4 = *(int **)(param_1 + 0x18);
        goto joined_r0x00022dd8;
      }
    }
  }
LAB_00022e10:
  if (local_1c == *(byte **)puVar11) {
    return CONCAT44(local_20,*(byte **)puVar11);
  }
  pbVar7 = local_1c;
  puVar11 = PTR___stack_chk_fail_00190df8;
  (*(code *)PTR___stack_chk_fail_00190df8)();
  uVar8 = (uint)(char)*pbVar7;
  if (uVar8 == 0x2d) {
    uVar8 = (uint)(char)pbVar7[1];
    bVar2 = true;
    pbVar7 = pbVar7 + 1;
  }
  else {
    bVar2 = false;
    if (uVar8 == 0x2b) {
      uVar8 = (uint)(char)pbVar7[1];
      pbVar7 = pbVar7 + 1;
    }
  }
  if (uVar8 == 0x30) {
    pcVar12 = *(code **)(puVar11 + 0x16de34);
    if (pbVar7[1] == 0x78) {
      uVar13 = 0;
      iVar3 = 0;
      pbVar7 = pbVar7 + 2;
      do {
        iVar6 = (int)(char)*pbVar7;
        uVar8 = (uint)*pbVar7;
        if (uVar8 - 0x30 < 10) {
          uVar5 = iVar6 - 0x30;
        }
        else if (uVar8 - 0x61 < 6) {
          uVar5 = iVar6 - 0x57;
        }
        else {
          uVar5 = iVar6 - 0x37;
          if (5 < uVar8 - 0x41) goto LAB_00022f80;
        }
        uVar8 = uVar13 >> 0x1c;
        uVar13 = uVar5 + uVar13 * 0x10;
        iVar3 = (uint)(uVar13 < uVar5) + ((int)uVar5 >> 0x1f) + (uVar8 | iVar3 << 4);
        pbVar7 = pbVar7 + 1;
      } while( true );
    }
  }
  else {
    pcVar12 = *(code **)(puVar11 + 0x16de34);
  }
  iVar3 = 0;
  piVar4 = (int *)(*pcVar12)();
  uVar13 = 0;
  while( true ) {
    iVar6 = (int)uVar8 >> 0x1f;
    uVar5 = uVar13 * 10 + uVar8;
    if ((*(ushort *)(*piVar4 + (uVar8 & 0xff) * 2) & 8) == 0) break;
    pbVar7 = pbVar7 + 1;
    uVar8 = (uint)(char)*pbVar7;
    iVar3 = (uint)(uVar5 - 0x30 < uVar5) +
            (uint)(uVar5 < uVar13 * 10) +
            (uVar13 * 5 >> 0x1f |
            ((uint)(uVar13 * 5 < uVar13 * 4) + (uVar13 >> 0x1e | iVar3 << 2) + iVar3) * 2) + iVar6 +
            -1;
    uVar13 = uVar5 - 0x30;
  }
LAB_00022f80:
  iVar10 = *(int *)(puVar11 + 0x16dabc);
  iVar9 = 0;
  iVar6 = *(int *)(puVar11 + 0x16dacc) + 0x116c;
  piVar4 = (int *)(iVar10 + -0x2838);
  while( true ) {
    piVar4 = piVar4 + 2;
    iVar6 = (**(code **)(puVar11 + 0x16db88))(iVar6,pbVar7);
    if (iVar6 == 0) break;
    iVar9 = iVar9 + 1;
    if (iVar9 == 9) goto LAB_00022fc8;
    iVar6 = *piVar4;
  }
  uVar8 = ((int *)(iVar10 + -0x2838))[iVar9 * 2 + 1];
  iVar6 = ((int)uVar8 >> 0x1f) * uVar13;
  uVar1 = (ulonglong)uVar13;
  uVar13 = (uint)(uVar1 * uVar8);
  iVar3 = iVar6 + uVar8 * iVar3 + (int)(uVar1 * uVar8 >> 0x20);
LAB_00022fc8:
  if (bVar2) {
    uVar13 = -uVar13;
    iVar3 = -(uint)(uVar13 != 0) - iVar3;
  }
  return CONCAT44(iVar3,uVar13);
joined_r0x00022dd8:
  if (piVar4 == (int *)0x0) goto LAB_00022e4c;
  if ((*piVar4 == iVar3) && (piVar4[1] == param_2)) goto LAB_00022e10;
  piVar4 = (int *)piVar4[2];
  goto joined_r0x00022dd8;
LAB_00022e4c:
  piVar4 = (int *)FUN_00020368(&local_20,0xc);
  if (local_20 == 0) {
    *piVar4 = iVar3;
    piVar4[1] = param_2;
    piVar4[2] = *(int *)(param_1 + 0x18);
    *(int **)(param_1 + 0x18) = piVar4;
  }
  goto LAB_00022e10;
}

