
void trimFunc(sqlite3_context *context,int argc,sqlite3_value **argv)

{
  undefined4 *puVar1;
  byte bVar2;
  bool bVar3;
  int iVar4;
  uchar *z;
  uint n;
  byte *pbVar5;
  undefined4 *puVar6;
  byte *pbVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  undefined4 *puVar11;
  byte bVar12;
  byte *pbVar13;
  undefined1 *puVar14;
  undefined1 *puVar15;
  undefined4 in_stack_ffffffcc;
  byte *pbStack_30;
  
  puVar14 = &_gp;
  iVar4 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*argv);
  if ((iVar4 == 5) || (z = sqlite3_value_text(*argv), z == (uchar *)0x0)) {
    return;
  }
  n = sqlite3_value_bytes(*argv);
  if (argc == 1) {
    pbStack_30 = (byte *)0x0;
    puVar6 = (undefined4 *)(*(int *)(puVar14 + -0x7fd8) + -0x7168);
    pbVar5 = (byte *)(*(int *)(puVar14 + -0x7fb4) + 0x2a10);
    iVar4 = 1;
  }
  else {
    pbStack_30 = sqlite3_value_text(argv[1]);
    if (pbStack_30 == (byte *)0x0) {
      return;
    }
    bVar12 = *pbStack_30;
    pbVar5 = pbStack_30;
    iVar4 = 0;
    if (bVar12 == 0) goto LAB_000657d8;
    do {
      while( true ) {
        iVar10 = iVar4;
        bVar3 = 0xbf < bVar12;
        bVar12 = pbVar5[1];
        pbVar5 = pbVar5 + 1;
        if (bVar3) break;
        iVar4 = iVar10 + 1;
        if (bVar12 == 0) goto LAB_000655bc;
      }
      while ((bVar12 & 0xc0) == 0x80) {
        pbVar5 = pbVar5 + 1;
        bVar12 = *pbVar5;
      }
      iVar4 = iVar10 + 1;
    } while (bVar12 != 0);
LAB_000655bc:
    puVar6 = (undefined4 *)contextMalloc(context,CONCAT44(puVar14,in_stack_ffffffcc));
    if (puVar6 == (undefined4 *)0x0) {
      return;
    }
    pbVar5 = (byte *)(puVar6 + iVar10 + 1);
    if (*pbStack_30 == 0) goto LAB_000657d8;
    iVar4 = 0;
    pbVar13 = pbStack_30;
    puVar11 = puVar6;
    do {
      *puVar11 = pbVar13;
      pbVar7 = pbVar13 + 1;
      if (*pbVar13 < 0xc0) {
        bVar12 = 1;
      }
      else {
        bVar12 = 1;
        bVar2 = pbVar13[1];
        while ((bVar2 & 0xc0) == 0x80) {
          pbVar7 = pbVar7 + 1;
          bVar12 = (char)pbVar7 - (char)pbVar13;
          bVar2 = *pbVar7;
        }
      }
      puVar11 = puVar11 + 1;
      pbVar5[iVar4] = bVar12;
      iVar4 = iVar4 + 1;
      pbVar13 = pbVar7;
    } while (*pbVar7 != 0);
  }
  uVar8 = (**(code **)(puVar14 + -0x7ee8))(context);
  puVar15 = puVar14;
  if ((uVar8 & 1) == 0) {
    if (((uVar8 & 2) != 0) && (0 < (int)n)) {
      do {
        pbVar13 = pbVar5;
        puVar11 = puVar6;
        while( true ) {
          uVar9 = (uint)*pbVar13;
          pbVar13 = pbVar13 + 1;
          puVar1 = (undefined4 *)(puVar14 + -0x7b94);
          uVar8 = n - uVar9;
          if (((int)uVar9 <= (int)n) &&
             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),
             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)) break;
          puVar11 = puVar11 + 1;
          if (pbVar13 == pbVar5 + iVar4) goto LAB_000657c4;
        }
joined_r0x000657b8:
        n = uVar9;
      } while (uVar8 != 0);
    }
  }
  else {
    pbVar13 = pbVar5;
    puVar11 = puVar6;
    if (0 < (int)n) {
      do {
        while( true ) {
          uVar9 = (uint)*pbVar13;
          pbVar13 = pbVar13 + 1;
          puVar1 = (undefined4 *)(puVar14 + -0x7b94);
          if (((int)uVar9 <= (int)n) &&
             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,
             iVar10 == 0)) break;
          puVar11 = puVar11 + 1;
          if (pbVar5 + iVar4 == pbVar13) {
            uVar8 = uVar8 & 2;
            uVar9 = n;
            goto joined_r0x000657b8;
          }
        }
        n = n - uVar9;
        z = z + uVar9;
        pbVar13 = pbVar5;
        puVar11 = puVar6;
      } while (n != 0);
    }
  }
LAB_000657c4:
  if (pbStack_30 != (byte *)0x0) {
    (**(code **)(puVar14 + -0x7f90))(puVar6);
  }
LAB_000657d8:
  sqlite3_result_text(context,(char *)z,n,(_func_void_void_ptr *)0xffffffff);
  return;
}



void FUN_000654d8(undefined4 param_1,int param_2,undefined4 *param_3)

{
  byte bVar1;
  bool bVar2;
  int iVar3;
  uint uVar4;
  byte *pbVar5;
  undefined4 *puVar6;
  byte *pbVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  undefined4 *puVar11;
  byte bVar12;
  byte *pbVar13;
  int iVar14;
  byte *local_30;
  
  iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3);
  if ((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)) {
    return;
  }
  uVar4 = sqlite3_value_bytes(*param_3);
  if (param_2 == 1) {
    local_30 = (byte *)0x0;
    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);
    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;
    iVar14 = 1;
  }
  else {
    local_30 = (byte *)sqlite3_value_text(param_3[1]);
    if (local_30 == (byte *)0x0) {
      return;
    }
    bVar12 = *local_30;
    pbVar5 = local_30;
    iVar14 = 0;
    if (bVar12 == 0) goto LAB_000657d8;
    do {
      while( true ) {
        iVar10 = iVar14;
        bVar2 = 0xbf < bVar12;
        bVar12 = pbVar5[1];
        pbVar5 = pbVar5 + 1;
        if (bVar2) break;
        iVar14 = iVar10 + 1;
        if (bVar12 == 0) goto LAB_000655bc;
      }
      while ((bVar12 & 0xc0) == 0x80) {
        pbVar5 = pbVar5 + 1;
        bVar12 = *pbVar5;
      }
      iVar14 = iVar10 + 1;
    } while (bVar12 != 0);
LAB_000655bc:
    uVar8 = iVar10 + 1;
    puVar6 = (undefined4 *)
             FUN_0005a034(param_1,0x80,
                          (uint)(uVar8 * 5 < uVar8 * 4) +
                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));
    if (puVar6 == (undefined4 *)0x0) {
      return;
    }
    pbVar5 = (byte *)(puVar6 + uVar8);
    if (*local_30 == 0) goto LAB_000657d8;
    iVar14 = 0;
    pbVar13 = local_30;
    puVar11 = puVar6;
    do {
      *puVar11 = pbVar13;
      pbVar7 = pbVar13 + 1;
      if (*pbVar13 < 0xc0) {
        bVar12 = 1;
      }
      else {
        bVar12 = 1;
        bVar1 = pbVar13[1];
        while ((bVar1 & 0xc0) == 0x80) {
          pbVar7 = pbVar7 + 1;
          bVar12 = (char)pbVar7 - (char)pbVar13;
          bVar1 = *pbVar7;
        }
      }
      puVar11 = puVar11 + 1;
      pbVar5[iVar14] = bVar12;
      iVar14 = iVar14 + 1;
      pbVar13 = pbVar7;
    } while (*pbVar7 != 0);
  }
  uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1);
  if ((uVar8 & 1) == 0) {
    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {
      do {
        pbVar13 = pbVar5;
        puVar11 = puVar6;
        while( true ) {
          uVar9 = (uint)*pbVar13;
          pbVar13 = pbVar13 + 1;
          uVar8 = uVar4 - uVar9;
          if (((int)uVar9 <= (int)uVar4) &&
             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,
             iVar10 == 0)) break;
          puVar11 = puVar11 + 1;
          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;
        }
joined_r0x000657b8:
        uVar4 = uVar9;
      } while (uVar8 != 0);
    }
  }
  else {
    pbVar13 = pbVar5;
    puVar11 = puVar6;
    if (0 < (int)uVar4) {
      do {
        while( true ) {
          uVar9 = (uint)*pbVar13;
          pbVar13 = pbVar13 + 1;
          if (((int)uVar9 <= (int)uVar4) &&
             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;
          puVar11 = puVar11 + 1;
          if (pbVar5 + iVar14 == pbVar13) {
            uVar8 = uVar8 & 2;
            uVar9 = uVar4;
            goto joined_r0x000657b8;
          }
        }
        uVar4 = uVar4 - uVar9;
        iVar3 = iVar3 + uVar9;
        pbVar13 = pbVar5;
        puVar11 = puVar6;
      } while (uVar4 != 0);
    }
  }
LAB_000657c4:
  if (local_30 != (byte *)0x0) {
    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);
  }
LAB_000657d8:
  sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);
  return;
}


lui gp,0x10
addiu gp,gp,-0x1f28
addu gp,gp,t9
addiu sp,sp,-0x48
lw t9,-0x7fb8(gp)
sw gp,0x10(sp)
sw s4,0x30(sp)
or s4,a0,zero
sw s1,0x24(sp)
or s1,a1,zero
sw s0,0x20(sp)
or s0,a2,zero
sw ra,0x44(sp)
sw s8,0x40(sp)
sw s7,0x3c(sp)
sw s6,0x38(sp)
sw s5,0x34(sp)
sw s3,0x2c(sp)
sw s2,0x28(sp)
jalr t9
_lw a0,0x0(a2)
li v1,0x5
beq v0,v1,0x00065684
_lw gp,0x10(sp)
lw t9,-0x7f9c(gp)
bal 0x00062ecc
_lw a0,0x0(s0)
lw gp,0x10(sp)
beq v0,zero,0x00065684
_or s5,v0,zero
lw t9,-0x7fac(gp)
bal 0x00062c50
_lw a0,0x0(s0)
li v1,0x1
lw gp,0x10(sp)
beq s1,v1,0x000656b4
_or s6,v0,zero
lw t9,-0x7f9c(gp)
bal 0x00062ecc
_lw a0,0x4(s0)
lw gp,0x10(sp)
beq v0,zero,0x00065684
_sw v0,0x18(sp)
lbu v1,0x0(v0)
beq v1,zero,0x000657d8
_or a3,zero,zero
li a2,-0x40
b 0x000655a4
_li a1,0x80
beq v1,zero,0x000655bc
_addiu a3,a3,0x1
sltiu a0,v1,0xc0
lbu v1,0x1(v0)
beq a0,zero,0x00065758
_addiu v0,v0,0x1
bne v1,zero,0x000655a4
_addiu a3,a3,0x1
sra v0,a3,0x1f
lw t9,-0x7ea0(gp)
srl v1,a3,0x1e
sll s2,a3,0x2
sll a2,v0,0x2
addu a3,s2,a3
or a2,v1,a2
addu a2,a2,v0
sltu v0,a3,s2
addu a2,v0,a2
addiu t9,t9,-0x5fcc
bal 0x0005a034
_or a0,s4,zero
lw gp,0x10(sp)
beq v0,zero,0x00065684
_or s3,v0,zero
lw a0,0x18(sp)
lbu v0,0x0(a0)
beq v0,zero,0x000657d8
_addu s2,s3,s2
or s1,zero,zero
li a3,-0x40
li a2,0x80
b 0x00065640
_or a1,s3,zero
li t1,0x1
or a0,v0,zero
addu v1,s2,s1
addiu a1,a1,0x4
sb t1,0x0(v1)
lbu v0,0x0(v0)
beq v0,zero,0x000656c8
_addiu s1,s1,0x1
sw a0,0x0(a1)
lbu v1,0x0(a0)
sltiu v1,v1,0xc0
bne v1,zero,0x00065620
_addiu v0,a0,0x1
lbu v1,0x1(a0)
and v1,a3,v1
bne v1,a2,0x00065830
_li t1,0x1
addiu v0,v0,0x1
lbu v1,0x0(v0)
and v1,a3,v1
beq v1,a2,0x00065664
_subu t1,v0,a0
or a0,v0,zero
b 0x00065628
_andi t1,t1,0xff
lw ra,0x44(sp)
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,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,0x48
lw s3,-0x7fd8(gp)
lw s2,-0x7fb4(gp)
sw zero,0x18(sp)
addiu s3,s3,-0x7168
addiu s2,s2,0x2a10
lw t9,-0x7ee8(gp)
jalr t9
_or a0,s4,zero
lw gp,0x10(sp)
sw v0,0x1c(sp)
andi v0,v0,0x1
bne v0,zero,0x0006576c
_lw v0,0x1c(sp)
andi s8,v0,0x2
beq s8,zero,0x000657c4
_lw v0,0x18(sp)
blez s6,0x000657c4
_addu s1,s2,s1
or s0,s2,zero
b 0x00065710
_or s7,s3,zero
beq s0,s1,0x000657c0
_addiu s7,s7,0x4
lbu v0,0x0(s0)
addiu s0,s0,0x1
lw t9,-0x7b94(gp)
subu s8,s6,v0
or a2,v0,zero
slt v0,s6,v0
bne v0,zero,0x00065708
_addu a0,s5,s8
jalr t9
_lw a1,0x0(s7)
bne v0,zero,0x00065708
_lw gp,0x10(sp)
bne s8,zero,0x000656fc
_or s6,s8,zero
b 0x000657c4
_lw v0,0x18(sp)
addiu v0,v0,0x1
lbu v1,0x0(v0)
and a0,v1,a2
beq a0,a1,0x00065750
_nop
b 0x0006559c
_nop
blez s6,0x000657c0
_addu s1,s2,s1
or s0,s2,zero
or s8,s3,zero
lbu s7,0x0(s0)
or a0,s5,zero
addiu s0,s0,0x1
lw t9,-0x7b94(gp)
slt v0,s6,s7
bne v0,zero,0x000657a8
_or a2,s7,zero
jalr t9
_lw a1,0x0(s8)
beq v0,zero,0x0006581c
_lw gp,0x10(sp)
bne s1,s0,0x0006577c
_addiu s8,s8,0x4
lw v0,0x1c(sp)
andi s8,v0,0x2
bne s8,zero,0x00065700
_or s0,s2,zero
lw v0,0x18(sp)
beq v0,zero,0x000657d8
_lw t9,-0x7f90(gp)
jalr t9
_or a0,s3,zero
lw gp,0x10(sp)
lw ra,0x44(sp)
or a2,s6,zero
lw s8,0x40(sp)
or a1,s5,zero
lw s7,0x3c(sp)
or a0,s4,zero
lw s6,0x38(sp)
li a3,-0x1
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
lw t9,-0x7f34(gp)
b 0x0005a2cc
_addiu sp,sp,0x48
subu s6,s6,s7
bne s6,zero,0x00065774
_addu s5,s5,s7
b 0x000657c4
_lw v0,0x18(sp)
b 0x00065628
_or a0,v0,zero
(translation_unit "void FUN_000654d8(undefined4 param_1,int param_2,undefined4 *param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  byte *pbVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  byte *pbVar13;\n  int iVar14;\n  byte *local_30;\n  \n  iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3);\n  if ((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)) {\n    return;\n  }\n  uVar4 = sqlite3_value_bytes(*param_3);\n  if (param_2 == 1) {\n    local_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);\n    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;\n    iVar14 = 1;\n  }\n  else {\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }\n  uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1);\n  if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }\nLAB_000657c4:\n  if (local_30 != (byte *)0x0) {\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }\nLAB_000657d8:\n  sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);\n  return;\n}\n\n" (function_definition "void FUN_000654d8(undefined4 param_1,int param_2,undefined4 *param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  byte *pbVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  byte *pbVar13;\n  int iVar14;\n  byte *local_30;\n  \n  iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3);\n  if ((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)) {\n    return;\n  }\n  uVar4 = sqlite3_value_bytes(*param_3);\n  if (param_2 == 1) {\n    local_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);\n    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;\n    iVar14 = 1;\n  }\n  else {\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }\n  uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1);\n  if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }\nLAB_000657c4:\n  if (local_30 != (byte *)0x0) {\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }\nLAB_000657d8:\n  sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);\n  return;\n}" primitive_type (function_declarator "FUN_000654d8(undefined4 param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  byte *pbVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  byte *pbVar13;\n  int iVar14;\n  byte *local_30;\n  \n  iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3);\n  if ((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)) {\n    return;\n  }\n  uVar4 = sqlite3_value_bytes(*param_3);\n  if (param_2 == 1) {\n    local_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);\n    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;\n    iVar14 = 1;\n  }\n  else {\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }\n  uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1);\n  if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }\nLAB_000657c4:\n  if (local_30 != (byte *)0x0) {\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }\nLAB_000657d8:\n  sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "byte *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (expression_statement "iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3);" (assignment_expression "iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3)" identifier = (call_expression "(*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3)" (parenthesized_expression "(*(code *)PTR_sqlite3_value_type_0015b5f8)" ( (pointer_expression "*(code *)PTR_sqlite3_value_type_0015b5f8" * (cast_expression "(code *)PTR_sqlite3_value_type_0015b5f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*param_3)" ( (pointer_expression "*param_3" * identifier) )))) ;) (if_statement "if ((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)) {\n    return;\n  }" if (parenthesized_expression "((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0))" ( (binary_expression "(iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)" (parenthesized_expression "(iVar3 == 5)" ( (binary_expression "iVar3 == 5" identifier == number_literal) )) || (parenthesized_expression "(iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)" ( (comma_expression "iVar3 = sqlite3_value_text(*param_3), iVar3 == 0" (assignment_expression "iVar3 = sqlite3_value_text(*param_3)" identifier = (call_expression "sqlite3_value_text(*param_3)" identifier (argument_list "(*param_3)" ( (pointer_expression "*param_3" * identifier) )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar4 = sqlite3_value_bytes(*param_3);" (assignment_expression "uVar4 = sqlite3_value_bytes(*param_3)" identifier = (call_expression "sqlite3_value_bytes(*param_3)" identifier (argument_list "(*param_3)" ( (pointer_expression "*param_3" * identifier) )))) ;) (if_statement "if (param_2 == 1) {\n    local_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);\n    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;\n    iVar14 = 1;\n  }\n  else {\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }" if (parenthesized_expression "(param_2 == 1)" ( (binary_expression "param_2 == 1" identifier == number_literal) )) (compound_statement "{\n    local_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);\n    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;\n    iVar14 = 1;\n  }" { (expression_statement "local_30 = (byte *)0x0;" (assignment_expression "local_30 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);" (assignment_expression "puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168)" identifier = (cast_expression "(undefined4 *)(PTR_DAT_0015b5d8 + -0x7168)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b5d8 + -0x7168)" ( (binary_expression "PTR_DAT_0015b5d8 + -0x7168" identifier + number_literal) )))) ;) (expression_statement "pbVar5 = PTR_UINT_0015b5fc + 0x2a10;" (assignment_expression "pbVar5 = PTR_UINT_0015b5fc + 0x2a10" identifier = (binary_expression "PTR_UINT_0015b5fc + 0x2a10" identifier + number_literal)) ;) (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }" else (compound_statement "{\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }" { (expression_statement "local_30 = (byte *)sqlite3_value_text(param_3[1]);" (assignment_expression "local_30 = (byte *)sqlite3_value_text(param_3[1])" identifier = (cast_expression "(byte *)sqlite3_value_text(param_3[1])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3_value_text(param_3[1])" identifier (argument_list "(param_3[1])" ( (subscript_expression "param_3[1]" identifier [ number_literal ]) ))))) ;) (if_statement "if (local_30 == (byte *)0x0) {\n      return;\n    }" if (parenthesized_expression "(local_30 == (byte *)0x0)" ( (binary_expression "local_30 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "bVar12 = *local_30;" (assignment_expression "bVar12 = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;) (expression_statement "pbVar5 = local_30;" (assignment_expression "pbVar5 = local_30" identifier = identifier) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (if_statement "if (bVar12 == 0) goto LAB_000657d8;" if (parenthesized_expression "(bVar12 == 0)" ( (binary_expression "bVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000657d8;" goto statement_identifier ;)) (do_statement "do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);" do (compound_statement "{\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    }" { (while_statement "while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }" { (expression_statement "iVar10 = iVar14;" (assignment_expression "iVar10 = iVar14" identifier = identifier) ;) (expression_statement "bVar2 = 0xbf < bVar12;" (assignment_expression "bVar2 = 0xbf < bVar12" identifier = (binary_expression "0xbf < bVar12" number_literal < identifier)) ;) (expression_statement "bVar12 = pbVar5[1];" (assignment_expression "bVar12 = pbVar5[1]" identifier = (subscript_expression "pbVar5[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (if_statement "if (bVar2) break;" if (parenthesized_expression "(bVar2)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "iVar14 = iVar10 + 1;" (assignment_expression "iVar14 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (if_statement "if (bVar12 == 0) goto LAB_000655bc;" if (parenthesized_expression "(bVar12 == 0)" ( (binary_expression "bVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000655bc;" goto statement_identifier ;)) })) (while_statement "while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }" while (parenthesized_expression "((bVar12 & 0xc0) == 0x80)" ( (binary_expression "(bVar12 & 0xc0) == 0x80" (parenthesized_expression "(bVar12 & 0xc0)" ( (binary_expression "bVar12 & 0xc0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }" { (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar5;" (assignment_expression "bVar12 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) })) (expression_statement "iVar14 = iVar10 + 1;" (assignment_expression "iVar14 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) ;) (labeled_statement "LAB_000655bc:\n    uVar8 = iVar10 + 1;" statement_identifier : (expression_statement "uVar8 = iVar10 + 1;" (assignment_expression "uVar8 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;)) (expression_statement "puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));" (assignment_expression "puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f))" identifier = (cast_expression "(undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f))" identifier (argument_list "(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f))" ( identifier , number_literal , (binary_expression "(uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f)" (binary_expression "(uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2)" (call_expression "(uint)(uVar8 * 5 < uVar8 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 * 5 < uVar8 * 4)" ( (binary_expression "uVar8 * 5 < uVar8 * 4" (binary_expression "uVar8 * 5" identifier * number_literal) < (binary_expression "uVar8 * 4" identifier * number_literal)) ))) + (parenthesized_expression "(uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2)" ( (binary_expression "uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2" (binary_expression "uVar8 >> 0x1e" identifier >> number_literal) | (binary_expression "((int)uVar8 >> 0x1f) << 2" (parenthesized_expression "((int)uVar8 >> 0x1f)" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) << number_literal)) ))) + (parenthesized_expression "((int)uVar8 >> 0x1f)" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) ))))) ;) (if_statement "if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }" if (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" ( (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "pbVar5 = (byte *)(puVar6 + uVar8);" (assignment_expression "pbVar5 = (byte *)(puVar6 + uVar8)" identifier = (cast_expression "(byte *)(puVar6 + uVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + uVar8)" ( (binary_expression "puVar6 + uVar8" identifier + identifier) )))) ;) (if_statement "if (*local_30 == 0) goto LAB_000657d8;" if (parenthesized_expression "(*local_30 == 0)" ( (binary_expression "*local_30 == 0" (pointer_expression "*local_30" * identifier) == number_literal) )) (goto_statement "goto LAB_000657d8;" goto statement_identifier ;)) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "pbVar13 = local_30;" (assignment_expression "pbVar13 = local_30" identifier = identifier) ;) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" identifier = identifier) ;) (do_statement "do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);" do (compound_statement "{\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    }" { (expression_statement "*puVar11 = pbVar13;" (assignment_expression "*puVar11 = pbVar13" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "pbVar7 = pbVar13 + 1;" (assignment_expression "pbVar7 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }" if (parenthesized_expression "(*pbVar13 < 0xc0)" ( (binary_expression "*pbVar13 < 0xc0" (pointer_expression "*pbVar13" * identifier) < number_literal) )) (compound_statement "{\n        bVar12 = 1;\n      }" { (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }" else (compound_statement "{\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }" { (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" identifier = number_literal) ;) (expression_statement "bVar1 = pbVar13[1];" (assignment_expression "bVar1 = pbVar13[1]" identifier = (subscript_expression "pbVar13[1]" identifier [ number_literal ])) ;) (while_statement "while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }" while (parenthesized_expression "((bVar1 & 0xc0) == 0x80)" ( (binary_expression "(bVar1 & 0xc0) == 0x80" (parenthesized_expression "(bVar1 & 0xc0)" ( (binary_expression "bVar1 & 0xc0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }" { (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar12 = (char)pbVar7 - (char)pbVar13;" (assignment_expression "bVar12 = (char)pbVar7 - (char)pbVar13" identifier = (binary_expression "(char)pbVar7 - (char)pbVar13" (cast_expression "(char)pbVar7" ( (type_descriptor "char" primitive_type) ) identifier) - (cast_expression "(char)pbVar13" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "bVar1 = *pbVar7;" (assignment_expression "bVar1 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) })) }))) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "pbVar5[iVar14] = bVar12;" (assignment_expression "pbVar5[iVar14] = bVar12" (subscript_expression "pbVar5[iVar14]" identifier [ identifier ]) = identifier) ;) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar7;" (assignment_expression "pbVar13 = pbVar7" identifier = identifier) ;) }) while (parenthesized_expression "(*pbVar7 != 0)" ( (binary_expression "*pbVar7 != 0" (pointer_expression "*pbVar7" * identifier) != number_literal) )) ;) }))) (expression_statement "uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1);" (assignment_expression "uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1)" identifier = (call_expression "(*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1)" (parenthesized_expression "(*(code *)PTR_sqlite3_user_data_0015b6c8)" ( (pointer_expression "*(code *)PTR_sqlite3_user_data_0015b6c8" * (cast_expression "(code *)PTR_sqlite3_user_data_0015b6c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }" if (parenthesized_expression "((uVar8 & 1) == 0)" ( (binary_expression "(uVar8 & 1) == 0" (parenthesized_expression "(uVar8 & 1)" ( (binary_expression "uVar8 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }\n  }" { (if_statement "if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }" if (parenthesized_expression "(((uVar8 & 2) != 0) && (0 < (int)uVar4))" ( (binary_expression "((uVar8 & 2) != 0) && (0 < (int)uVar4)" (parenthesized_expression "((uVar8 & 2) != 0)" ( (binary_expression "(uVar8 & 2) != 0" (parenthesized_expression "(uVar8 & 2)" ( (binary_expression "uVar8 & 2" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(0 < (int)uVar4)" ( (binary_expression "0 < (int)uVar4" number_literal < (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }" { (do_statement "do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);" do (compound_statement "{\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      }" { (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" identifier = identifier) ;) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" identifier = identifier) ;) (while_statement "while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }" { (expression_statement "uVar9 = (uint)*pbVar13;" (assignment_expression "uVar9 = (uint)*pbVar13" identifier = (binary_expression "(uint)*pbVar13" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar4 - uVar9;" (assignment_expression "uVar8 = uVar4 - uVar9" identifier = (binary_expression "uVar4 - uVar9" identifier - identifier)) ;) (if_statement "if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;" if (parenthesized_expression "(((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0))" ( (binary_expression "((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)" (parenthesized_expression "((int)uVar9 <= (int)uVar4)" ( (binary_expression "(int)uVar9 <= (int)uVar4" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)" ( (comma_expression "iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0" (assignment_expression "iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9)" identifier = (call_expression "(*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9)" (parenthesized_expression "(*(code *)PTR_memcmp_0015ba1c)" ( (pointer_expression "*(code *)PTR_memcmp_0015ba1c" * (cast_expression "(code *)PTR_memcmp_0015ba1c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar3 + uVar8,*puVar11,uVar9)" ( (binary_expression "iVar3 + uVar8" identifier + identifier) , (pointer_expression "*puVar11" * identifier) , identifier )))) , (comma_expression "uVar9 = uVar8,\n             iVar10 == 0" (assignment_expression "uVar9 = uVar8" identifier = identifier) , (binary_expression "iVar10 == 0" identifier == number_literal))) ))) )) (break_statement "break;" break ;)) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;" if (parenthesized_expression "(pbVar13 == pbVar5 + iVar14)" ( (binary_expression "pbVar13 == pbVar5 + iVar14" identifier == (binary_expression "pbVar5 + iVar14" identifier + identifier)) )) (goto_statement "goto LAB_000657c4;" goto statement_identifier ;)) })) (labeled_statement "joined_r0x000657b8:\n        uVar4 = uVar9;" statement_identifier : (expression_statement "uVar4 = uVar9;" (assignment_expression "uVar4 = uVar9" identifier = identifier) ;)) }) while (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) ;) })) }) (else_clause "else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }" else (compound_statement "{\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }" { (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" identifier = identifier) ;) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" identifier = identifier) ;) (if_statement "if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }" if (parenthesized_expression "(0 < (int)uVar4)" ( (binary_expression "0 < (int)uVar4" number_literal < (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }" { (do_statement "do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);" do (compound_statement "{\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      }" { (while_statement "while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }" { (expression_statement "uVar9 = (uint)*pbVar13;" (assignment_expression "uVar9 = (uint)*pbVar13" identifier = (binary_expression "(uint)*pbVar13" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;" if (parenthesized_expression "(((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0))" ( (binary_expression "((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)" (parenthesized_expression "((int)uVar9 <= (int)uVar4)" ( (binary_expression "(int)uVar9 <= (int)uVar4" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)" ( (comma_expression "iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0" (assignment_expression "iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9)" identifier = (call_expression "(*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9)" (parenthesized_expression "(*(code *)PTR_memcmp_0015ba1c)" ( (pointer_expression "*(code *)PTR_memcmp_0015ba1c" * (cast_expression "(code *)PTR_memcmp_0015ba1c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar3,*puVar11,uVar9)" ( identifier , (pointer_expression "*puVar11" * identifier) , identifier )))) , (binary_expression "iVar10 == 0" identifier == number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }" if (parenthesized_expression "(pbVar5 + iVar14 == pbVar13)" ( (binary_expression "pbVar5 + iVar14 == pbVar13" (binary_expression "pbVar5 + iVar14" identifier + identifier) == identifier) )) (compound_statement "{\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }" { (expression_statement "uVar8 = uVar8 & 2;" (assignment_expression "uVar8 = uVar8 & 2" identifier = (binary_expression "uVar8 & 2" identifier & number_literal)) ;) (expression_statement "uVar9 = uVar4;" (assignment_expression "uVar9 = uVar4" identifier = identifier) ;) (goto_statement "goto joined_r0x000657b8;" goto statement_identifier ;) })) })) (expression_statement "uVar4 = uVar4 - uVar9;" (assignment_expression "uVar4 = uVar4 - uVar9" identifier = (binary_expression "uVar4 - uVar9" identifier - identifier)) ;) (expression_statement "iVar3 = iVar3 + uVar9;" (assignment_expression "iVar3 = iVar3 + uVar9" identifier = (binary_expression "iVar3 + uVar9" identifier + identifier)) ;) (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" identifier = identifier) ;) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" identifier = identifier) ;) }) while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) ;) })) }))) (labeled_statement "LAB_000657c4:\n  if (local_30 != (byte *)0x0) {\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }" statement_identifier : (if_statement "if (local_30 != (byte *)0x0) {\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }" if (parenthesized_expression "(local_30 != (byte *)0x0)" ( (binary_expression "local_30 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }" { (expression_statement "(*(code *)PTR_sqlite3_free_0015b620)(puVar6);" (call_expression "(*(code *)PTR_sqlite3_free_0015b620)(puVar6)" (parenthesized_expression "(*(code *)PTR_sqlite3_free_0015b620)" ( (pointer_expression "*(code *)PTR_sqlite3_free_0015b620" * (cast_expression "(code *)PTR_sqlite3_free_0015b620" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar6)" ( identifier ))) ;) }))) (labeled_statement "LAB_000657d8:\n  sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);" statement_identifier : (expression_statement "sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);" (call_expression "sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff)" identifier (argument_list "(param_1,iVar3,uVar4,0xffffffff)" ( identifier , identifier , identifier , number_literal ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void trimFunc(sqlite3_context *context,int argc,sqlite3_value **argv)\n\n{\n  undefined4 *puVar1;\n  byte bVar2;\n  bool bVar3;\n  int iVar4;\n  uchar *z;\n  uint n;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  byte *pbVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  byte *pbVar13;\n  undefined1 *puVar14;\n  undefined1 *puVar15;\n  undefined4 in_stack_ffffffcc;\n  byte *pbStack_30;\n  \n  puVar14 = &_gp;\n  iVar4 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*argv);\n  if ((iVar4 == 5) || (z = sqlite3_value_text(*argv), z == (uchar *)0x0)) {\n    return;\n  }\n  n = sqlite3_value_bytes(*argv);\n  if (argc == 1) {\n    pbStack_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(*(int *)(puVar14 + -0x7fd8) + -0x7168);\n    pbVar5 = (byte *)(*(int *)(puVar14 + -0x7fb4) + 0x2a10);\n    iVar4 = 1;\n  }\n  else {\n    pbStack_30 = sqlite3_value_text(argv[1]);\n    if (pbStack_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *pbStack_30;\n    pbVar5 = pbStack_30;\n    iVar4 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar4;\n        bVar3 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar3) break;\n        iVar4 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar4 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    puVar6 = (undefined4 *)contextMalloc(context,CONCAT44(puVar14,in_stack_ffffffcc));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + iVar10 + 1);\n    if (*pbStack_30 == 0) goto LAB_000657d8;\n    iVar4 = 0;\n    pbVar13 = pbStack_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar2 = pbVar13[1];\n        while ((bVar2 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar2 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar4] = bVar12;\n      iVar4 = iVar4 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }\n  uVar8 = (**(code **)(puVar14 + -0x7ee8))(context);\n  puVar15 = puVar14;\n  if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)n)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          uVar8 = n - uVar9;\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar4) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        n = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)n) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar4 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = n;\n            goto joined_r0x000657b8;\n          }\n        }\n        n = n - uVar9;\n        z = z + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (n != 0);\n    }\n  }\nLAB_000657c4:\n  if (pbStack_30 != (byte *)0x0) {\n    (**(code **)(puVar14 + -0x7f90))(puVar6);\n  }\nLAB_000657d8:\n  sqlite3_result_text(context,(char *)z,n,(_func_void_void_ptr *)0xffffffff);\n  return;\n}\n\n" (function_definition "void trimFunc(sqlite3_context *context,int argc,sqlite3_value **argv)\n\n{\n  undefined4 *puVar1;\n  byte bVar2;\n  bool bVar3;\n  int iVar4;\n  uchar *z;\n  uint n;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  byte *pbVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  byte *pbVar13;\n  undefined1 *puVar14;\n  undefined1 *puVar15;\n  undefined4 in_stack_ffffffcc;\n  byte *pbStack_30;\n  \n  puVar14 = &_gp;\n  iVar4 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*argv);\n  if ((iVar4 == 5) || (z = sqlite3_value_text(*argv), z == (uchar *)0x0)) {\n    return;\n  }\n  n = sqlite3_value_bytes(*argv);\n  if (argc == 1) {\n    pbStack_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(*(int *)(puVar14 + -0x7fd8) + -0x7168);\n    pbVar5 = (byte *)(*(int *)(puVar14 + -0x7fb4) + 0x2a10);\n    iVar4 = 1;\n  }\n  else {\n    pbStack_30 = sqlite3_value_text(argv[1]);\n    if (pbStack_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *pbStack_30;\n    pbVar5 = pbStack_30;\n    iVar4 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar4;\n        bVar3 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar3) break;\n        iVar4 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar4 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    puVar6 = (undefined4 *)contextMalloc(context,CONCAT44(puVar14,in_stack_ffffffcc));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + iVar10 + 1);\n    if (*pbStack_30 == 0) goto LAB_000657d8;\n    iVar4 = 0;\n    pbVar13 = pbStack_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar2 = pbVar13[1];\n        while ((bVar2 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar2 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar4] = bVar12;\n      iVar4 = iVar4 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }\n  uVar8 = (**(code **)(puVar14 + -0x7ee8))(context);\n  puVar15 = puVar14;\n  if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)n)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          uVar8 = n - uVar9;\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar4) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        n = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)n) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar4 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = n;\n            goto joined_r0x000657b8;\n          }\n        }\n        n = n - uVar9;\n        z = z + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (n != 0);\n    }\n  }\nLAB_000657c4:\n  if (pbStack_30 != (byte *)0x0) {\n    (**(code **)(puVar14 + -0x7f90))(puVar6);\n  }\nLAB_000657d8:\n  sqlite3_result_text(context,(char *)z,n,(_func_void_void_ptr *)0xffffffff);\n  return;\n}" primitive_type (function_declarator "trimFunc(sqlite3_context *context,int argc,sqlite3_value **argv)" identifier (parameter_list "(sqlite3_context *context,int argc,sqlite3_value **argv)" ( (parameter_declaration "sqlite3_context *context" type_identifier (pointer_declarator "*context" * identifier)) , (parameter_declaration "int argc" primitive_type identifier) , (parameter_declaration "sqlite3_value **argv" type_identifier (pointer_declarator "**argv" * (pointer_declarator "*argv" * identifier))) ))) (compound_statement "{\n  undefined4 *puVar1;\n  byte bVar2;\n  bool bVar3;\n  int iVar4;\n  uchar *z;\n  uint n;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  byte *pbVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  byte *pbVar13;\n  undefined1 *puVar14;\n  undefined1 *puVar15;\n  undefined4 in_stack_ffffffcc;\n  byte *pbStack_30;\n  \n  puVar14 = &_gp;\n  iVar4 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*argv);\n  if ((iVar4 == 5) || (z = sqlite3_value_text(*argv), z == (uchar *)0x0)) {\n    return;\n  }\n  n = sqlite3_value_bytes(*argv);\n  if (argc == 1) {\n    pbStack_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(*(int *)(puVar14 + -0x7fd8) + -0x7168);\n    pbVar5 = (byte *)(*(int *)(puVar14 + -0x7fb4) + 0x2a10);\n    iVar4 = 1;\n  }\n  else {\n    pbStack_30 = sqlite3_value_text(argv[1]);\n    if (pbStack_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *pbStack_30;\n    pbVar5 = pbStack_30;\n    iVar4 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar4;\n        bVar3 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar3) break;\n        iVar4 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar4 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    puVar6 = (undefined4 *)contextMalloc(context,CONCAT44(puVar14,in_stack_ffffffcc));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + iVar10 + 1);\n    if (*pbStack_30 == 0) goto LAB_000657d8;\n    iVar4 = 0;\n    pbVar13 = pbStack_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar2 = pbVar13[1];\n        while ((bVar2 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar2 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar4] = bVar12;\n      iVar4 = iVar4 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }\n  uVar8 = (**(code **)(puVar14 + -0x7ee8))(context);\n  puVar15 = puVar14;\n  if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)n)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          uVar8 = n - uVar9;\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar4) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        n = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)n) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar4 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = n;\n            goto joined_r0x000657b8;\n          }\n        }\n        n = n - uVar9;\n        z = z + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (n != 0);\n    }\n  }\nLAB_000657c4:\n  if (pbStack_30 != (byte *)0x0) {\n    (**(code **)(puVar14 + -0x7f90))(puVar6);\n  }\nLAB_000657d8:\n  sqlite3_result_text(context,(char *)z,n,(_func_void_void_ptr *)0xffffffff);\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uchar *z;" type_identifier (pointer_declarator "*z" * identifier) ;) (declaration "uint n;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "undefined1 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined4 in_stack_ffffffcc;" type_identifier identifier ;) (declaration "byte *pbStack_30;" type_identifier (pointer_declarator "*pbStack_30" * identifier) ;) (expression_statement "puVar14 = &_gp;" (assignment_expression "puVar14 = &_gp" identifier = (pointer_expression "&_gp" & identifier)) ;) (expression_statement "iVar4 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*argv);" (assignment_expression "iVar4 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*argv)" identifier = (call_expression "(*(code *)PTR_sqlite3_value_type_0015b5f8)(*argv)" (parenthesized_expression "(*(code *)PTR_sqlite3_value_type_0015b5f8)" ( (pointer_expression "*(code *)PTR_sqlite3_value_type_0015b5f8" * (cast_expression "(code *)PTR_sqlite3_value_type_0015b5f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*argv)" ( (pointer_expression "*argv" * identifier) )))) ;) (if_statement "if ((iVar4 == 5) || (z = sqlite3_value_text(*argv), z == (uchar *)0x0)) {\n    return;\n  }" if (parenthesized_expression "((iVar4 == 5) || (z = sqlite3_value_text(*argv), z == (uchar *)0x0))" ( (binary_expression "(iVar4 == 5) || (z = sqlite3_value_text(*argv), z == (uchar *)0x0)" (parenthesized_expression "(iVar4 == 5)" ( (binary_expression "iVar4 == 5" identifier == number_literal) )) || (parenthesized_expression "(z = sqlite3_value_text(*argv), z == (uchar *)0x0)" ( (comma_expression "z = sqlite3_value_text(*argv), z == (uchar *)0x0" (assignment_expression "z = sqlite3_value_text(*argv)" identifier = (call_expression "sqlite3_value_text(*argv)" identifier (argument_list "(*argv)" ( (pointer_expression "*argv" * identifier) )))) , (binary_expression "z == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "n = sqlite3_value_bytes(*argv);" (assignment_expression "n = sqlite3_value_bytes(*argv)" identifier = (call_expression "sqlite3_value_bytes(*argv)" identifier (argument_list "(*argv)" ( (pointer_expression "*argv" * identifier) )))) ;) (if_statement "if (argc == 1) {\n    pbStack_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(*(int *)(puVar14 + -0x7fd8) + -0x7168);\n    pbVar5 = (byte *)(*(int *)(puVar14 + -0x7fb4) + 0x2a10);\n    iVar4 = 1;\n  }\n  else {\n    pbStack_30 = sqlite3_value_text(argv[1]);\n    if (pbStack_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *pbStack_30;\n    pbVar5 = pbStack_30;\n    iVar4 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar4;\n        bVar3 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar3) break;\n        iVar4 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar4 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    puVar6 = (undefined4 *)contextMalloc(context,CONCAT44(puVar14,in_stack_ffffffcc));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + iVar10 + 1);\n    if (*pbStack_30 == 0) goto LAB_000657d8;\n    iVar4 = 0;\n    pbVar13 = pbStack_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar2 = pbVar13[1];\n        while ((bVar2 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar2 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar4] = bVar12;\n      iVar4 = iVar4 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }" if (parenthesized_expression "(argc == 1)" ( (binary_expression "argc == 1" identifier == number_literal) )) (compound_statement "{\n    pbStack_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(*(int *)(puVar14 + -0x7fd8) + -0x7168);\n    pbVar5 = (byte *)(*(int *)(puVar14 + -0x7fb4) + 0x2a10);\n    iVar4 = 1;\n  }" { (expression_statement "pbStack_30 = (byte *)0x0;" (assignment_expression "pbStack_30 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar6 = (undefined4 *)(*(int *)(puVar14 + -0x7fd8) + -0x7168);" (assignment_expression "puVar6 = (undefined4 *)(*(int *)(puVar14 + -0x7fd8) + -0x7168)" identifier = (cast_expression "(undefined4 *)(*(int *)(puVar14 + -0x7fd8) + -0x7168)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar14 + -0x7fd8) + -0x7168)" ( (binary_expression "*(int *)(puVar14 + -0x7fd8) + -0x7168" (pointer_expression "*(int *)(puVar14 + -0x7fd8)" * (cast_expression "(int *)(puVar14 + -0x7fd8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x7fd8)" ( (binary_expression "puVar14 + -0x7fd8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar5 = (byte *)(*(int *)(puVar14 + -0x7fb4) + 0x2a10);" (assignment_expression "pbVar5 = (byte *)(*(int *)(puVar14 + -0x7fb4) + 0x2a10)" identifier = (cast_expression "(byte *)(*(int *)(puVar14 + -0x7fb4) + 0x2a10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar14 + -0x7fb4) + 0x2a10)" ( (binary_expression "*(int *)(puVar14 + -0x7fb4) + 0x2a10" (pointer_expression "*(int *)(puVar14 + -0x7fb4)" * (cast_expression "(int *)(puVar14 + -0x7fb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x7fb4)" ( (binary_expression "puVar14 + -0x7fb4" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    pbStack_30 = sqlite3_value_text(argv[1]);\n    if (pbStack_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *pbStack_30;\n    pbVar5 = pbStack_30;\n    iVar4 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar4;\n        bVar3 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar3) break;\n        iVar4 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar4 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    puVar6 = (undefined4 *)contextMalloc(context,CONCAT44(puVar14,in_stack_ffffffcc));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + iVar10 + 1);\n    if (*pbStack_30 == 0) goto LAB_000657d8;\n    iVar4 = 0;\n    pbVar13 = pbStack_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar2 = pbVar13[1];\n        while ((bVar2 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar2 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar4] = bVar12;\n      iVar4 = iVar4 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }" else (compound_statement "{\n    pbStack_30 = sqlite3_value_text(argv[1]);\n    if (pbStack_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *pbStack_30;\n    pbVar5 = pbStack_30;\n    iVar4 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar4;\n        bVar3 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar3) break;\n        iVar4 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar4 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    puVar6 = (undefined4 *)contextMalloc(context,CONCAT44(puVar14,in_stack_ffffffcc));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + iVar10 + 1);\n    if (*pbStack_30 == 0) goto LAB_000657d8;\n    iVar4 = 0;\n    pbVar13 = pbStack_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar2 = pbVar13[1];\n        while ((bVar2 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar2 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar4] = bVar12;\n      iVar4 = iVar4 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }" { (expression_statement "pbStack_30 = sqlite3_value_text(argv[1]);" (assignment_expression "pbStack_30 = sqlite3_value_text(argv[1])" identifier = (call_expression "sqlite3_value_text(argv[1])" identifier (argument_list "(argv[1])" ( (subscript_expression "argv[1]" identifier [ number_literal ]) )))) ;) (if_statement "if (pbStack_30 == (byte *)0x0) {\n      return;\n    }" if (parenthesized_expression "(pbStack_30 == (byte *)0x0)" ( (binary_expression "pbStack_30 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "bVar12 = *pbStack_30;" (assignment_expression "bVar12 = *pbStack_30" identifier = (pointer_expression "*pbStack_30" * identifier)) ;) (expression_statement "pbVar5 = pbStack_30;" (assignment_expression "pbVar5 = pbStack_30" identifier = identifier) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (if_statement "if (bVar12 == 0) goto LAB_000657d8;" if (parenthesized_expression "(bVar12 == 0)" ( (binary_expression "bVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000657d8;" goto statement_identifier ;)) (do_statement "do {\n      while( true ) {\n        iVar10 = iVar4;\n        bVar3 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar3) break;\n        iVar4 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar4 = iVar10 + 1;\n    } while (bVar12 != 0);" do (compound_statement "{\n      while( true ) {\n        iVar10 = iVar4;\n        bVar3 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar3) break;\n        iVar4 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar4 = iVar10 + 1;\n    }" { (while_statement "while( true ) {\n        iVar10 = iVar4;\n        bVar3 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar3) break;\n        iVar4 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar10 = iVar4;\n        bVar3 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar3) break;\n        iVar4 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }" { (expression_statement "iVar10 = iVar4;" (assignment_expression "iVar10 = iVar4" identifier = identifier) ;) (expression_statement "bVar3 = 0xbf < bVar12;" (assignment_expression "bVar3 = 0xbf < bVar12" identifier = (binary_expression "0xbf < bVar12" number_literal < identifier)) ;) (expression_statement "bVar12 = pbVar5[1];" (assignment_expression "bVar12 = pbVar5[1]" identifier = (subscript_expression "pbVar5[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (if_statement "if (bVar3) break;" if (parenthesized_expression "(bVar3)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar10 + 1;" (assignment_expression "iVar4 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (if_statement "if (bVar12 == 0) goto LAB_000655bc;" if (parenthesized_expression "(bVar12 == 0)" ( (binary_expression "bVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000655bc;" goto statement_identifier ;)) })) (while_statement "while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }" while (parenthesized_expression "((bVar12 & 0xc0) == 0x80)" ( (binary_expression "(bVar12 & 0xc0) == 0x80" (parenthesized_expression "(bVar12 & 0xc0)" ( (binary_expression "bVar12 & 0xc0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }" { (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar5;" (assignment_expression "bVar12 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) })) (expression_statement "iVar4 = iVar10 + 1;" (assignment_expression "iVar4 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) ;) (labeled_statement "LAB_000655bc:\n    puVar6 = (undefined4 *)contextMalloc(context,CONCAT44(puVar14,in_stack_ffffffcc));" statement_identifier : (expression_statement "puVar6 = (undefined4 *)contextMalloc(context,CONCAT44(puVar14,in_stack_ffffffcc));" (assignment_expression "puVar6 = (undefined4 *)contextMalloc(context,CONCAT44(puVar14,in_stack_ffffffcc))" identifier = (cast_expression "(undefined4 *)contextMalloc(context,CONCAT44(puVar14,in_stack_ffffffcc))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "contextMalloc(context,CONCAT44(puVar14,in_stack_ffffffcc))" identifier (argument_list "(context,CONCAT44(puVar14,in_stack_ffffffcc))" ( identifier , (call_expression "CONCAT44(puVar14,in_stack_ffffffcc)" identifier (argument_list "(puVar14,in_stack_ffffffcc)" ( identifier , identifier ))) ))))) ;)) (if_statement "if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }" if (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" ( (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "pbVar5 = (byte *)(puVar6 + iVar10 + 1);" (assignment_expression "pbVar5 = (byte *)(puVar6 + iVar10 + 1)" identifier = (cast_expression "(byte *)(puVar6 + iVar10 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + iVar10 + 1)" ( (binary_expression "puVar6 + iVar10 + 1" (binary_expression "puVar6 + iVar10" identifier + identifier) + number_literal) )))) ;) (if_statement "if (*pbStack_30 == 0) goto LAB_000657d8;" if (parenthesized_expression "(*pbStack_30 == 0)" ( (binary_expression "*pbStack_30 == 0" (pointer_expression "*pbStack_30" * identifier) == number_literal) )) (goto_statement "goto LAB_000657d8;" goto statement_identifier ;)) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "pbVar13 = pbStack_30;" (assignment_expression "pbVar13 = pbStack_30" identifier = identifier) ;) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" identifier = identifier) ;) (do_statement "do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar2 = pbVar13[1];\n        while ((bVar2 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar2 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar4] = bVar12;\n      iVar4 = iVar4 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);" do (compound_statement "{\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar2 = pbVar13[1];\n        while ((bVar2 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar2 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar4] = bVar12;\n      iVar4 = iVar4 + 1;\n      pbVar13 = pbVar7;\n    }" { (expression_statement "*puVar11 = pbVar13;" (assignment_expression "*puVar11 = pbVar13" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "pbVar7 = pbVar13 + 1;" (assignment_expression "pbVar7 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar2 = pbVar13[1];\n        while ((bVar2 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar2 = *pbVar7;\n        }\n      }" if (parenthesized_expression "(*pbVar13 < 0xc0)" ( (binary_expression "*pbVar13 < 0xc0" (pointer_expression "*pbVar13" * identifier) < number_literal) )) (compound_statement "{\n        bVar12 = 1;\n      }" { (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        bVar12 = 1;\n        bVar2 = pbVar13[1];\n        while ((bVar2 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar2 = *pbVar7;\n        }\n      }" else (compound_statement "{\n        bVar12 = 1;\n        bVar2 = pbVar13[1];\n        while ((bVar2 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar2 = *pbVar7;\n        }\n      }" { (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" identifier = number_literal) ;) (expression_statement "bVar2 = pbVar13[1];" (assignment_expression "bVar2 = pbVar13[1]" identifier = (subscript_expression "pbVar13[1]" identifier [ number_literal ])) ;) (while_statement "while ((bVar2 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar2 = *pbVar7;\n        }" while (parenthesized_expression "((bVar2 & 0xc0) == 0x80)" ( (binary_expression "(bVar2 & 0xc0) == 0x80" (parenthesized_expression "(bVar2 & 0xc0)" ( (binary_expression "bVar2 & 0xc0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar2 = *pbVar7;\n        }" { (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar12 = (char)pbVar7 - (char)pbVar13;" (assignment_expression "bVar12 = (char)pbVar7 - (char)pbVar13" identifier = (binary_expression "(char)pbVar7 - (char)pbVar13" (cast_expression "(char)pbVar7" ( (type_descriptor "char" primitive_type) ) identifier) - (cast_expression "(char)pbVar13" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "bVar2 = *pbVar7;" (assignment_expression "bVar2 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) })) }))) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "pbVar5[iVar4] = bVar12;" (assignment_expression "pbVar5[iVar4] = bVar12" (subscript_expression "pbVar5[iVar4]" identifier [ identifier ]) = identifier) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar7;" (assignment_expression "pbVar13 = pbVar7" identifier = identifier) ;) }) while (parenthesized_expression "(*pbVar7 != 0)" ( (binary_expression "*pbVar7 != 0" (pointer_expression "*pbVar7" * identifier) != number_literal) )) ;) }))) (expression_statement "uVar8 = (**(code **)(puVar14 + -0x7ee8))(context);" (assignment_expression "uVar8 = (**(code **)(puVar14 + -0x7ee8))(context)" identifier = (call_expression "(**(code **)(puVar14 + -0x7ee8))(context)" (parenthesized_expression "(**(code **)(puVar14 + -0x7ee8))" ( (pointer_expression "**(code **)(puVar14 + -0x7ee8)" * (pointer_expression "*(code **)(puVar14 + -0x7ee8)" * (cast_expression "(code **)(puVar14 + -0x7ee8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x7ee8)" ( (binary_expression "puVar14 + -0x7ee8" identifier + number_literal) ))))) )) (argument_list "(context)" ( identifier )))) ;) (expression_statement "puVar15 = puVar14;" (assignment_expression "puVar15 = puVar14" identifier = identifier) ;) (if_statement "if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)n)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          uVar8 = n - uVar9;\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar4) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        n = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)n) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar4 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = n;\n            goto joined_r0x000657b8;\n          }\n        }\n        n = n - uVar9;\n        z = z + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (n != 0);\n    }\n  }" if (parenthesized_expression "((uVar8 & 1) == 0)" ( (binary_expression "(uVar8 & 1) == 0" (parenthesized_expression "(uVar8 & 1)" ( (binary_expression "uVar8 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if (((uVar8 & 2) != 0) && (0 < (int)n)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          uVar8 = n - uVar9;\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar4) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        n = uVar9;\n      } while (uVar8 != 0);\n    }\n  }" { (if_statement "if (((uVar8 & 2) != 0) && (0 < (int)n)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          uVar8 = n - uVar9;\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar4) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        n = uVar9;\n      } while (uVar8 != 0);\n    }" if (parenthesized_expression "(((uVar8 & 2) != 0) && (0 < (int)n))" ( (binary_expression "((uVar8 & 2) != 0) && (0 < (int)n)" (parenthesized_expression "((uVar8 & 2) != 0)" ( (binary_expression "(uVar8 & 2) != 0" (parenthesized_expression "(uVar8 & 2)" ( (binary_expression "uVar8 & 2" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(0 < (int)n)" ( (binary_expression "0 < (int)n" number_literal < (cast_expression "(int)n" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          uVar8 = n - uVar9;\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar4) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        n = uVar9;\n      } while (uVar8 != 0);\n    }" { (do_statement "do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          uVar8 = n - uVar9;\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar4) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        n = uVar9;\n      } while (uVar8 != 0);" do (compound_statement "{\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          uVar8 = n - uVar9;\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar4) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        n = uVar9;\n      }" { (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" identifier = identifier) ;) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" identifier = identifier) ;) (while_statement "while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          uVar8 = n - uVar9;\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar4) goto LAB_000657c4;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          uVar8 = n - uVar9;\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar4) goto LAB_000657c4;\n        }" { (expression_statement "uVar9 = (uint)*pbVar13;" (assignment_expression "uVar9 = (uint)*pbVar13" identifier = (binary_expression "(uint)*pbVar13" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar1 = (undefined4 *)(puVar14 + -0x7b94);" (assignment_expression "puVar1 = (undefined4 *)(puVar14 + -0x7b94)" identifier = (cast_expression "(undefined4 *)(puVar14 + -0x7b94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x7b94)" ( (binary_expression "puVar14 + -0x7b94" identifier + number_literal) )))) ;) (expression_statement "uVar8 = n - uVar9;" (assignment_expression "uVar8 = n - uVar9" identifier = (binary_expression "n - uVar9" identifier - identifier)) ;) (if_statement "if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)) break;" if (parenthesized_expression "(((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0))" ( (binary_expression "((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)" (parenthesized_expression "((int)uVar9 <= (int)n)" ( (binary_expression "(int)uVar9 <= (int)n" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)n" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0)" ( (comma_expression "puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0" (assignment_expression "puVar14 = puVar15" identifier = identifier) , (comma_expression "iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9),\n             puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0" (assignment_expression "iVar10 = (*(code *)*puVar1)(z + uVar8,*puVar11,uVar9)" identifier = (call_expression "(*(code *)*puVar1)(z + uVar8,*puVar11,uVar9)" (parenthesized_expression "(*(code *)*puVar1)" ( (pointer_expression "*(code *)*puVar1" * (cast_expression "(code *)*puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) )) (argument_list "(z + uVar8,*puVar11,uVar9)" ( (binary_expression "z + uVar8" identifier + identifier) , (pointer_expression "*puVar11" * identifier) , identifier )))) , (comma_expression "puVar15 = puVar14, uVar9 = uVar8, iVar10 == 0" (assignment_expression "puVar15 = puVar14" identifier = identifier) , (comma_expression "uVar9 = uVar8, iVar10 == 0" (assignment_expression "uVar9 = uVar8" identifier = identifier) , (binary_expression "iVar10 == 0" identifier == number_literal))))) ))) )) (break_statement "break;" break ;)) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar13 == pbVar5 + iVar4) goto LAB_000657c4;" if (parenthesized_expression "(pbVar13 == pbVar5 + iVar4)" ( (binary_expression "pbVar13 == pbVar5 + iVar4" identifier == (binary_expression "pbVar5 + iVar4" identifier + identifier)) )) (goto_statement "goto LAB_000657c4;" goto statement_identifier ;)) })) (labeled_statement "joined_r0x000657b8:\n        n = uVar9;" statement_identifier : (expression_statement "n = uVar9;" (assignment_expression "n = uVar9" identifier = identifier) ;)) }) while (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) ;) })) }) (else_clause "else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)n) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar4 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = n;\n            goto joined_r0x000657b8;\n          }\n        }\n        n = n - uVar9;\n        z = z + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (n != 0);\n    }\n  }" else (compound_statement "{\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)n) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar4 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = n;\n            goto joined_r0x000657b8;\n          }\n        }\n        n = n - uVar9;\n        z = z + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (n != 0);\n    }\n  }" { (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" identifier = identifier) ;) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" identifier = identifier) ;) (if_statement "if (0 < (int)n) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar4 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = n;\n            goto joined_r0x000657b8;\n          }\n        }\n        n = n - uVar9;\n        z = z + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (n != 0);\n    }" if (parenthesized_expression "(0 < (int)n)" ( (binary_expression "0 < (int)n" number_literal < (cast_expression "(int)n" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar4 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = n;\n            goto joined_r0x000657b8;\n          }\n        }\n        n = n - uVar9;\n        z = z + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (n != 0);\n    }" { (do_statement "do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar4 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = n;\n            goto joined_r0x000657b8;\n          }\n        }\n        n = n - uVar9;\n        z = z + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (n != 0);" do (compound_statement "{\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar4 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = n;\n            goto joined_r0x000657b8;\n          }\n        }\n        n = n - uVar9;\n        z = z + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      }" { (while_statement "while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar4 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = n;\n            goto joined_r0x000657b8;\n          }\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          puVar1 = (undefined4 *)(puVar14 + -0x7b94);\n          if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar4 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = n;\n            goto joined_r0x000657b8;\n          }\n        }" { (expression_statement "uVar9 = (uint)*pbVar13;" (assignment_expression "uVar9 = (uint)*pbVar13" identifier = (binary_expression "(uint)*pbVar13" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar1 = (undefined4 *)(puVar14 + -0x7b94);" (assignment_expression "puVar1 = (undefined4 *)(puVar14 + -0x7b94)" identifier = (cast_expression "(undefined4 *)(puVar14 + -0x7b94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x7b94)" ( (binary_expression "puVar14 + -0x7b94" identifier + number_literal) )))) ;) (if_statement "if (((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)) break;" if (parenthesized_expression "(((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0))" ( (binary_expression "((int)uVar9 <= (int)n) &&\n             (puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)" (parenthesized_expression "((int)uVar9 <= (int)n)" ( (binary_expression "(int)uVar9 <= (int)n" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)n" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0)" ( (comma_expression "puVar14 = puVar15, iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0" (assignment_expression "puVar14 = puVar15" identifier = identifier) , (comma_expression "iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9), puVar15 = puVar14,\n             iVar10 == 0" (assignment_expression "iVar10 = (*(code *)*puVar1)(z,*puVar11,uVar9)" identifier = (call_expression "(*(code *)*puVar1)(z,*puVar11,uVar9)" (parenthesized_expression "(*(code *)*puVar1)" ( (pointer_expression "*(code *)*puVar1" * (cast_expression "(code *)*puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) )) (argument_list "(z,*puVar11,uVar9)" ( identifier , (pointer_expression "*puVar11" * identifier) , identifier )))) , (comma_expression "puVar15 = puVar14,\n             iVar10 == 0" (assignment_expression "puVar15 = puVar14" identifier = identifier) , (binary_expression "iVar10 == 0" identifier == number_literal)))) ))) )) (break_statement "break;" break ;)) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar5 + iVar4 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = n;\n            goto joined_r0x000657b8;\n          }" if (parenthesized_expression "(pbVar5 + iVar4 == pbVar13)" ( (binary_expression "pbVar5 + iVar4 == pbVar13" (binary_expression "pbVar5 + iVar4" identifier + identifier) == identifier) )) (compound_statement "{\n            uVar8 = uVar8 & 2;\n            uVar9 = n;\n            goto joined_r0x000657b8;\n          }" { (expression_statement "uVar8 = uVar8 & 2;" (assignment_expression "uVar8 = uVar8 & 2" identifier = (binary_expression "uVar8 & 2" identifier & number_literal)) ;) (expression_statement "uVar9 = n;" (assignment_expression "uVar9 = n" identifier = identifier) ;) (goto_statement "goto joined_r0x000657b8;" goto statement_identifier ;) })) })) (expression_statement "n = n - uVar9;" (assignment_expression "n = n - uVar9" identifier = (binary_expression "n - uVar9" identifier - identifier)) ;) (expression_statement "z = z + uVar9;" (assignment_expression "z = z + uVar9" identifier = (binary_expression "z + uVar9" identifier + identifier)) ;) (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" identifier = identifier) ;) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" identifier = identifier) ;) }) while (parenthesized_expression "(n != 0)" ( (binary_expression "n != 0" identifier != number_literal) )) ;) })) }))) (labeled_statement "LAB_000657c4:\n  if (pbStack_30 != (byte *)0x0) {\n    (**(code **)(puVar14 + -0x7f90))(puVar6);\n  }" statement_identifier : (if_statement "if (pbStack_30 != (byte *)0x0) {\n    (**(code **)(puVar14 + -0x7f90))(puVar6);\n  }" if (parenthesized_expression "(pbStack_30 != (byte *)0x0)" ( (binary_expression "pbStack_30 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(puVar14 + -0x7f90))(puVar6);\n  }" { (expression_statement "(**(code **)(puVar14 + -0x7f90))(puVar6);" (call_expression "(**(code **)(puVar14 + -0x7f90))(puVar6)" (parenthesized_expression "(**(code **)(puVar14 + -0x7f90))" ( (pointer_expression "**(code **)(puVar14 + -0x7f90)" * (pointer_expression "*(code **)(puVar14 + -0x7f90)" * (cast_expression "(code **)(puVar14 + -0x7f90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + -0x7f90)" ( (binary_expression "puVar14 + -0x7f90" identifier + number_literal) ))))) )) (argument_list "(puVar6)" ( identifier ))) ;) }))) (labeled_statement "LAB_000657d8:\n  sqlite3_result_text(context,(char *)z,n,(_func_void_void_ptr *)0xffffffff);" statement_identifier : (expression_statement "sqlite3_result_text(context,(char *)z,n,(_func_void_void_ptr *)0xffffffff);" (call_expression "sqlite3_result_text(context,(char *)z,n,(_func_void_void_ptr *)0xffffffff)" identifier (argument_list "(context,(char *)z,n,(_func_void_void_ptr *)0xffffffff)" ( identifier , (cast_expression "(char *)z" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(_func_void_void_ptr *)0xffffffff" ( (type_descriptor "_func_void_void_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000654d8(undefined4 param_1,int param_2,undefined4 *param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  byte *pbVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  byte *pbVar13;\n  int iVar14;\n  byte *local_30;\n  \n  iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3);\n  if ((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)) {\n    return;\n  }\n  uVar4 = sqlite3_value_bytes(*param_3);\n  if (param_2 == 1) {\n    local_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);\n    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;\n    iVar14 = 1;\n  }\n  else {\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }\n  uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1);\n  if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }\nLAB_000657c4:\n  if (local_30 != (byte *)0x0) {\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }\nLAB_000657d8:\n  sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);\n  return;\n}\n\n" (function_definition "void FUN_000654d8(undefined4 param_1,int param_2,undefined4 *param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  byte *pbVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  byte *pbVar13;\n  int iVar14;\n  byte *local_30;\n  \n  iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3);\n  if ((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)) {\n    return;\n  }\n  uVar4 = sqlite3_value_bytes(*param_3);\n  if (param_2 == 1) {\n    local_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);\n    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;\n    iVar14 = 1;\n  }\n  else {\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }\n  uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1);\n  if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }\nLAB_000657c4:\n  if (local_30 != (byte *)0x0) {\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }\nLAB_000657d8:\n  sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);\n  return;\n}" primitive_type (function_declarator "FUN_000654d8(undefined4 param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  byte *pbVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  byte *pbVar13;\n  int iVar14;\n  byte *local_30;\n  \n  iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3);\n  if ((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)) {\n    return;\n  }\n  uVar4 = sqlite3_value_bytes(*param_3);\n  if (param_2 == 1) {\n    local_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);\n    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;\n    iVar14 = 1;\n  }\n  else {\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }\n  uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1);\n  if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }\nLAB_000657c4:\n  if (local_30 != (byte *)0x0) {\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }\nLAB_000657d8:\n  sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "byte *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (expression_statement "iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3);" (assignment_expression "iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3)" identifier = (call_expression "(*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3)" (parenthesized_expression "(*(code *)PTR_sqlite3_value_type_0015b5f8)" ( (pointer_expression "*(code *)PTR_sqlite3_value_type_0015b5f8" * (cast_expression "(code *)PTR_sqlite3_value_type_0015b5f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*param_3)" ( (pointer_expression "*param_3" * identifier) )))) ;) (if_statement "if ((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)) {\n    return;\n  }" if (parenthesized_expression "((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0))" ( (binary_expression "(iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)" (parenthesized_expression "(iVar3 == 5)" ( (binary_expression "iVar3 == 5" identifier == number_literal) )) || (parenthesized_expression "(iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)" ( (comma_expression "iVar3 = sqlite3_value_text(*param_3), iVar3 == 0" (assignment_expression "iVar3 = sqlite3_value_text(*param_3)" identifier = (call_expression "sqlite3_value_text(*param_3)" identifier (argument_list "(*param_3)" ( (pointer_expression "*param_3" * identifier) )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar4 = sqlite3_value_bytes(*param_3);" (assignment_expression "uVar4 = sqlite3_value_bytes(*param_3)" identifier = (call_expression "sqlite3_value_bytes(*param_3)" identifier (argument_list "(*param_3)" ( (pointer_expression "*param_3" * identifier) )))) ;) (if_statement "if (param_2 == 1) {\n    local_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);\n    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;\n    iVar14 = 1;\n  }\n  else {\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }" if (parenthesized_expression "(param_2 == 1)" ( (binary_expression "param_2 == 1" identifier == number_literal) )) (compound_statement "{\n    local_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);\n    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;\n    iVar14 = 1;\n  }" { (expression_statement "local_30 = (byte *)0x0;" (assignment_expression "local_30 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);" (assignment_expression "puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168)" identifier = (cast_expression "(undefined4 *)(PTR_DAT_0015b5d8 + -0x7168)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b5d8 + -0x7168)" ( (binary_expression "PTR_DAT_0015b5d8 + -0x7168" identifier + number_literal) )))) ;) (expression_statement "pbVar5 = PTR_UINT_0015b5fc + 0x2a10;" (assignment_expression "pbVar5 = PTR_UINT_0015b5fc + 0x2a10" identifier = (binary_expression "PTR_UINT_0015b5fc + 0x2a10" identifier + number_literal)) ;) (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }" else (compound_statement "{\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }" { (expression_statement "local_30 = (byte *)sqlite3_value_text(param_3[1]);" (assignment_expression "local_30 = (byte *)sqlite3_value_text(param_3[1])" identifier = (cast_expression "(byte *)sqlite3_value_text(param_3[1])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3_value_text(param_3[1])" identifier (argument_list "(param_3[1])" ( (subscript_expression "param_3[1]" identifier [ number_literal ]) ))))) ;) (if_statement "if (local_30 == (byte *)0x0) {\n      return;\n    }" if (parenthesized_expression "(local_30 == (byte *)0x0)" ( (binary_expression "local_30 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "bVar12 = *local_30;" (assignment_expression "bVar12 = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;) (expression_statement "pbVar5 = local_30;" (assignment_expression "pbVar5 = local_30" identifier = identifier) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (if_statement "if (bVar12 == 0) goto LAB_000657d8;" if (parenthesized_expression "(bVar12 == 0)" ( (binary_expression "bVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000657d8;" goto statement_identifier ;)) (do_statement "do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);" do (compound_statement "{\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    }" { (while_statement "while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }" { (expression_statement "iVar10 = iVar14;" (assignment_expression "iVar10 = iVar14" identifier = identifier) ;) (expression_statement "bVar2 = 0xbf < bVar12;" (assignment_expression "bVar2 = 0xbf < bVar12" identifier = (binary_expression "0xbf < bVar12" number_literal < identifier)) ;) (expression_statement "bVar12 = pbVar5[1];" (assignment_expression "bVar12 = pbVar5[1]" identifier = (subscript_expression "pbVar5[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (if_statement "if (bVar2) break;" if (parenthesized_expression "(bVar2)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "iVar14 = iVar10 + 1;" (assignment_expression "iVar14 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (if_statement "if (bVar12 == 0) goto LAB_000655bc;" if (parenthesized_expression "(bVar12 == 0)" ( (binary_expression "bVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000655bc;" goto statement_identifier ;)) })) (while_statement "while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }" while (parenthesized_expression "((bVar12 & 0xc0) == 0x80)" ( (binary_expression "(bVar12 & 0xc0) == 0x80" (parenthesized_expression "(bVar12 & 0xc0)" ( (binary_expression "bVar12 & 0xc0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }" { (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar5;" (assignment_expression "bVar12 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) })) (expression_statement "iVar14 = iVar10 + 1;" (assignment_expression "iVar14 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) ;) (labeled_statement "LAB_000655bc:\n    uVar8 = iVar10 + 1;" statement_identifier : (expression_statement "uVar8 = iVar10 + 1;" (assignment_expression "uVar8 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;)) (expression_statement "puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));" (assignment_expression "puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f))" identifier = (cast_expression "(undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f))" identifier (argument_list "(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f))" ( identifier , number_literal , (binary_expression "(uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f)" (binary_expression "(uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2)" (call_expression "(uint)(uVar8 * 5 < uVar8 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 * 5 < uVar8 * 4)" ( (binary_expression "uVar8 * 5 < uVar8 * 4" (binary_expression "uVar8 * 5" identifier * number_literal) < (binary_expression "uVar8 * 4" identifier * number_literal)) ))) + (parenthesized_expression "(uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2)" ( (binary_expression "uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2" (binary_expression "uVar8 >> 0x1e" identifier >> number_literal) | (binary_expression "((int)uVar8 >> 0x1f) << 2" (parenthesized_expression "((int)uVar8 >> 0x1f)" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) << number_literal)) ))) + (parenthesized_expression "((int)uVar8 >> 0x1f)" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) ))))) ;) (if_statement "if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }" if (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" ( (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "pbVar5 = (byte *)(puVar6 + uVar8);" (assignment_expression "pbVar5 = (byte *)(puVar6 + uVar8)" identifier = (cast_expression "(byte *)(puVar6 + uVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + uVar8)" ( (binary_expression "puVar6 + uVar8" identifier + identifier) )))) ;) (if_statement "if (*local_30 == 0) goto LAB_000657d8;" if (parenthesized_expression "(*local_30 == 0)" ( (binary_expression "*local_30 == 0" (pointer_expression "*local_30" * identifier) == number_literal) )) (goto_statement "goto LAB_000657d8;" goto statement_identifier ;)) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "pbVar13 = local_30;" (assignment_expression "pbVar13 = local_30" identifier = identifier) ;) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" identifier = identifier) ;) (do_statement "do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);" do (compound_statement "{\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    }" { (expression_statement "*puVar11 = pbVar13;" (assignment_expression "*puVar11 = pbVar13" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "pbVar7 = pbVar13 + 1;" (assignment_expression "pbVar7 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }" if (parenthesized_expression "(*pbVar13 < 0xc0)" ( (binary_expression "*pbVar13 < 0xc0" (pointer_expression "*pbVar13" * identifier) < number_literal) )) (compound_statement "{\n        bVar12 = 1;\n      }" { (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }" else (compound_statement "{\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }" { (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" identifier = number_literal) ;) (expression_statement "bVar1 = pbVar13[1];" (assignment_expression "bVar1 = pbVar13[1]" identifier = (subscript_expression "pbVar13[1]" identifier [ number_literal ])) ;) (while_statement "while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }" while (parenthesized_expression "((bVar1 & 0xc0) == 0x80)" ( (binary_expression "(bVar1 & 0xc0) == 0x80" (parenthesized_expression "(bVar1 & 0xc0)" ( (binary_expression "bVar1 & 0xc0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }" { (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar12 = (char)pbVar7 - (char)pbVar13;" (assignment_expression "bVar12 = (char)pbVar7 - (char)pbVar13" identifier = (binary_expression "(char)pbVar7 - (char)pbVar13" (cast_expression "(char)pbVar7" ( (type_descriptor "char" primitive_type) ) identifier) - (cast_expression "(char)pbVar13" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "bVar1 = *pbVar7;" (assignment_expression "bVar1 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) })) }))) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "pbVar5[iVar14] = bVar12;" (assignment_expression "pbVar5[iVar14] = bVar12" (subscript_expression "pbVar5[iVar14]" identifier [ identifier ]) = identifier) ;) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar7;" (assignment_expression "pbVar13 = pbVar7" identifier = identifier) ;) }) while (parenthesized_expression "(*pbVar7 != 0)" ( (binary_expression "*pbVar7 != 0" (pointer_expression "*pbVar7" * identifier) != number_literal) )) ;) }))) (expression_statement "uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1);" (assignment_expression "uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1)" identifier = (call_expression "(*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1)" (parenthesized_expression "(*(code *)PTR_sqlite3_user_data_0015b6c8)" ( (pointer_expression "*(code *)PTR_sqlite3_user_data_0015b6c8" * (cast_expression "(code *)PTR_sqlite3_user_data_0015b6c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }" if (parenthesized_expression "((uVar8 & 1) == 0)" ( (binary_expression "(uVar8 & 1) == 0" (parenthesized_expression "(uVar8 & 1)" ( (binary_expression "uVar8 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }\n  }" { (if_statement "if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }" if (parenthesized_expression "(((uVar8 & 2) != 0) && (0 < (int)uVar4))" ( (binary_expression "((uVar8 & 2) != 0) && (0 < (int)uVar4)" (parenthesized_expression "((uVar8 & 2) != 0)" ( (binary_expression "(uVar8 & 2) != 0" (parenthesized_expression "(uVar8 & 2)" ( (binary_expression "uVar8 & 2" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(0 < (int)uVar4)" ( (binary_expression "0 < (int)uVar4" number_literal < (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }" { (do_statement "do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);" do (compound_statement "{\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      }" { (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" identifier = identifier) ;) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" identifier = identifier) ;) (while_statement "while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }" { (expression_statement "uVar9 = (uint)*pbVar13;" (assignment_expression "uVar9 = (uint)*pbVar13" identifier = (binary_expression "(uint)*pbVar13" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar4 - uVar9;" (assignment_expression "uVar8 = uVar4 - uVar9" identifier = (binary_expression "uVar4 - uVar9" identifier - identifier)) ;) (if_statement "if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;" if (parenthesized_expression "(((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0))" ( (binary_expression "((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)" (parenthesized_expression "((int)uVar9 <= (int)uVar4)" ( (binary_expression "(int)uVar9 <= (int)uVar4" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)" ( (comma_expression "iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0" (assignment_expression "iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9)" identifier = (call_expression "(*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9)" (parenthesized_expression "(*(code *)PTR_memcmp_0015ba1c)" ( (pointer_expression "*(code *)PTR_memcmp_0015ba1c" * (cast_expression "(code *)PTR_memcmp_0015ba1c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar3 + uVar8,*puVar11,uVar9)" ( (binary_expression "iVar3 + uVar8" identifier + identifier) , (pointer_expression "*puVar11" * identifier) , identifier )))) , (comma_expression "uVar9 = uVar8,\n             iVar10 == 0" (assignment_expression "uVar9 = uVar8" identifier = identifier) , (binary_expression "iVar10 == 0" identifier == number_literal))) ))) )) (break_statement "break;" break ;)) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;" if (parenthesized_expression "(pbVar13 == pbVar5 + iVar14)" ( (binary_expression "pbVar13 == pbVar5 + iVar14" identifier == (binary_expression "pbVar5 + iVar14" identifier + identifier)) )) (goto_statement "goto LAB_000657c4;" goto statement_identifier ;)) })) (labeled_statement "joined_r0x000657b8:\n        uVar4 = uVar9;" statement_identifier : (expression_statement "uVar4 = uVar9;" (assignment_expression "uVar4 = uVar9" identifier = identifier) ;)) }) while (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) ;) })) }) (else_clause "else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }" else (compound_statement "{\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }" { (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" identifier = identifier) ;) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" identifier = identifier) ;) (if_statement "if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }" if (parenthesized_expression "(0 < (int)uVar4)" ( (binary_expression "0 < (int)uVar4" number_literal < (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }" { (do_statement "do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);" do (compound_statement "{\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      }" { (while_statement "while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }" { (expression_statement "uVar9 = (uint)*pbVar13;" (assignment_expression "uVar9 = (uint)*pbVar13" identifier = (binary_expression "(uint)*pbVar13" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;" if (parenthesized_expression "(((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0))" ( (binary_expression "((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)" (parenthesized_expression "((int)uVar9 <= (int)uVar4)" ( (binary_expression "(int)uVar9 <= (int)uVar4" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)" ( (comma_expression "iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0" (assignment_expression "iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9)" identifier = (call_expression "(*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9)" (parenthesized_expression "(*(code *)PTR_memcmp_0015ba1c)" ( (pointer_expression "*(code *)PTR_memcmp_0015ba1c" * (cast_expression "(code *)PTR_memcmp_0015ba1c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar3,*puVar11,uVar9)" ( identifier , (pointer_expression "*puVar11" * identifier) , identifier )))) , (binary_expression "iVar10 == 0" identifier == number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }" if (parenthesized_expression "(pbVar5 + iVar14 == pbVar13)" ( (binary_expression "pbVar5 + iVar14 == pbVar13" (binary_expression "pbVar5 + iVar14" identifier + identifier) == identifier) )) (compound_statement "{\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }" { (expression_statement "uVar8 = uVar8 & 2;" (assignment_expression "uVar8 = uVar8 & 2" identifier = (binary_expression "uVar8 & 2" identifier & number_literal)) ;) (expression_statement "uVar9 = uVar4;" (assignment_expression "uVar9 = uVar4" identifier = identifier) ;) (goto_statement "goto joined_r0x000657b8;" goto statement_identifier ;) })) })) (expression_statement "uVar4 = uVar4 - uVar9;" (assignment_expression "uVar4 = uVar4 - uVar9" identifier = (binary_expression "uVar4 - uVar9" identifier - identifier)) ;) (expression_statement "iVar3 = iVar3 + uVar9;" (assignment_expression "iVar3 = iVar3 + uVar9" identifier = (binary_expression "iVar3 + uVar9" identifier + identifier)) ;) (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" identifier = identifier) ;) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" identifier = identifier) ;) }) while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) ;) })) }))) (labeled_statement "LAB_000657c4:\n  if (local_30 != (byte *)0x0) {\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }" statement_identifier : (if_statement "if (local_30 != (byte *)0x0) {\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }" if (parenthesized_expression "(local_30 != (byte *)0x0)" ( (binary_expression "local_30 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }" { (expression_statement "(*(code *)PTR_sqlite3_free_0015b620)(puVar6);" (call_expression "(*(code *)PTR_sqlite3_free_0015b620)(puVar6)" (parenthesized_expression "(*(code *)PTR_sqlite3_free_0015b620)" ( (pointer_expression "*(code *)PTR_sqlite3_free_0015b620" * (cast_expression "(code *)PTR_sqlite3_free_0015b620" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar6)" ( identifier ))) ;) }))) (labeled_statement "LAB_000657d8:\n  sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);" statement_identifier : (expression_statement "sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);" (call_expression "sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff)" identifier (argument_list "(param_1,iVar3,uVar4,0xffffffff)" ( identifier , identifier , identifier , number_literal ))) ;)) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (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 ;)) })) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT , (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 (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) << LIT)) ))) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + IDENT) , (pointer_expression * IDENT) , IDENT )))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT))) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + IDENT)) )) (goto_statement goto statement_identifier ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (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 , (pointer_expression * IDENT) , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT ))) ;)) (return_statement return ;) })))
(function_definition "void FUN_000654d8(undefined4 param_1,int param_2,undefined4 *param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  byte *pbVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  byte *pbVar13;\n  int iVar14;\n  byte *local_30;\n  \n  iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3);\n  if ((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)) {\n    return;\n  }\n  uVar4 = sqlite3_value_bytes(*param_3);\n  if (param_2 == 1) {\n    local_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);\n    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;\n    iVar14 = 1;\n  }\n  else {\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }\n  uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1);\n  if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }\nLAB_000657c4:\n  if (local_30 != (byte *)0x0) {\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }\nLAB_000657d8:\n  sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000654d8(undefined4 param_1,int param_2,undefined4 *param_3)" (identifier "FUN_000654d8") (parameter_list "(undefined4 param_1,int param_2,undefined4 *param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  byte *pbVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  byte *pbVar13;\n  int iVar14;\n  byte *local_30;\n  \n  iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3);\n  if ((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)) {\n    return;\n  }\n  uVar4 = sqlite3_value_bytes(*param_3);\n  if (param_2 == 1) {\n    local_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);\n    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;\n    iVar14 = 1;\n  }\n  else {\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }\n  uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1);\n  if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }\nLAB_000657c4:\n  if (local_30 != (byte *)0x0) {\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }\nLAB_000657d8:\n  sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "byte bVar12;" (type_identifier "byte") (identifier "bVar12") (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "byte *local_30;" (type_identifier "byte") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3);" (assignment_expression "iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3)" (parenthesized_expression "(*(code *)PTR_sqlite3_value_type_0015b5f8)" (( "(") (pointer_expression "*(code *)PTR_sqlite3_value_type_0015b5f8" (* "*") (cast_expression "(code *)PTR_sqlite3_value_type_0015b5f8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_sqlite3_value_type_0015b5f8"))) () ")")) (argument_list "(*param_3)" (( "(") (pointer_expression "*param_3" (* "*") (identifier "param_3")) () ")")))) (; ";")) (if_statement "if ((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)) {\n    return;\n  }" (if "if") (parenthesized_expression "((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0))" (( "(") (binary_expression "(iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)" (parenthesized_expression "(iVar3 == 5)" (( "(") (binary_expression "iVar3 == 5" (identifier "iVar3") (== "==") (number_literal "5")) () ")")) (|| "||") (parenthesized_expression "(iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)" (( "(") (comma_expression "iVar3 = sqlite3_value_text(*param_3), iVar3 == 0" (assignment_expression "iVar3 = sqlite3_value_text(*param_3)" (identifier "iVar3") (= "=") (call_expression "sqlite3_value_text(*param_3)" (identifier "sqlite3_value_text") (argument_list "(*param_3)" (( "(") (pointer_expression "*param_3" (* "*") (identifier "param_3")) () ")")))) (, ",") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar4 = sqlite3_value_bytes(*param_3);" (assignment_expression "uVar4 = sqlite3_value_bytes(*param_3)" (identifier "uVar4") (= "=") (call_expression "sqlite3_value_bytes(*param_3)" (identifier "sqlite3_value_bytes") (argument_list "(*param_3)" (( "(") (pointer_expression "*param_3" (* "*") (identifier "param_3")) () ")")))) (; ";")) (if_statement "if (param_2 == 1) {\n    local_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);\n    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;\n    iVar14 = 1;\n  }\n  else {\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }" (if "if") (parenthesized_expression "(param_2 == 1)" (( "(") (binary_expression "param_2 == 1" (identifier "param_2") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    local_30 = (byte *)0x0;\n    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);\n    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;\n    iVar14 = 1;\n  }" ({ "{") (expression_statement "local_30 = (byte *)0x0;" (assignment_expression "local_30 = (byte *)0x0" (identifier "local_30") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);" (assignment_expression "puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168)" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)(PTR_DAT_0015b5d8 + -0x7168)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0015b5d8 + -0x7168)" (( "(") (binary_expression "PTR_DAT_0015b5d8 + -0x7168" (identifier "PTR_DAT_0015b5d8") (+ "+") (number_literal "-0x7168")) () ")")))) (; ";")) (expression_statement "pbVar5 = PTR_UINT_0015b5fc + 0x2a10;" (assignment_expression "pbVar5 = PTR_UINT_0015b5fc + 0x2a10" (identifier "pbVar5") (= "=") (binary_expression "PTR_UINT_0015b5fc + 0x2a10" (identifier "PTR_UINT_0015b5fc") (+ "+") (number_literal "0x2a10"))) (; ";")) (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" (identifier "iVar14") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }" (else "else") (compound_statement "{\n    local_30 = (byte *)sqlite3_value_text(param_3[1]);\n    if (local_30 == (byte *)0x0) {\n      return;\n    }\n    bVar12 = *local_30;\n    pbVar5 = local_30;\n    iVar14 = 0;\n    if (bVar12 == 0) goto LAB_000657d8;\n    do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);\nLAB_000655bc:\n    uVar8 = iVar10 + 1;\n    puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));\n    if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }\n    pbVar5 = (byte *)(puVar6 + uVar8);\n    if (*local_30 == 0) goto LAB_000657d8;\n    iVar14 = 0;\n    pbVar13 = local_30;\n    puVar11 = puVar6;\n    do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);\n  }" ({ "{") (expression_statement "local_30 = (byte *)sqlite3_value_text(param_3[1]);" (assignment_expression "local_30 = (byte *)sqlite3_value_text(param_3[1])" (identifier "local_30") (= "=") (cast_expression "(byte *)sqlite3_value_text(param_3[1])" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "sqlite3_value_text(param_3[1])" (identifier "sqlite3_value_text") (argument_list "(param_3[1])" (( "(") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) () ")"))))) (; ";")) (if_statement "if (local_30 == (byte *)0x0) {\n      return;\n    }" (if "if") (parenthesized_expression "(local_30 == (byte *)0x0)" (( "(") (binary_expression "local_30 == (byte *)0x0" (identifier "local_30") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "bVar12 = *local_30;" (assignment_expression "bVar12 = *local_30" (identifier "bVar12") (= "=") (pointer_expression "*local_30" (* "*") (identifier "local_30"))) (; ";")) (expression_statement "pbVar5 = local_30;" (assignment_expression "pbVar5 = local_30" (identifier "pbVar5") (= "=") (identifier "local_30")) (; ";")) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (if_statement "if (bVar12 == 0) goto LAB_000657d8;" (if "if") (parenthesized_expression "(bVar12 == 0)" (( "(") (binary_expression "bVar12 == 0" (identifier "bVar12") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000657d8;" (goto "goto") (statement_identifier "LAB_000657d8") (; ";"))) (do_statement "do {\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    } while (bVar12 != 0);" (do "do") (compound_statement "{\n      while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }\n      while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }\n      iVar14 = iVar10 + 1;\n    }" ({ "{") (while_statement "while( true ) {\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        iVar10 = iVar14;\n        bVar2 = 0xbf < bVar12;\n        bVar12 = pbVar5[1];\n        pbVar5 = pbVar5 + 1;\n        if (bVar2) break;\n        iVar14 = iVar10 + 1;\n        if (bVar12 == 0) goto LAB_000655bc;\n      }" ({ "{") (expression_statement "iVar10 = iVar14;" (assignment_expression "iVar10 = iVar14" (identifier "iVar10") (= "=") (identifier "iVar14")) (; ";")) (expression_statement "bVar2 = 0xbf < bVar12;" (assignment_expression "bVar2 = 0xbf < bVar12" (identifier "bVar2") (= "=") (binary_expression "0xbf < bVar12" (number_literal "0xbf") (< "<") (identifier "bVar12"))) (; ";")) (expression_statement "bVar12 = pbVar5[1];" (assignment_expression "bVar12 = pbVar5[1]" (identifier "bVar12") (= "=") (subscript_expression "pbVar5[1]" (identifier "pbVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar2) break;" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar14 = iVar10 + 1;" (assignment_expression "iVar14 = iVar10 + 1" (identifier "iVar14") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar12 == 0) goto LAB_000655bc;" (if "if") (parenthesized_expression "(bVar12 == 0)" (( "(") (binary_expression "bVar12 == 0" (identifier "bVar12") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000655bc;" (goto "goto") (statement_identifier "LAB_000655bc") (; ";"))) (} "}"))) (while_statement "while ((bVar12 & 0xc0) == 0x80) {\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }" (while "while") (parenthesized_expression "((bVar12 & 0xc0) == 0x80)" (( "(") (binary_expression "(bVar12 & 0xc0) == 0x80" (parenthesized_expression "(bVar12 & 0xc0)" (( "(") (binary_expression "bVar12 & 0xc0" (identifier "bVar12") (& "&") (number_literal "0xc0")) () ")")) (== "==") (number_literal "0x80")) () ")")) (compound_statement "{\n        pbVar5 = pbVar5 + 1;\n        bVar12 = *pbVar5;\n      }" ({ "{") (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = *pbVar5;" (assignment_expression "bVar12 = *pbVar5" (identifier "bVar12") (= "=") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5"))) (; ";")) (} "}"))) (expression_statement "iVar14 = iVar10 + 1;" (assignment_expression "iVar14 = iVar10 + 1" (identifier "iVar14") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar12 != 0)" (( "(") (binary_expression "bVar12 != 0" (identifier "bVar12") (!= "!=") (number_literal "0")) () ")")) (; ";")) (labeled_statement "LAB_000655bc:\n    uVar8 = iVar10 + 1;" (statement_identifier "LAB_000655bc") (: ":") (expression_statement "uVar8 = iVar10 + 1;" (assignment_expression "uVar8 = iVar10 + 1" (identifier "uVar8") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));" (assignment_expression "puVar6 = (undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f))" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)\n             FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0005a034(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f))" (identifier "FUN_0005a034") (argument_list "(param_1,0x80,\n                          (uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f))" (( "(") (identifier "param_1") (, ",") (number_literal "0x80") (, ",") (binary_expression "(uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f)" (binary_expression "(uint)(uVar8 * 5 < uVar8 * 4) +\n                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2)" (call_expression "(uint)(uVar8 * 5 < uVar8 * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar8 * 5 < uVar8 * 4)" (( "(") (binary_expression "uVar8 * 5 < uVar8 * 4" (binary_expression "uVar8 * 5" (identifier "uVar8") (* "*") (number_literal "5")) (< "<") (binary_expression "uVar8 * 4" (identifier "uVar8") (* "*") (number_literal "4"))) () ")"))) (+ "+") (parenthesized_expression "(uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2)" (( "(") (binary_expression "uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2" (binary_expression "uVar8 >> 0x1e" (identifier "uVar8") (>> ">>") (number_literal "0x1e")) (| "|") (binary_expression "((int)uVar8 >> 0x1f) << 2" (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")) () ")")) (<< "<<") (number_literal "2"))) () ")"))) (+ "+") (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")) () ")"))) () ")"))))) (; ";")) (if_statement "if (puVar6 == (undefined4 *)0x0) {\n      return;\n    }" (if "if") (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar6 == (undefined4 *)0x0" (identifier "puVar6") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pbVar5 = (byte *)(puVar6 + uVar8);" (assignment_expression "pbVar5 = (byte *)(puVar6 + uVar8)" (identifier "pbVar5") (= "=") (cast_expression "(byte *)(puVar6 + uVar8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + uVar8)" (( "(") (binary_expression "puVar6 + uVar8" (identifier "puVar6") (+ "+") (identifier "uVar8")) () ")")))) (; ";")) (if_statement "if (*local_30 == 0) goto LAB_000657d8;" (if "if") (parenthesized_expression "(*local_30 == 0)" (( "(") (binary_expression "*local_30 == 0" (pointer_expression "*local_30" (* "*") (identifier "local_30")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000657d8;" (goto "goto") (statement_identifier "LAB_000657d8") (; ";"))) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar13 = local_30;" (assignment_expression "pbVar13 = local_30" (identifier "pbVar13") (= "=") (identifier "local_30")) (; ";")) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" (identifier "puVar11") (= "=") (identifier "puVar6")) (; ";")) (do_statement "do {\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    } while (*pbVar7 != 0);" (do "do") (compound_statement "{\n      *puVar11 = pbVar13;\n      pbVar7 = pbVar13 + 1;\n      if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }\n      puVar11 = puVar11 + 1;\n      pbVar5[iVar14] = bVar12;\n      iVar14 = iVar14 + 1;\n      pbVar13 = pbVar7;\n    }" ({ "{") (expression_statement "*puVar11 = pbVar13;" (assignment_expression "*puVar11 = pbVar13" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (identifier "pbVar13")) (; ";")) (expression_statement "pbVar7 = pbVar13 + 1;" (assignment_expression "pbVar7 = pbVar13 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*pbVar13 < 0xc0) {\n        bVar12 = 1;\n      }\n      else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }" (if "if") (parenthesized_expression "(*pbVar13 < 0xc0)" (( "(") (binary_expression "*pbVar13 < 0xc0" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (< "<") (number_literal "0xc0")) () ")")) (compound_statement "{\n        bVar12 = 1;\n      }" ({ "{") (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" (identifier "bVar12") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }" (else "else") (compound_statement "{\n        bVar12 = 1;\n        bVar1 = pbVar13[1];\n        while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }\n      }" ({ "{") (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" (identifier "bVar12") (= "=") (number_literal "1")) (; ";")) (expression_statement "bVar1 = pbVar13[1];" (assignment_expression "bVar1 = pbVar13[1]" (identifier "bVar1") (= "=") (subscript_expression "pbVar13[1]" (identifier "pbVar13") ([ "[") (number_literal "1") (] "]"))) (; ";")) (while_statement "while ((bVar1 & 0xc0) == 0x80) {\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }" (while "while") (parenthesized_expression "((bVar1 & 0xc0) == 0x80)" (( "(") (binary_expression "(bVar1 & 0xc0) == 0x80" (parenthesized_expression "(bVar1 & 0xc0)" (( "(") (binary_expression "bVar1 & 0xc0" (identifier "bVar1") (& "&") (number_literal "0xc0")) () ")")) (== "==") (number_literal "0x80")) () ")")) (compound_statement "{\n          pbVar7 = pbVar7 + 1;\n          bVar12 = (char)pbVar7 - (char)pbVar13;\n          bVar1 = *pbVar7;\n        }" ({ "{") (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = (char)pbVar7 - (char)pbVar13;" (assignment_expression "bVar12 = (char)pbVar7 - (char)pbVar13" (identifier "bVar12") (= "=") (binary_expression "(char)pbVar7 - (char)pbVar13" (cast_expression "(char)pbVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "pbVar7")) (- "-") (cast_expression "(char)pbVar13" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar1 = *pbVar7;" (assignment_expression "bVar1 = *pbVar7" (identifier "bVar1") (= "=") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 1" (identifier "puVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5[iVar14] = bVar12;" (assignment_expression "pbVar5[iVar14] = bVar12" (subscript_expression "pbVar5[iVar14]" (identifier "pbVar5") ([ "[") (identifier "iVar14") (] "]")) (= "=") (identifier "bVar12")) (; ";")) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" (identifier "iVar14") (= "=") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar7;" (assignment_expression "pbVar13 = pbVar7" (identifier "pbVar13") (= "=") (identifier "pbVar7")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*pbVar7 != 0)" (( "(") (binary_expression "*pbVar7 != 0" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")))) (expression_statement "uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1);" (assignment_expression "uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1)" (identifier "uVar8") (= "=") (call_expression "(*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1)" (parenthesized_expression "(*(code *)PTR_sqlite3_user_data_0015b6c8)" (( "(") (pointer_expression "*(code *)PTR_sqlite3_user_data_0015b6c8" (* "*") (cast_expression "(code *)PTR_sqlite3_user_data_0015b6c8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_sqlite3_user_data_0015b6c8"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if ((uVar8 & 1) == 0) {\n    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }\n  }\n  else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }" (if "if") (parenthesized_expression "((uVar8 & 1) == 0)" (( "(") (binary_expression "(uVar8 & 1) == 0" (parenthesized_expression "(uVar8 & 1)" (( "(") (binary_expression "uVar8 & 1" (identifier "uVar8") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }\n  }" ({ "{") (if_statement "if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }" (if "if") (parenthesized_expression "(((uVar8 & 2) != 0) && (0 < (int)uVar4))" (( "(") (binary_expression "((uVar8 & 2) != 0) && (0 < (int)uVar4)" (parenthesized_expression "((uVar8 & 2) != 0)" (( "(") (binary_expression "(uVar8 & 2) != 0" (parenthesized_expression "(uVar8 & 2)" (( "(") (binary_expression "uVar8 & 2" (identifier "uVar8") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(0 < (int)uVar4)" (( "(") (binary_expression "0 < (int)uVar4" (number_literal "0") (< "<") (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4"))) () ")"))) () ")")) (compound_statement "{\n      do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);\n    }" ({ "{") (do_statement "do {\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      } while (uVar8 != 0);" (do "do") (compound_statement "{\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }\njoined_r0x000657b8:\n        uVar4 = uVar9;\n      }" ({ "{") (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" (identifier "pbVar13") (= "=") (identifier "pbVar5")) (; ";")) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" (identifier "puVar11") (= "=") (identifier "puVar6")) (; ";")) (while_statement "while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          uVar8 = uVar4 - uVar9;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;\n        }" ({ "{") (expression_statement "uVar9 = (uint)*pbVar13;" (assignment_expression "uVar9 = (uint)*pbVar13" (identifier "uVar9") (= "=") (binary_expression "(uint)*pbVar13" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar13"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar8 = uVar4 - uVar9;" (assignment_expression "uVar8 = uVar4 - uVar9" (identifier "uVar8") (= "=") (binary_expression "uVar4 - uVar9" (identifier "uVar4") (- "-") (identifier "uVar9"))) (; ";")) (if_statement "if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)) break;" (if "if") (parenthesized_expression "(((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0))" (( "(") (binary_expression "((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)" (parenthesized_expression "((int)uVar9 <= (int)uVar4)" (( "(") (binary_expression "(int)uVar9 <= (int)uVar4" (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9")) (<= "<=") (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4"))) () ")")) (&& "&&") (parenthesized_expression "(iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0)" (( "(") (comma_expression "iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,\n             iVar10 == 0" (assignment_expression "iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9)" (identifier "iVar10") (= "=") (call_expression "(*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9)" (parenthesized_expression "(*(code *)PTR_memcmp_0015ba1c)" (( "(") (pointer_expression "*(code *)PTR_memcmp_0015ba1c" (* "*") (cast_expression "(code *)PTR_memcmp_0015ba1c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcmp_0015ba1c"))) () ")")) (argument_list "(iVar3 + uVar8,*puVar11,uVar9)" (( "(") (binary_expression "iVar3 + uVar8" (identifier "iVar3") (+ "+") (identifier "uVar8")) (, ",") (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (, ",") (identifier "uVar9") () ")")))) (, ",") (comma_expression "uVar9 = uVar8,\n             iVar10 == 0" (assignment_expression "uVar9 = uVar8" (identifier "uVar9") (= "=") (identifier "uVar8")) (, ",") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 1" (identifier "puVar11") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;" (if "if") (parenthesized_expression "(pbVar13 == pbVar5 + iVar14)" (( "(") (binary_expression "pbVar13 == pbVar5 + iVar14" (identifier "pbVar13") (== "==") (binary_expression "pbVar5 + iVar14" (identifier "pbVar5") (+ "+") (identifier "iVar14"))) () ")")) (goto_statement "goto LAB_000657c4;" (goto "goto") (statement_identifier "LAB_000657c4") (; ";"))) (} "}"))) (labeled_statement "joined_r0x000657b8:\n        uVar4 = uVar9;" (statement_identifier "joined_r0x000657b8") (: ":") (expression_statement "uVar4 = uVar9;" (assignment_expression "uVar4 = uVar9" (identifier "uVar4") (= "=") (identifier "uVar9")) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(uVar8 != 0)" (( "(") (binary_expression "uVar8 != 0" (identifier "uVar8") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }" (else "else") (compound_statement "{\n    pbVar13 = pbVar5;\n    puVar11 = puVar6;\n    if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }\n  }" ({ "{") (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" (identifier "pbVar13") (= "=") (identifier "pbVar5")) (; ";")) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" (identifier "puVar11") (= "=") (identifier "puVar6")) (; ";")) (if_statement "if (0 < (int)uVar4) {\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }" (if "if") (parenthesized_expression "(0 < (int)uVar4)" (( "(") (binary_expression "0 < (int)uVar4" (number_literal "0") (< "<") (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4"))) () ")")) (compound_statement "{\n      do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);\n    }" ({ "{") (do_statement "do {\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      } while (uVar4 != 0);" (do "do") (compound_statement "{\n        while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }\n        uVar4 = uVar4 - uVar9;\n        iVar3 = iVar3 + uVar9;\n        pbVar13 = pbVar5;\n        puVar11 = puVar6;\n      }" ({ "{") (while_statement "while( true ) {\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          uVar9 = (uint)*pbVar13;\n          pbVar13 = pbVar13 + 1;\n          if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;\n          puVar11 = puVar11 + 1;\n          if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }\n        }" ({ "{") (expression_statement "uVar9 = (uint)*pbVar13;" (assignment_expression "uVar9 = (uint)*pbVar13" (identifier "uVar9") (= "=") (binary_expression "(uint)*pbVar13" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar13"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;" (if "if") (parenthesized_expression "(((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0))" (( "(") (binary_expression "((int)uVar9 <= (int)uVar4) &&\n             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)" (parenthesized_expression "((int)uVar9 <= (int)uVar4)" (( "(") (binary_expression "(int)uVar9 <= (int)uVar4" (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9")) (<= "<=") (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4"))) () ")")) (&& "&&") (parenthesized_expression "(iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)" (( "(") (comma_expression "iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0" (assignment_expression "iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9)" (identifier "iVar10") (= "=") (call_expression "(*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9)" (parenthesized_expression "(*(code *)PTR_memcmp_0015ba1c)" (( "(") (pointer_expression "*(code *)PTR_memcmp_0015ba1c" (* "*") (cast_expression "(code *)PTR_memcmp_0015ba1c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcmp_0015ba1c"))) () ")")) (argument_list "(iVar3,*puVar11,uVar9)" (( "(") (identifier "iVar3") (, ",") (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (, ",") (identifier "uVar9") () ")")))) (, ",") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 1" (identifier "puVar11") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pbVar5 + iVar14 == pbVar13) {\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }" (if "if") (parenthesized_expression "(pbVar5 + iVar14 == pbVar13)" (( "(") (binary_expression "pbVar5 + iVar14 == pbVar13" (binary_expression "pbVar5 + iVar14" (identifier "pbVar5") (+ "+") (identifier "iVar14")) (== "==") (identifier "pbVar13")) () ")")) (compound_statement "{\n            uVar8 = uVar8 & 2;\n            uVar9 = uVar4;\n            goto joined_r0x000657b8;\n          }" ({ "{") (expression_statement "uVar8 = uVar8 & 2;" (assignment_expression "uVar8 = uVar8 & 2" (identifier "uVar8") (= "=") (binary_expression "uVar8 & 2" (identifier "uVar8") (& "&") (number_literal "2"))) (; ";")) (expression_statement "uVar9 = uVar4;" (assignment_expression "uVar9 = uVar4" (identifier "uVar9") (= "=") (identifier "uVar4")) (; ";")) (goto_statement "goto joined_r0x000657b8;" (goto "goto") (statement_identifier "joined_r0x000657b8") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar4 = uVar4 - uVar9;" (assignment_expression "uVar4 = uVar4 - uVar9" (identifier "uVar4") (= "=") (binary_expression "uVar4 - uVar9" (identifier "uVar4") (- "-") (identifier "uVar9"))) (; ";")) (expression_statement "iVar3 = iVar3 + uVar9;" (assignment_expression "iVar3 = iVar3 + uVar9" (identifier "iVar3") (= "=") (binary_expression "iVar3 + uVar9" (identifier "iVar3") (+ "+") (identifier "uVar9"))) (; ";")) (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" (identifier "pbVar13") (= "=") (identifier "pbVar5")) (; ";")) (expression_statement "puVar11 = puVar6;" (assignment_expression "puVar11 = puVar6" (identifier "puVar11") (= "=") (identifier "puVar6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_000657c4:\n  if (local_30 != (byte *)0x0) {\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }" (statement_identifier "LAB_000657c4") (: ":") (if_statement "if (local_30 != (byte *)0x0) {\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }" (if "if") (parenthesized_expression "(local_30 != (byte *)0x0)" (( "(") (binary_expression "local_30 != (byte *)0x0" (identifier "local_30") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);\n  }" ({ "{") (expression_statement "(*(code *)PTR_sqlite3_free_0015b620)(puVar6);" (call_expression "(*(code *)PTR_sqlite3_free_0015b620)(puVar6)" (parenthesized_expression "(*(code *)PTR_sqlite3_free_0015b620)" (( "(") (pointer_expression "*(code *)PTR_sqlite3_free_0015b620" (* "*") (cast_expression "(code *)PTR_sqlite3_free_0015b620" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_sqlite3_free_0015b620"))) () ")")) (argument_list "(puVar6)" (( "(") (identifier "puVar6") () ")"))) (; ";")) (} "}")))) (labeled_statement "LAB_000657d8:\n  sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);" (statement_identifier "LAB_000657d8") (: ":") (expression_statement "sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);" (call_expression "sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff)" (identifier "sqlite3_result_text") (argument_list "(param_1,iVar3,uVar4,0xffffffff)" (( "(") (identifier "param_1") (, ",") (identifier "iVar3") (, ",") (identifier "uVar4") (, ",") (number_literal "0xffffffff") () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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 (identifier)) 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))))) (while_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (labeled_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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (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: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (while_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) 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 (binary_expression left: (identifier) right: (identifier)) (pointer_expression argument: (identifier)) (identifier)))) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (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: (binary_expression left: (identifier) right: (identifier)))) consequence: (goto_statement label: (statement_identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) 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) (pointer_expression argument: (identifier)) (identifier)))) right: (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: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (number_literal))))) (return_statement))))

void MASKED(undefined4 param_1,int param_2,undefined4 *param_3)

{
  byte bVar1;
  bool bVar2;
  int iVar3;
  uint uVar4;
  byte *pbVar5;
  undefined4 *puVar6;
  byte *pbVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  undefined4 *puVar11;
  byte bVar12;
  byte *pbVar13;
  int iVar14;
  byte *local_30;
  
  iVar3 = (*(code *)PTR_sqlite3_value_type_0015b5f8)(*param_3);
  if ((iVar3 == 5) || (iVar3 = sqlite3_value_text(*param_3), iVar3 == 0)) {
    return;
  }
  uVar4 = sqlite3_value_bytes(*param_3);
  if (param_2 == 1) {
    local_30 = (byte *)0x0;
    puVar6 = (undefined4 *)(PTR_DAT_0015b5d8 + -0x7168);
    pbVar5 = PTR_UINT_0015b5fc + 0x2a10;
    iVar14 = 1;
  }
  else {
    local_30 = (byte *)sqlite3_value_text(param_3[1]);
    if (local_30 == (byte *)0x0) {
      return;
    }
    bVar12 = *local_30;
    pbVar5 = local_30;
    iVar14 = 0;
    if (bVar12 == 0) goto LAB_000657d8;
    do {
      while( true ) {
        iVar10 = iVar14;
        bVar2 = 0xbf < bVar12;
        bVar12 = pbVar5[1];
        pbVar5 = pbVar5 + 1;
        if (bVar2) break;
        iVar14 = iVar10 + 1;
        if (bVar12 == 0) goto LAB_000655bc;
      }
      while ((bVar12 & 0xc0) == 0x80) {
        pbVar5 = pbVar5 + 1;
        bVar12 = *pbVar5;
      }
      iVar14 = iVar10 + 1;
    } while (bVar12 != 0);
LAB_000655bc:
    uVar8 = iVar10 + 1;
    puVar6 = (undefined4 *)
             FUN_0005a034(param_1,0x80,
                          (uint)(uVar8 * 5 < uVar8 * 4) +
                          (uVar8 >> 0x1e | ((int)uVar8 >> 0x1f) << 2) + ((int)uVar8 >> 0x1f));
    if (puVar6 == (undefined4 *)0x0) {
      return;
    }
    pbVar5 = (byte *)(puVar6 + uVar8);
    if (*local_30 == 0) goto LAB_000657d8;
    iVar14 = 0;
    pbVar13 = local_30;
    puVar11 = puVar6;
    do {
      *puVar11 = pbVar13;
      pbVar7 = pbVar13 + 1;
      if (*pbVar13 < 0xc0) {
        bVar12 = 1;
      }
      else {
        bVar12 = 1;
        bVar1 = pbVar13[1];
        while ((bVar1 & 0xc0) == 0x80) {
          pbVar7 = pbVar7 + 1;
          bVar12 = (char)pbVar7 - (char)pbVar13;
          bVar1 = *pbVar7;
        }
      }
      puVar11 = puVar11 + 1;
      pbVar5[iVar14] = bVar12;
      iVar14 = iVar14 + 1;
      pbVar13 = pbVar7;
    } while (*pbVar7 != 0);
  }
  uVar8 = (*(code *)PTR_sqlite3_user_data_0015b6c8)(param_1);
  if ((uVar8 & 1) == 0) {
    if (((uVar8 & 2) != 0) && (0 < (int)uVar4)) {
      do {
        pbVar13 = pbVar5;
        puVar11 = puVar6;
        while( true ) {
          uVar9 = (uint)*pbVar13;
          pbVar13 = pbVar13 + 1;
          uVar8 = uVar4 - uVar9;
          if (((int)uVar9 <= (int)uVar4) &&
             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3 + uVar8,*puVar11,uVar9), uVar9 = uVar8,
             iVar10 == 0)) break;
          puVar11 = puVar11 + 1;
          if (pbVar13 == pbVar5 + iVar14) goto LAB_000657c4;
        }
joined_r0x000657b8:
        uVar4 = uVar9;
      } while (uVar8 != 0);
    }
  }
  else {
    pbVar13 = pbVar5;
    puVar11 = puVar6;
    if (0 < (int)uVar4) {
      do {
        while( true ) {
          uVar9 = (uint)*pbVar13;
          pbVar13 = pbVar13 + 1;
          if (((int)uVar9 <= (int)uVar4) &&
             (iVar10 = (*(code *)PTR_memcmp_0015ba1c)(iVar3,*puVar11,uVar9), iVar10 == 0)) break;
          puVar11 = puVar11 + 1;
          if (pbVar5 + iVar14 == pbVar13) {
            uVar8 = uVar8 & 2;
            uVar9 = uVar4;
            goto joined_r0x000657b8;
          }
        }
        uVar4 = uVar4 - uVar9;
        iVar3 = iVar3 + uVar9;
        pbVar13 = pbVar5;
        puVar11 = puVar6;
      } while (uVar4 != 0);
    }
  }
LAB_000657c4:
  if (local_30 != (byte *)0x0) {
    (*(code *)PTR_sqlite3_free_0015b620)(puVar6);
  }
LAB_000657d8:
  sqlite3_result_text(param_1,iVar3,uVar4,0xffffffff);
  return;
}

