
u8 sqlite3GetVarint32(uchar *p,u32 *v)

{
  byte bVar1;
  byte bVar2;
  undefined3 extraout_var;
  u8 uVar5;
  u32 *puVar3;
  int iVar4;
  u32 *puVar6;
  u32 *puVar7;
  u32 *puVar8;
  u32 *puVar9;
  undefined4 *puVar10;
  u32 *puVar11;
  u32 *p_00;
  int *piVar12;
  undefined *puVar13;
  code *pcVar14;
  u32 uStack_58;
  int iStack_54;
  u64 v64;
  u32 *local_c;
  
  puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;
  bVar1 = p[1];
  local_c = *(u32 **)PTR___stack_chk_guard_0015ca30;
  if ((char)bVar1 < '\0') {
    bVar2 = p[2];
    if ((bVar2 & 0x80) == 0) {
      *v = ((uint)bVar2 | (uint)*p << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;
      uVar5 = '\x03';
      puVar8 = (u32 *)(uint)bVar2;
    }
    else {
      uVar5 = sqlite3GetVarint(p,&v64);
      if (v64._0_4_ != (u32 *)0x0) {
        v64._4_4_ = 0xffffffff;
      }
      *v = v64._4_4_;
      puVar8 = v64._0_4_;
    }
  }
  else {
    uVar5 = '\x02';
    *v = (*p & 0x7f) << 7 | (uint)bVar1;
    puVar8 = local_c;
  }
  if (local_c == (u32 *)*puVar10) {
    return uVar5;
  }
  puVar6 = local_c;
  puVar13 = PTR___stack_chk_fail_0015ca14;
  (*(code *)PTR___stack_chk_fail_0015ca14)();
  piVar12 = *(int **)(puVar13 + 0x12bed4);
  puVar3 = (u32 *)*puVar6;
  iStack_54 = *piVar12;
  puVar7 = puVar6;
  puVar9 = puVar8;
  if (0 < (int)puVar8) {
    puVar11 = (u32 *)0x0;
    do {
      while( true ) {
        bVar1 = *(byte *)puVar3;
        puVar7 = (u32 *)(uint)(bVar1 - 3 < 2);
        p_00 = (u32 *)((int)puVar3 + 1);
        if (puVar7 == (u32 *)0x0) break;
        if ((char)*(byte *)((int)puVar3 + 1) < '\0') {
          puVar7 = p_00;
          puVar9 = &uStack_58;
          uVar5 = sqlite3GetVarint32((uchar *)p_00,&uStack_58);
          iVar4 = uStack_58 + CONCAT31(extraout_var,uVar5);
        }
        else {
          iVar4 = *(byte *)((int)puVar3 + 1) + 1;
        }
        puVar3 = (u32 *)((int)p_00 + iVar4);
        puVar11 = (u32 *)((int)puVar11 + 1);
        if (puVar8 == puVar11) goto LAB_00030c20;
      }
      puVar3 = (u32 *)((int)puVar3 + 9);
      if (1 < bVar1 - 1) {
        puVar3 = p_00;
      }
      puVar11 = (u32 *)((int)puVar11 + 1);
    } while (puVar8 != puVar11);
  }
LAB_00030c20:
  *puVar6 = (u32)puVar3;
  iVar4 = *piVar12;
  if (iStack_54 == iVar4) {
    return (u8)iVar4;
  }
  pcVar14 = *(code **)(puVar13 + 0x12beb8);
  (*pcVar14)();
  if ((int)puVar7 < (int)puVar9) {
    uVar5 = (u8)puVar9;
    if ((int)((int)puVar7 + 0x31) < (int)puVar9) {
      return uVar5;
    }
    if ((int)puVar9 <= (int)((int)puVar7 + 0x1f)) {
      return uVar5 + *(byte *)((int)puVar9 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)
                              );
    }
  }
  else {
    uVar5 = (u8)puVar7;
    if ((int)((int)puVar9 + 0x31) < (int)puVar7) {
      return uVar5;
    }
    if ((int)puVar7 <= (int)((int)puVar9 + 0x1f)) {
      return uVar5 + *(byte *)((int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)
                              );
    }
  }
  return uVar5 + '\x01';
}



byte * FUN_00030a88(byte *param_1,uint *param_2)

{
  byte bVar1;
  byte bVar2;
  byte *pbVar3;
  int iVar4;
  byte *pbVar5;
  short sVar6;
  byte *pbVar7;
  byte *pbVar8;
  byte *pbVar9;
  undefined4 *puVar10;
  byte *pbVar11;
  byte *pbVar12;
  int *piVar13;
  undefined *puVar14;
  code *pcVar15;
  int iStack_58;
  byte *pbStack_54;
  byte *local_18;
  uint local_14;
  byte *local_c;
  
  puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;
  bVar1 = param_1[1];
  local_c = *(byte **)PTR___stack_chk_guard_0015ca30;
  if ((char)bVar1 < '\0') {
    bVar2 = param_1[2];
    if ((bVar2 & 0x80) == 0) {
      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;
      pbVar3 = (byte *)0x3;
      pbVar5 = (byte *)(uint)bVar2;
    }
    else {
      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);
      if (local_18 != (byte *)0x0) {
        local_14 = 0xffffffff;
      }
      *param_2 = local_14;
      pbVar5 = local_18;
    }
  }
  else {
    pbVar3 = &SUB_00000002;
    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;
    pbVar5 = local_c;
  }
  if (local_c == (byte *)*puVar10) {
    return pbVar3;
  }
  pbVar7 = local_c;
  puVar14 = PTR___stack_chk_fail_0015ca14;
  (*(code *)PTR___stack_chk_fail_0015ca14)();
  piVar13 = *(int **)(puVar14 + 0x12bed4);
  pbVar3 = *(byte **)pbVar7;
  pbStack_54 = (byte *)*piVar13;
  pbVar8 = pbVar7;
  pbVar9 = pbVar5;
  if (0 < (int)pbVar5) {
    pbVar11 = (byte *)0x0;
    do {
      while( true ) {
        bVar1 = *pbVar3;
        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);
        pbVar12 = pbVar3 + 1;
        if (pbVar8 == (byte *)0x0) break;
        if ((char)pbVar3[1] < '\0') {
          pbVar8 = pbVar12;
          pbVar9 = (byte *)&iStack_58;
          iVar4 = FUN_00030a88();
          iVar4 = iStack_58 + iVar4;
        }
        else {
          iVar4 = pbVar3[1] + 1;
        }
        pbVar3 = pbVar12 + iVar4;
        pbVar11 = pbVar11 + 1;
        if (pbVar5 == pbVar11) goto LAB_00030c20;
      }
      pbVar3 = pbVar3 + 9;
      if (1 < bVar1 - 1) {
        pbVar3 = pbVar12;
      }
      pbVar11 = pbVar11 + 1;
    } while (pbVar5 != pbVar11);
  }
LAB_00030c20:
  *(byte **)pbVar7 = pbVar3;
  pbVar5 = (byte *)*piVar13;
  if (pbStack_54 == pbVar5) {
    return pbVar5;
  }
  pcVar15 = *(code **)(puVar14 + 0x12beb8);
  (*pcVar15)();
  if ((int)pbVar8 < (int)pbVar9) {
    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {
      return pbVar9;
    }
    sVar6 = (short)pbVar9;
    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {
      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -
                                                         (int)pbVar8]);
    }
  }
  else {
    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {
      return pbVar8;
    }
    sVar6 = (short)pbVar8;
    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {
      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -
                                                         (int)pbVar9]);
    }
  }
  return (byte *)(int)(short)(sVar6 + 1);
}


lui gp,0x13
addiu gp,gp,0x3b28
addu gp,gp,t9
addiu sp,sp,-0x30
lw t4,-0x7b80(gp)
or t5,a1,zero
sw gp,0x10(sp)
sw ra,0x2c(sp)
lbu a3,0x1(a0)
lw a1,0x0(t4)
lbu v0,0x0(a0)
seb v1,a3
sw a1,0x24(sp)
bgez v1,0x00030b3c
_andi v1,v0,0x7f
lbu a1,0x2(a0)
sll v0,v0,0xe
or v0,a1,v0
andi v1,v0,0x80
beq v1,zero,0x00030b18
_lw t9,-0x7f44(gp)
addiu t9,t9,-0x2158
bal 0x0001dea8
_addiu a1,sp,0x18
li a0,-0x1
lw v1,0x1c(sp)
lw a1,0x18(sp)
lw gp,0x10(sp)
movn v1,a0,a1
sw v1,0x0(t5)
lw a0,0x24(sp)
lw v1,0x0(t4)
bne a0,v1,0x00030b50
_lw ra,0x2c(sp)
jr ra
_addiu sp,sp,0x30
lui v1,0x1f
andi a3,a3,0x7f
sll a3,a3,0x7
ori v1,v1,0xc07f
and v0,v0,v1
or v0,v0,a3
sw v0,0x0(t5)
b 0x00030b00
_li v0,0x3
sll v1,v1,0x7
li v0,0x2
or v1,v1,a3
b 0x00030b00
_sw v1,0x0(t5)
lw t9,-0x7b9c(gp)
jalr t9
_nop
(translation_unit "byte * FUN_00030a88(byte *param_1,uint *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  byte *pbVar5;\n  short sVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int *piVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int iStack_58;\n  byte *pbStack_54;\n  byte *local_18;\n  uint local_14;\n  byte *local_c;\n  \n  puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;\n  bVar1 = param_1[1];\n  local_c = *(byte **)PTR___stack_chk_guard_0015ca30;\n  if ((char)bVar1 < '\0') {\n    bVar2 = param_1[2];\n    if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }\n  }\n  else {\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }\n  if (local_c == (byte *)*puVar10) {\n    return pbVar3;\n  }\n  pbVar7 = local_c;\n  puVar14 = PTR___stack_chk_fail_0015ca14;\n  (*(code *)PTR___stack_chk_fail_0015ca14)();\n  piVar13 = *(int **)(puVar14 + 0x12bed4);\n  pbVar3 = *(byte **)pbVar7;\n  pbStack_54 = (byte *)*piVar13;\n  pbVar8 = pbVar7;\n  pbVar9 = pbVar5;\n  if (0 < (int)pbVar5) {\n    pbVar11 = (byte *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);\n  }\nLAB_00030c20:\n  *(byte **)pbVar7 = pbVar3;\n  pbVar5 = (byte *)*piVar13;\n  if (pbStack_54 == pbVar5) {\n    return pbVar5;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x12beb8);\n  (*pcVar15)();\n  if ((int)pbVar8 < (int)pbVar9) {\n    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }\n    sVar6 = (short)pbVar9;\n    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }\n  }\n  else {\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }\n  return (byte *)(int)(short)(sVar6 + 1);\n}\n\n" (function_definition "byte * FUN_00030a88(byte *param_1,uint *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  byte *pbVar5;\n  short sVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int *piVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int iStack_58;\n  byte *pbStack_54;\n  byte *local_18;\n  uint local_14;\n  byte *local_c;\n  \n  puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;\n  bVar1 = param_1[1];\n  local_c = *(byte **)PTR___stack_chk_guard_0015ca30;\n  if ((char)bVar1 < '\0') {\n    bVar2 = param_1[2];\n    if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }\n  }\n  else {\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }\n  if (local_c == (byte *)*puVar10) {\n    return pbVar3;\n  }\n  pbVar7 = local_c;\n  puVar14 = PTR___stack_chk_fail_0015ca14;\n  (*(code *)PTR___stack_chk_fail_0015ca14)();\n  piVar13 = *(int **)(puVar14 + 0x12bed4);\n  pbVar3 = *(byte **)pbVar7;\n  pbStack_54 = (byte *)*piVar13;\n  pbVar8 = pbVar7;\n  pbVar9 = pbVar5;\n  if (0 < (int)pbVar5) {\n    pbVar11 = (byte *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);\n  }\nLAB_00030c20:\n  *(byte **)pbVar7 = pbVar3;\n  pbVar5 = (byte *)*piVar13;\n  if (pbStack_54 == pbVar5) {\n    return pbVar5;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x12beb8);\n  (*pcVar15)();\n  if ((int)pbVar8 < (int)pbVar9) {\n    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }\n    sVar6 = (short)pbVar9;\n    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }\n  }\n  else {\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }\n  return (byte *)(int)(short)(sVar6 + 1);\n}" type_identifier (pointer_declarator "* FUN_00030a88(byte *param_1,uint *param_2)" * (function_declarator "FUN_00030a88(byte *param_1,uint *param_2)" identifier (parameter_list "(byte *param_1,uint *param_2)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  byte *pbVar5;\n  short sVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int *piVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int iStack_58;\n  byte *pbStack_54;\n  byte *local_18;\n  uint local_14;\n  byte *local_c;\n  \n  puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;\n  bVar1 = param_1[1];\n  local_c = *(byte **)PTR___stack_chk_guard_0015ca30;\n  if ((char)bVar1 < '\0') {\n    bVar2 = param_1[2];\n    if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }\n  }\n  else {\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }\n  if (local_c == (byte *)*puVar10) {\n    return pbVar3;\n  }\n  pbVar7 = local_c;\n  puVar14 = PTR___stack_chk_fail_0015ca14;\n  (*(code *)PTR___stack_chk_fail_0015ca14)();\n  piVar13 = *(int **)(puVar14 + 0x12bed4);\n  pbVar3 = *(byte **)pbVar7;\n  pbStack_54 = (byte *)*piVar13;\n  pbVar8 = pbVar7;\n  pbVar9 = pbVar5;\n  if (0 < (int)pbVar5) {\n    pbVar11 = (byte *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);\n  }\nLAB_00030c20:\n  *(byte **)pbVar7 = pbVar3;\n  pbVar5 = (byte *)*piVar13;\n  if (pbStack_54 == pbVar5) {\n    return pbVar5;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x12beb8);\n  (*pcVar15)();\n  if ((int)pbVar8 < (int)pbVar9) {\n    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }\n    sVar6 = (short)pbVar9;\n    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }\n  }\n  else {\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }\n  return (byte *)(int)(short)(sVar6 + 1);\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "short sVar6;" (sized_type_specifier "short" short) identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "int iStack_58;" primitive_type identifier ;) (declaration "byte *pbStack_54;" type_identifier (pointer_declarator "*pbStack_54" * identifier) ;) (declaration "byte *local_18;" type_identifier (pointer_declarator "*local_18" * identifier) ;) (declaration "uint local_14;" type_identifier identifier ;) (declaration "byte *local_c;" type_identifier (pointer_declarator "*local_c" * identifier) ;) (expression_statement "puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;" (assignment_expression "puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30" identifier = (cast_expression "(undefined4 *)PTR___stack_chk_guard_0015ca30" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar1 = param_1[1];" (assignment_expression "bVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "local_c = *(byte **)PTR___stack_chk_guard_0015ca30;" (assignment_expression "local_c = *(byte **)PTR___stack_chk_guard_0015ca30" identifier = (pointer_expression "*(byte **)PTR___stack_chk_guard_0015ca30" * (cast_expression "(byte **)PTR___stack_chk_guard_0015ca30" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((char)bVar1 < '\0') {\n    bVar2 = param_1[2];\n    if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }\n  }\n  else {\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar2 = param_1[2];\n    if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }\n  }" { (expression_statement "bVar2 = param_1[2];" (assignment_expression "bVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (if_statement "if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }" if (parenthesized_expression "((bVar2 & 0x80) == 0)" ( (binary_expression "(bVar2 & 0x80) == 0" (parenthesized_expression "(bVar2 & 0x80)" ( (binary_expression "bVar2 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }" { (expression_statement "*param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;" (assignment_expression "*param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7" (pointer_expression "*param_2" * identifier) = (binary_expression "((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7" (binary_expression "((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f" (parenthesized_expression "((uint)bVar2 | (uint)*param_1 << 0xe)" ( (binary_expression "(uint)bVar2 | (uint)*param_1 << 0xe" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) | (binary_expression "(uint)*param_1 << 0xe" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal)) )) & number_literal) | (binary_expression "(bVar1 & 0x7f) << 7" (parenthesized_expression "(bVar1 & 0x7f)" ( (binary_expression "bVar1 & 0x7f" identifier & number_literal) )) << number_literal))) ;) (expression_statement "pbVar3 = (byte *)0x3;" (assignment_expression "pbVar3 = (byte *)0x3" identifier = (cast_expression "(byte *)0x3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar5 = (byte *)(uint)bVar2;" (assignment_expression "pbVar5 = (byte *)(uint)bVar2" identifier = (cast_expression "(byte *)(uint)bVar2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) (else_clause "else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }" else (compound_statement "{\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }" { (expression_statement "pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);" (assignment_expression "pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18)" identifier = (cast_expression "(byte *)FUN_0001dea8(param_1,&local_18)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001dea8(param_1,&local_18)" identifier (argument_list "(param_1,&local_18)" ( identifier , (pointer_expression "&local_18" & identifier) ))))) ;) (if_statement "if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }" if (parenthesized_expression "(local_18 != (byte *)0x0)" ( (binary_expression "local_18 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_14 = 0xffffffff;\n      }" { (expression_statement "local_14 = 0xffffffff;" (assignment_expression "local_14 = 0xffffffff" identifier = number_literal) ;) })) (expression_statement "*param_2 = local_14;" (assignment_expression "*param_2 = local_14" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "pbVar5 = local_18;" (assignment_expression "pbVar5 = local_18" identifier = identifier) ;) }))) }) (else_clause "else {\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }" else (compound_statement "{\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }" { (expression_statement "pbVar3 = &SUB_00000002;" (assignment_expression "pbVar3 = &SUB_00000002" identifier = (pointer_expression "&SUB_00000002" & identifier)) ;) (expression_statement "*param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;" (assignment_expression "*param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1" (pointer_expression "*param_2" * identifier) = (binary_expression "(*param_1 & 0x7f) << 7 | (uint)bVar1" (binary_expression "(*param_1 & 0x7f) << 7" (parenthesized_expression "(*param_1 & 0x7f)" ( (binary_expression "*param_1 & 0x7f" (pointer_expression "*param_1" * identifier) & number_literal) )) << number_literal) | (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "pbVar5 = local_c;" (assignment_expression "pbVar5 = local_c" identifier = identifier) ;) }))) (if_statement "if (local_c == (byte *)*puVar10) {\n    return pbVar3;\n  }" if (parenthesized_expression "(local_c == (byte *)*puVar10)" ( (binary_expression "local_c == (byte *)*puVar10" identifier == (cast_expression "(byte *)*puVar10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) )) (compound_statement "{\n    return pbVar3;\n  }" { (return_statement "return pbVar3;" return identifier ;) })) (expression_statement "pbVar7 = local_c;" (assignment_expression "pbVar7 = local_c" identifier = identifier) ;) (expression_statement "puVar14 = PTR___stack_chk_fail_0015ca14;" (assignment_expression "puVar14 = PTR___stack_chk_fail_0015ca14" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ca14)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ca14)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ca14)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ca14" * (cast_expression "(code *)PTR___stack_chk_fail_0015ca14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar13 = *(int **)(puVar14 + 0x12bed4);" (assignment_expression "piVar13 = *(int **)(puVar14 + 0x12bed4)" identifier = (pointer_expression "*(int **)(puVar14 + 0x12bed4)" * (cast_expression "(int **)(puVar14 + 0x12bed4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x12bed4)" ( (binary_expression "puVar14 + 0x12bed4" identifier + number_literal) ))))) ;) (expression_statement "pbVar3 = *(byte **)pbVar7;" (assignment_expression "pbVar3 = *(byte **)pbVar7" identifier = (pointer_expression "*(byte **)pbVar7" * (cast_expression "(byte **)pbVar7" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "pbStack_54 = (byte *)*piVar13;" (assignment_expression "pbStack_54 = (byte *)*piVar13" identifier = (cast_expression "(byte *)*piVar13" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar13" * identifier))) ;) (expression_statement "pbVar8 = pbVar7;" (assignment_expression "pbVar8 = pbVar7" identifier = identifier) ;) (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" identifier = identifier) ;) (if_statement "if (0 < (int)pbVar5) {\n    pbVar11 = (byte *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);\n  }" if (parenthesized_expression "(0 < (int)pbVar5)" ( (binary_expression "0 < (int)pbVar5" number_literal < (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    pbVar11 = (byte *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);\n  }" { (expression_statement "pbVar11 = (byte *)0x0;" (assignment_expression "pbVar11 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);" do (compound_statement "{\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    }" { (while_statement "while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }" { (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) (expression_statement "pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);" (assignment_expression "pbVar8 = (byte *)(uint)(bVar1 - 3 < 2)" identifier = (cast_expression "(byte *)(uint)(bVar1 - 3 < 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(bVar1 - 3 < 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 - 3 < 2)" ( (binary_expression "bVar1 - 3 < 2" (binary_expression "bVar1 - 3" identifier - number_literal) < number_literal) ))))) ;) (expression_statement "pbVar12 = pbVar3 + 1;" (assignment_expression "pbVar12 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar8 == (byte *)0x0) break;" if (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }" if (parenthesized_expression "((char)pbVar3[1] < '\0')" ( (binary_expression "(char)pbVar3[1] < '\0'" (cast_expression "(char)pbVar3[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar3[1]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }" { (expression_statement "pbVar8 = pbVar12;" (assignment_expression "pbVar8 = pbVar12" identifier = identifier) ;) (expression_statement "pbVar9 = (byte *)&iStack_58;" (assignment_expression "pbVar9 = (byte *)&iStack_58" identifier = (cast_expression "(byte *)&iStack_58" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&iStack_58" & identifier))) ;) (expression_statement "iVar4 = FUN_00030a88();" (assignment_expression "iVar4 = FUN_00030a88()" identifier = (call_expression "FUN_00030a88()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = iStack_58 + iVar4;" (assignment_expression "iVar4 = iStack_58 + iVar4" identifier = (binary_expression "iStack_58 + iVar4" identifier + identifier)) ;) }) (else_clause "else {\n          iVar4 = pbVar3[1] + 1;\n        }" else (compound_statement "{\n          iVar4 = pbVar3[1] + 1;\n        }" { (expression_statement "iVar4 = pbVar3[1] + 1;" (assignment_expression "iVar4 = pbVar3[1] + 1" identifier = (binary_expression "pbVar3[1] + 1" (subscript_expression "pbVar3[1]" identifier [ number_literal ]) + number_literal)) ;) }))) (expression_statement "pbVar3 = pbVar12 + iVar4;" (assignment_expression "pbVar3 = pbVar12 + iVar4" identifier = (binary_expression "pbVar12 + iVar4" identifier + identifier)) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar5 == pbVar11) goto LAB_00030c20;" if (parenthesized_expression "(pbVar5 == pbVar11)" ( (binary_expression "pbVar5 == pbVar11" identifier == identifier) )) (goto_statement "goto LAB_00030c20;" goto statement_identifier ;)) })) (expression_statement "pbVar3 = pbVar3 + 9;" (assignment_expression "pbVar3 = pbVar3 + 9" identifier = (binary_expression "pbVar3 + 9" identifier + number_literal)) ;) (if_statement "if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }" if (parenthesized_expression "(1 < bVar1 - 1)" ( (binary_expression "1 < bVar1 - 1" number_literal < (binary_expression "bVar1 - 1" identifier - number_literal)) )) (compound_statement "{\n        pbVar3 = pbVar12;\n      }" { (expression_statement "pbVar3 = pbVar12;" (assignment_expression "pbVar3 = pbVar12" identifier = identifier) ;) })) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar5 != pbVar11)" ( (binary_expression "pbVar5 != pbVar11" identifier != identifier) )) ;) })) (labeled_statement "LAB_00030c20:\n  *(byte **)pbVar7 = pbVar3;" statement_identifier : (expression_statement "*(byte **)pbVar7 = pbVar3;" (assignment_expression "*(byte **)pbVar7 = pbVar3" (pointer_expression "*(byte **)pbVar7" * (cast_expression "(byte **)pbVar7" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;)) (expression_statement "pbVar5 = (byte *)*piVar13;" (assignment_expression "pbVar5 = (byte *)*piVar13" identifier = (cast_expression "(byte *)*piVar13" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar13" * identifier))) ;) (if_statement "if (pbStack_54 == pbVar5) {\n    return pbVar5;\n  }" if (parenthesized_expression "(pbStack_54 == pbVar5)" ( (binary_expression "pbStack_54 == pbVar5" identifier == identifier) )) (compound_statement "{\n    return pbVar5;\n  }" { (return_statement "return pbVar5;" return identifier ;) })) (expression_statement "pcVar15 = *(code **)(puVar14 + 0x12beb8);" (assignment_expression "pcVar15 = *(code **)(puVar14 + 0x12beb8)" identifier = (pointer_expression "*(code **)(puVar14 + 0x12beb8)" * (cast_expression "(code **)(puVar14 + 0x12beb8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x12beb8)" ( (binary_expression "puVar14 + 0x12beb8" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if ((int)pbVar8 < (int)pbVar9) {\n    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }\n    sVar6 = (short)pbVar9;\n    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }\n  }\n  else {\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }" if (parenthesized_expression "((int)pbVar8 < (int)pbVar9)" ( (binary_expression "(int)pbVar8 < (int)pbVar9" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }\n    sVar6 = (short)pbVar9;\n    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }\n  }" { (if_statement "if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }" if (parenthesized_expression "((int)(pbVar8 + 0x31) < (int)pbVar9)" ( (binary_expression "(int)(pbVar8 + 0x31) < (int)pbVar9" (cast_expression "(int)(pbVar8 + 0x31)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar8 + 0x31)" ( (binary_expression "pbVar8 + 0x31" identifier + number_literal) ))) < (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      return pbVar9;\n    }" { (return_statement "return pbVar9;" return identifier ;) })) (expression_statement "sVar6 = (short)pbVar9;" (assignment_expression "sVar6 = (short)pbVar9" identifier = (cast_expression "(short)pbVar9" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }" if (parenthesized_expression "((int)pbVar9 <= (int)(pbVar8 + 0x1f))" ( (binary_expression "(int)pbVar9 <= (int)(pbVar8 + 0x1f)" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)(pbVar8 + 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar8 + 0x1f)" ( (binary_expression "pbVar8 + 0x1f" identifier + number_literal) )))) )) (compound_statement "{\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }" { (return_statement "return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);" return (cast_expression "(byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8])" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8])" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8])" ( (binary_expression "sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]" identifier + (cast_expression "(ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]" identifier [ (binary_expression "(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8" (parenthesized_expression "(*(int *)(pcVar15 + 0x12b96c) + 0x3530)" ( (binary_expression "*(int *)(pcVar15 + 0x12b96c) + 0x3530" (pointer_expression "*(int *)(pcVar15 + 0x12b96c)" * (cast_expression "(int *)(pcVar15 + 0x12b96c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x12b96c)" ( (binary_expression "pcVar15 + 0x12b96c" identifier + number_literal) )))) + number_literal) )) - (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ]))) ))))) ;) })) }) (else_clause "else {\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }" else (compound_statement "{\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }" { (if_statement "if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }" if (parenthesized_expression "((int)(pbVar9 + 0x31) < (int)pbVar8)" ( (binary_expression "(int)(pbVar9 + 0x31) < (int)pbVar8" (cast_expression "(int)(pbVar9 + 0x31)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar9 + 0x31)" ( (binary_expression "pbVar9 + 0x31" identifier + number_literal) ))) < (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      return pbVar8;\n    }" { (return_statement "return pbVar8;" return identifier ;) })) (expression_statement "sVar6 = (short)pbVar8;" (assignment_expression "sVar6 = (short)pbVar8" identifier = (cast_expression "(short)pbVar8" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }" if (parenthesized_expression "((int)pbVar8 <= (int)(pbVar9 + 0x1f))" ( (binary_expression "(int)pbVar8 <= (int)(pbVar9 + 0x1f)" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)(pbVar9 + 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar9 + 0x1f)" ( (binary_expression "pbVar9 + 0x1f" identifier + number_literal) )))) )) (compound_statement "{\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }" { (return_statement "return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);" return (cast_expression "(byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9])" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9])" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9])" ( (binary_expression "sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]" identifier + (cast_expression "(ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]" identifier [ (binary_expression "(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9" (parenthesized_expression "(*(int *)(pcVar15 + 0x12b96c) + 0x3530)" ( (binary_expression "*(int *)(pcVar15 + 0x12b96c) + 0x3530" (pointer_expression "*(int *)(pcVar15 + 0x12b96c)" * (cast_expression "(int *)(pcVar15 + 0x12b96c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x12b96c)" ( (binary_expression "pcVar15 + 0x12b96c" identifier + number_literal) )))) + number_literal) )) - (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ]))) ))))) ;) })) }))) (return_statement "return (byte *)(int)(short)(sVar6 + 1);" return (cast_expression "(byte *)(int)(short)(sVar6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(short)(sVar6 + 1)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)(sVar6 + 1)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(sVar6 + 1)" ( (binary_expression "sVar6 + 1" identifier + number_literal) ))))) ;) })))
(translation_unit "u8 sqlite3GetVarint32(uchar *p,u32 *v)\n\n{\n  byte bVar1;\n  byte bVar2;\n  undefined3 extraout_var;\n  u8 uVar5;\n  u32 *puVar3;\n  int iVar4;\n  u32 *puVar6;\n  u32 *puVar7;\n  u32 *puVar8;\n  u32 *puVar9;\n  undefined4 *puVar10;\n  u32 *puVar11;\n  u32 *p_00;\n  int *piVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  u32 uStack_58;\n  int iStack_54;\n  u64 v64;\n  u32 *local_c;\n  \n  puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;\n  bVar1 = p[1];\n  local_c = *(u32 **)PTR___stack_chk_guard_0015ca30;\n  if ((char)bVar1 < '\0') {\n    bVar2 = p[2];\n    if ((bVar2 & 0x80) == 0) {\n      *v = ((uint)bVar2 | (uint)*p << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      uVar5 = '\x03';\n      puVar8 = (u32 *)(uint)bVar2;\n    }\n    else {\n      uVar5 = sqlite3GetVarint(p,&v64);\n      if (v64._0_4_ != (u32 *)0x0) {\n        v64._4_4_ = 0xffffffff;\n      }\n      *v = v64._4_4_;\n      puVar8 = v64._0_4_;\n    }\n  }\n  else {\n    uVar5 = '\x02';\n    *v = (*p & 0x7f) << 7 | (uint)bVar1;\n    puVar8 = local_c;\n  }\n  if (local_c == (u32 *)*puVar10) {\n    return uVar5;\n  }\n  puVar6 = local_c;\n  puVar13 = PTR___stack_chk_fail_0015ca14;\n  (*(code *)PTR___stack_chk_fail_0015ca14)();\n  piVar12 = *(int **)(puVar13 + 0x12bed4);\n  puVar3 = (u32 *)*puVar6;\n  iStack_54 = *piVar12;\n  puVar7 = puVar6;\n  puVar9 = puVar8;\n  if (0 < (int)puVar8) {\n    puVar11 = (u32 *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *(byte *)puVar3;\n        puVar7 = (u32 *)(uint)(bVar1 - 3 < 2);\n        p_00 = (u32 *)((int)puVar3 + 1);\n        if (puVar7 == (u32 *)0x0) break;\n        if ((char)*(byte *)((int)puVar3 + 1) < '\0') {\n          puVar7 = p_00;\n          puVar9 = &uStack_58;\n          uVar5 = sqlite3GetVarint32((uchar *)p_00,&uStack_58);\n          iVar4 = uStack_58 + CONCAT31(extraout_var,uVar5);\n        }\n        else {\n          iVar4 = *(byte *)((int)puVar3 + 1) + 1;\n        }\n        puVar3 = (u32 *)((int)p_00 + iVar4);\n        puVar11 = (u32 *)((int)puVar11 + 1);\n        if (puVar8 == puVar11) goto LAB_00030c20;\n      }\n      puVar3 = (u32 *)((int)puVar3 + 9);\n      if (1 < bVar1 - 1) {\n        puVar3 = p_00;\n      }\n      puVar11 = (u32 *)((int)puVar11 + 1);\n    } while (puVar8 != puVar11);\n  }\nLAB_00030c20:\n  *puVar6 = (u32)puVar3;\n  iVar4 = *piVar12;\n  if (iStack_54 == iVar4) {\n    return (u8)iVar4;\n  }\n  pcVar14 = *(code **)(puVar13 + 0x12beb8);\n  (*pcVar14)();\n  if ((int)puVar7 < (int)puVar9) {\n    uVar5 = (u8)puVar9;\n    if ((int)((int)puVar7 + 0x31) < (int)puVar9) {\n      return uVar5;\n    }\n    if ((int)puVar9 <= (int)((int)puVar7 + 0x1f)) {\n      return uVar5 + *(byte *)((int)puVar9 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)\n                              );\n    }\n  }\n  else {\n    uVar5 = (u8)puVar7;\n    if ((int)((int)puVar9 + 0x31) < (int)puVar7) {\n      return uVar5;\n    }\n    if ((int)puVar7 <= (int)((int)puVar9 + 0x1f)) {\n      return uVar5 + *(byte *)((int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)\n                              );\n    }\n  }\n  return uVar5 + '\x01';\n}\n\n" (function_definition "u8 sqlite3GetVarint32(uchar *p,u32 *v)\n\n{\n  byte bVar1;\n  byte bVar2;\n  undefined3 extraout_var;\n  u8 uVar5;\n  u32 *puVar3;\n  int iVar4;\n  u32 *puVar6;\n  u32 *puVar7;\n  u32 *puVar8;\n  u32 *puVar9;\n  undefined4 *puVar10;\n  u32 *puVar11;\n  u32 *p_00;\n  int *piVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  u32 uStack_58;\n  int iStack_54;\n  u64 v64;\n  u32 *local_c;\n  \n  puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;\n  bVar1 = p[1];\n  local_c = *(u32 **)PTR___stack_chk_guard_0015ca30;\n  if ((char)bVar1 < '\0') {\n    bVar2 = p[2];\n    if ((bVar2 & 0x80) == 0) {\n      *v = ((uint)bVar2 | (uint)*p << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      uVar5 = '\x03';\n      puVar8 = (u32 *)(uint)bVar2;\n    }\n    else {\n      uVar5 = sqlite3GetVarint(p,&v64);\n      if (v64._0_4_ != (u32 *)0x0) {\n        v64._4_4_ = 0xffffffff;\n      }\n      *v = v64._4_4_;\n      puVar8 = v64._0_4_;\n    }\n  }\n  else {\n    uVar5 = '\x02';\n    *v = (*p & 0x7f) << 7 | (uint)bVar1;\n    puVar8 = local_c;\n  }\n  if (local_c == (u32 *)*puVar10) {\n    return uVar5;\n  }\n  puVar6 = local_c;\n  puVar13 = PTR___stack_chk_fail_0015ca14;\n  (*(code *)PTR___stack_chk_fail_0015ca14)();\n  piVar12 = *(int **)(puVar13 + 0x12bed4);\n  puVar3 = (u32 *)*puVar6;\n  iStack_54 = *piVar12;\n  puVar7 = puVar6;\n  puVar9 = puVar8;\n  if (0 < (int)puVar8) {\n    puVar11 = (u32 *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *(byte *)puVar3;\n        puVar7 = (u32 *)(uint)(bVar1 - 3 < 2);\n        p_00 = (u32 *)((int)puVar3 + 1);\n        if (puVar7 == (u32 *)0x0) break;\n        if ((char)*(byte *)((int)puVar3 + 1) < '\0') {\n          puVar7 = p_00;\n          puVar9 = &uStack_58;\n          uVar5 = sqlite3GetVarint32((uchar *)p_00,&uStack_58);\n          iVar4 = uStack_58 + CONCAT31(extraout_var,uVar5);\n        }\n        else {\n          iVar4 = *(byte *)((int)puVar3 + 1) + 1;\n        }\n        puVar3 = (u32 *)((int)p_00 + iVar4);\n        puVar11 = (u32 *)((int)puVar11 + 1);\n        if (puVar8 == puVar11) goto LAB_00030c20;\n      }\n      puVar3 = (u32 *)((int)puVar3 + 9);\n      if (1 < bVar1 - 1) {\n        puVar3 = p_00;\n      }\n      puVar11 = (u32 *)((int)puVar11 + 1);\n    } while (puVar8 != puVar11);\n  }\nLAB_00030c20:\n  *puVar6 = (u32)puVar3;\n  iVar4 = *piVar12;\n  if (iStack_54 == iVar4) {\n    return (u8)iVar4;\n  }\n  pcVar14 = *(code **)(puVar13 + 0x12beb8);\n  (*pcVar14)();\n  if ((int)puVar7 < (int)puVar9) {\n    uVar5 = (u8)puVar9;\n    if ((int)((int)puVar7 + 0x31) < (int)puVar9) {\n      return uVar5;\n    }\n    if ((int)puVar9 <= (int)((int)puVar7 + 0x1f)) {\n      return uVar5 + *(byte *)((int)puVar9 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)\n                              );\n    }\n  }\n  else {\n    uVar5 = (u8)puVar7;\n    if ((int)((int)puVar9 + 0x31) < (int)puVar7) {\n      return uVar5;\n    }\n    if ((int)puVar7 <= (int)((int)puVar9 + 0x1f)) {\n      return uVar5 + *(byte *)((int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)\n                              );\n    }\n  }\n  return uVar5 + '\x01';\n}" type_identifier (function_declarator "sqlite3GetVarint32(uchar *p,u32 *v)" identifier (parameter_list "(uchar *p,u32 *v)" ( (parameter_declaration "uchar *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "u32 *v" type_identifier (pointer_declarator "*v" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  undefined3 extraout_var;\n  u8 uVar5;\n  u32 *puVar3;\n  int iVar4;\n  u32 *puVar6;\n  u32 *puVar7;\n  u32 *puVar8;\n  u32 *puVar9;\n  undefined4 *puVar10;\n  u32 *puVar11;\n  u32 *p_00;\n  int *piVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  u32 uStack_58;\n  int iStack_54;\n  u64 v64;\n  u32 *local_c;\n  \n  puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;\n  bVar1 = p[1];\n  local_c = *(u32 **)PTR___stack_chk_guard_0015ca30;\n  if ((char)bVar1 < '\0') {\n    bVar2 = p[2];\n    if ((bVar2 & 0x80) == 0) {\n      *v = ((uint)bVar2 | (uint)*p << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      uVar5 = '\x03';\n      puVar8 = (u32 *)(uint)bVar2;\n    }\n    else {\n      uVar5 = sqlite3GetVarint(p,&v64);\n      if (v64._0_4_ != (u32 *)0x0) {\n        v64._4_4_ = 0xffffffff;\n      }\n      *v = v64._4_4_;\n      puVar8 = v64._0_4_;\n    }\n  }\n  else {\n    uVar5 = '\x02';\n    *v = (*p & 0x7f) << 7 | (uint)bVar1;\n    puVar8 = local_c;\n  }\n  if (local_c == (u32 *)*puVar10) {\n    return uVar5;\n  }\n  puVar6 = local_c;\n  puVar13 = PTR___stack_chk_fail_0015ca14;\n  (*(code *)PTR___stack_chk_fail_0015ca14)();\n  piVar12 = *(int **)(puVar13 + 0x12bed4);\n  puVar3 = (u32 *)*puVar6;\n  iStack_54 = *piVar12;\n  puVar7 = puVar6;\n  puVar9 = puVar8;\n  if (0 < (int)puVar8) {\n    puVar11 = (u32 *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *(byte *)puVar3;\n        puVar7 = (u32 *)(uint)(bVar1 - 3 < 2);\n        p_00 = (u32 *)((int)puVar3 + 1);\n        if (puVar7 == (u32 *)0x0) break;\n        if ((char)*(byte *)((int)puVar3 + 1) < '\0') {\n          puVar7 = p_00;\n          puVar9 = &uStack_58;\n          uVar5 = sqlite3GetVarint32((uchar *)p_00,&uStack_58);\n          iVar4 = uStack_58 + CONCAT31(extraout_var,uVar5);\n        }\n        else {\n          iVar4 = *(byte *)((int)puVar3 + 1) + 1;\n        }\n        puVar3 = (u32 *)((int)p_00 + iVar4);\n        puVar11 = (u32 *)((int)puVar11 + 1);\n        if (puVar8 == puVar11) goto LAB_00030c20;\n      }\n      puVar3 = (u32 *)((int)puVar3 + 9);\n      if (1 < bVar1 - 1) {\n        puVar3 = p_00;\n      }\n      puVar11 = (u32 *)((int)puVar11 + 1);\n    } while (puVar8 != puVar11);\n  }\nLAB_00030c20:\n  *puVar6 = (u32)puVar3;\n  iVar4 = *piVar12;\n  if (iStack_54 == iVar4) {\n    return (u8)iVar4;\n  }\n  pcVar14 = *(code **)(puVar13 + 0x12beb8);\n  (*pcVar14)();\n  if ((int)puVar7 < (int)puVar9) {\n    uVar5 = (u8)puVar9;\n    if ((int)((int)puVar7 + 0x31) < (int)puVar9) {\n      return uVar5;\n    }\n    if ((int)puVar9 <= (int)((int)puVar7 + 0x1f)) {\n      return uVar5 + *(byte *)((int)puVar9 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)\n                              );\n    }\n  }\n  else {\n    uVar5 = (u8)puVar7;\n    if ((int)((int)puVar9 + 0x31) < (int)puVar7) {\n      return uVar5;\n    }\n    if ((int)puVar7 <= (int)((int)puVar9 + 0x1f)) {\n      return uVar5 + *(byte *)((int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)\n                              );\n    }\n  }\n  return uVar5 + '\x01';\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "undefined3 extraout_var;" type_identifier identifier ;) (declaration "u8 uVar5;" type_identifier identifier ;) (declaration "u32 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "u32 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "u32 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "u32 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "u32 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "u32 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "u32 *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "u32 uStack_58;" type_identifier identifier ;) (declaration "int iStack_54;" primitive_type identifier ;) (declaration "u64 v64;" type_identifier identifier ;) (declaration "u32 *local_c;" type_identifier (pointer_declarator "*local_c" * identifier) ;) (expression_statement "puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;" (assignment_expression "puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30" identifier = (cast_expression "(undefined4 *)PTR___stack_chk_guard_0015ca30" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar1 = p[1];" (assignment_expression "bVar1 = p[1]" identifier = (subscript_expression "p[1]" identifier [ number_literal ])) ;) (expression_statement "local_c = *(u32 **)PTR___stack_chk_guard_0015ca30;" (assignment_expression "local_c = *(u32 **)PTR___stack_chk_guard_0015ca30" identifier = (pointer_expression "*(u32 **)PTR___stack_chk_guard_0015ca30" * (cast_expression "(u32 **)PTR___stack_chk_guard_0015ca30" ( (type_descriptor "u32 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((char)bVar1 < '\0') {\n    bVar2 = p[2];\n    if ((bVar2 & 0x80) == 0) {\n      *v = ((uint)bVar2 | (uint)*p << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      uVar5 = '\x03';\n      puVar8 = (u32 *)(uint)bVar2;\n    }\n    else {\n      uVar5 = sqlite3GetVarint(p,&v64);\n      if (v64._0_4_ != (u32 *)0x0) {\n        v64._4_4_ = 0xffffffff;\n      }\n      *v = v64._4_4_;\n      puVar8 = v64._0_4_;\n    }\n  }\n  else {\n    uVar5 = '\x02';\n    *v = (*p & 0x7f) << 7 | (uint)bVar1;\n    puVar8 = local_c;\n  }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar2 = p[2];\n    if ((bVar2 & 0x80) == 0) {\n      *v = ((uint)bVar2 | (uint)*p << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      uVar5 = '\x03';\n      puVar8 = (u32 *)(uint)bVar2;\n    }\n    else {\n      uVar5 = sqlite3GetVarint(p,&v64);\n      if (v64._0_4_ != (u32 *)0x0) {\n        v64._4_4_ = 0xffffffff;\n      }\n      *v = v64._4_4_;\n      puVar8 = v64._0_4_;\n    }\n  }" { (expression_statement "bVar2 = p[2];" (assignment_expression "bVar2 = p[2]" identifier = (subscript_expression "p[2]" identifier [ number_literal ])) ;) (if_statement "if ((bVar2 & 0x80) == 0) {\n      *v = ((uint)bVar2 | (uint)*p << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      uVar5 = '\x03';\n      puVar8 = (u32 *)(uint)bVar2;\n    }\n    else {\n      uVar5 = sqlite3GetVarint(p,&v64);\n      if (v64._0_4_ != (u32 *)0x0) {\n        v64._4_4_ = 0xffffffff;\n      }\n      *v = v64._4_4_;\n      puVar8 = v64._0_4_;\n    }" if (parenthesized_expression "((bVar2 & 0x80) == 0)" ( (binary_expression "(bVar2 & 0x80) == 0" (parenthesized_expression "(bVar2 & 0x80)" ( (binary_expression "bVar2 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      *v = ((uint)bVar2 | (uint)*p << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      uVar5 = '\x03';\n      puVar8 = (u32 *)(uint)bVar2;\n    }" { (expression_statement "*v = ((uint)bVar2 | (uint)*p << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;" (assignment_expression "*v = ((uint)bVar2 | (uint)*p << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7" (pointer_expression "*v" * identifier) = (binary_expression "((uint)bVar2 | (uint)*p << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7" (binary_expression "((uint)bVar2 | (uint)*p << 0xe) & 0x1fc07f" (parenthesized_expression "((uint)bVar2 | (uint)*p << 0xe)" ( (binary_expression "(uint)bVar2 | (uint)*p << 0xe" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) | (binary_expression "(uint)*p << 0xe" (binary_expression "(uint)*p" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal)) )) & number_literal) | (binary_expression "(bVar1 & 0x7f) << 7" (parenthesized_expression "(bVar1 & 0x7f)" ( (binary_expression "bVar1 & 0x7f" identifier & number_literal) )) << number_literal))) ;) (expression_statement "uVar5 = '\x03';" (assignment_expression "uVar5 = '\x03'" identifier = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "puVar8 = (u32 *)(uint)bVar2;" (assignment_expression "puVar8 = (u32 *)(uint)bVar2" identifier = (cast_expression "(u32 *)(uint)bVar2" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) (else_clause "else {\n      uVar5 = sqlite3GetVarint(p,&v64);\n      if (v64._0_4_ != (u32 *)0x0) {\n        v64._4_4_ = 0xffffffff;\n      }\n      *v = v64._4_4_;\n      puVar8 = v64._0_4_;\n    }" else (compound_statement "{\n      uVar5 = sqlite3GetVarint(p,&v64);\n      if (v64._0_4_ != (u32 *)0x0) {\n        v64._4_4_ = 0xffffffff;\n      }\n      *v = v64._4_4_;\n      puVar8 = v64._0_4_;\n    }" { (expression_statement "uVar5 = sqlite3GetVarint(p,&v64);" (assignment_expression "uVar5 = sqlite3GetVarint(p,&v64)" identifier = (call_expression "sqlite3GetVarint(p,&v64)" identifier (argument_list "(p,&v64)" ( identifier , (pointer_expression "&v64" & identifier) )))) ;) (if_statement "if (v64._0_4_ != (u32 *)0x0) {\n        v64._4_4_ = 0xffffffff;\n      }" if (parenthesized_expression "(v64._0_4_ != (u32 *)0x0)" ( (binary_expression "v64._0_4_ != (u32 *)0x0" (field_expression "v64._0_4_" identifier . field_identifier) != (cast_expression "(u32 *)0x0" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        v64._4_4_ = 0xffffffff;\n      }" { (expression_statement "v64._4_4_ = 0xffffffff;" (assignment_expression "v64._4_4_ = 0xffffffff" (field_expression "v64._4_4_" identifier . field_identifier) = number_literal) ;) })) (expression_statement "*v = v64._4_4_;" (assignment_expression "*v = v64._4_4_" (pointer_expression "*v" * identifier) = (field_expression "v64._4_4_" identifier . field_identifier)) ;) (expression_statement "puVar8 = v64._0_4_;" (assignment_expression "puVar8 = v64._0_4_" identifier = (field_expression "v64._0_4_" identifier . field_identifier)) ;) }))) }) (else_clause "else {\n    uVar5 = '\x02';\n    *v = (*p & 0x7f) << 7 | (uint)bVar1;\n    puVar8 = local_c;\n  }" else (compound_statement "{\n    uVar5 = '\x02';\n    *v = (*p & 0x7f) << 7 | (uint)bVar1;\n    puVar8 = local_c;\n  }" { (expression_statement "uVar5 = '\x02';" (assignment_expression "uVar5 = '\x02'" identifier = (char_literal "'\x02'" ' escape_sequence ')) ;) (expression_statement "*v = (*p & 0x7f) << 7 | (uint)bVar1;" (assignment_expression "*v = (*p & 0x7f) << 7 | (uint)bVar1" (pointer_expression "*v" * identifier) = (binary_expression "(*p & 0x7f) << 7 | (uint)bVar1" (binary_expression "(*p & 0x7f) << 7" (parenthesized_expression "(*p & 0x7f)" ( (binary_expression "*p & 0x7f" (pointer_expression "*p" * identifier) & number_literal) )) << number_literal) | (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "puVar8 = local_c;" (assignment_expression "puVar8 = local_c" identifier = identifier) ;) }))) (if_statement "if (local_c == (u32 *)*puVar10) {\n    return uVar5;\n  }" if (parenthesized_expression "(local_c == (u32 *)*puVar10)" ( (binary_expression "local_c == (u32 *)*puVar10" identifier == (cast_expression "(u32 *)*puVar10" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) )) (compound_statement "{\n    return uVar5;\n  }" { (return_statement "return uVar5;" return identifier ;) })) (expression_statement "puVar6 = local_c;" (assignment_expression "puVar6 = local_c" identifier = identifier) ;) (expression_statement "puVar13 = PTR___stack_chk_fail_0015ca14;" (assignment_expression "puVar13 = PTR___stack_chk_fail_0015ca14" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ca14)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ca14)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ca14)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ca14" * (cast_expression "(code *)PTR___stack_chk_fail_0015ca14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar12 = *(int **)(puVar13 + 0x12bed4);" (assignment_expression "piVar12 = *(int **)(puVar13 + 0x12bed4)" identifier = (pointer_expression "*(int **)(puVar13 + 0x12bed4)" * (cast_expression "(int **)(puVar13 + 0x12bed4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x12bed4)" ( (binary_expression "puVar13 + 0x12bed4" identifier + number_literal) ))))) ;) (expression_statement "puVar3 = (u32 *)*puVar6;" (assignment_expression "puVar3 = (u32 *)*puVar6" identifier = (cast_expression "(u32 *)*puVar6" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) ;) (expression_statement "iStack_54 = *piVar12;" (assignment_expression "iStack_54 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" identifier = identifier) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) (if_statement "if (0 < (int)puVar8) {\n    puVar11 = (u32 *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *(byte *)puVar3;\n        puVar7 = (u32 *)(uint)(bVar1 - 3 < 2);\n        p_00 = (u32 *)((int)puVar3 + 1);\n        if (puVar7 == (u32 *)0x0) break;\n        if ((char)*(byte *)((int)puVar3 + 1) < '\0') {\n          puVar7 = p_00;\n          puVar9 = &uStack_58;\n          uVar5 = sqlite3GetVarint32((uchar *)p_00,&uStack_58);\n          iVar4 = uStack_58 + CONCAT31(extraout_var,uVar5);\n        }\n        else {\n          iVar4 = *(byte *)((int)puVar3 + 1) + 1;\n        }\n        puVar3 = (u32 *)((int)p_00 + iVar4);\n        puVar11 = (u32 *)((int)puVar11 + 1);\n        if (puVar8 == puVar11) goto LAB_00030c20;\n      }\n      puVar3 = (u32 *)((int)puVar3 + 9);\n      if (1 < bVar1 - 1) {\n        puVar3 = p_00;\n      }\n      puVar11 = (u32 *)((int)puVar11 + 1);\n    } while (puVar8 != puVar11);\n  }" if (parenthesized_expression "(0 < (int)puVar8)" ( (binary_expression "0 < (int)puVar8" number_literal < (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    puVar11 = (u32 *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *(byte *)puVar3;\n        puVar7 = (u32 *)(uint)(bVar1 - 3 < 2);\n        p_00 = (u32 *)((int)puVar3 + 1);\n        if (puVar7 == (u32 *)0x0) break;\n        if ((char)*(byte *)((int)puVar3 + 1) < '\0') {\n          puVar7 = p_00;\n          puVar9 = &uStack_58;\n          uVar5 = sqlite3GetVarint32((uchar *)p_00,&uStack_58);\n          iVar4 = uStack_58 + CONCAT31(extraout_var,uVar5);\n        }\n        else {\n          iVar4 = *(byte *)((int)puVar3 + 1) + 1;\n        }\n        puVar3 = (u32 *)((int)p_00 + iVar4);\n        puVar11 = (u32 *)((int)puVar11 + 1);\n        if (puVar8 == puVar11) goto LAB_00030c20;\n      }\n      puVar3 = (u32 *)((int)puVar3 + 9);\n      if (1 < bVar1 - 1) {\n        puVar3 = p_00;\n      }\n      puVar11 = (u32 *)((int)puVar11 + 1);\n    } while (puVar8 != puVar11);\n  }" { (expression_statement "puVar11 = (u32 *)0x0;" (assignment_expression "puVar11 = (u32 *)0x0" identifier = (cast_expression "(u32 *)0x0" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      while( true ) {\n        bVar1 = *(byte *)puVar3;\n        puVar7 = (u32 *)(uint)(bVar1 - 3 < 2);\n        p_00 = (u32 *)((int)puVar3 + 1);\n        if (puVar7 == (u32 *)0x0) break;\n        if ((char)*(byte *)((int)puVar3 + 1) < '\0') {\n          puVar7 = p_00;\n          puVar9 = &uStack_58;\n          uVar5 = sqlite3GetVarint32((uchar *)p_00,&uStack_58);\n          iVar4 = uStack_58 + CONCAT31(extraout_var,uVar5);\n        }\n        else {\n          iVar4 = *(byte *)((int)puVar3 + 1) + 1;\n        }\n        puVar3 = (u32 *)((int)p_00 + iVar4);\n        puVar11 = (u32 *)((int)puVar11 + 1);\n        if (puVar8 == puVar11) goto LAB_00030c20;\n      }\n      puVar3 = (u32 *)((int)puVar3 + 9);\n      if (1 < bVar1 - 1) {\n        puVar3 = p_00;\n      }\n      puVar11 = (u32 *)((int)puVar11 + 1);\n    } while (puVar8 != puVar11);" do (compound_statement "{\n      while( true ) {\n        bVar1 = *(byte *)puVar3;\n        puVar7 = (u32 *)(uint)(bVar1 - 3 < 2);\n        p_00 = (u32 *)((int)puVar3 + 1);\n        if (puVar7 == (u32 *)0x0) break;\n        if ((char)*(byte *)((int)puVar3 + 1) < '\0') {\n          puVar7 = p_00;\n          puVar9 = &uStack_58;\n          uVar5 = sqlite3GetVarint32((uchar *)p_00,&uStack_58);\n          iVar4 = uStack_58 + CONCAT31(extraout_var,uVar5);\n        }\n        else {\n          iVar4 = *(byte *)((int)puVar3 + 1) + 1;\n        }\n        puVar3 = (u32 *)((int)p_00 + iVar4);\n        puVar11 = (u32 *)((int)puVar11 + 1);\n        if (puVar8 == puVar11) goto LAB_00030c20;\n      }\n      puVar3 = (u32 *)((int)puVar3 + 9);\n      if (1 < bVar1 - 1) {\n        puVar3 = p_00;\n      }\n      puVar11 = (u32 *)((int)puVar11 + 1);\n    }" { (while_statement "while( true ) {\n        bVar1 = *(byte *)puVar3;\n        puVar7 = (u32 *)(uint)(bVar1 - 3 < 2);\n        p_00 = (u32 *)((int)puVar3 + 1);\n        if (puVar7 == (u32 *)0x0) break;\n        if ((char)*(byte *)((int)puVar3 + 1) < '\0') {\n          puVar7 = p_00;\n          puVar9 = &uStack_58;\n          uVar5 = sqlite3GetVarint32((uchar *)p_00,&uStack_58);\n          iVar4 = uStack_58 + CONCAT31(extraout_var,uVar5);\n        }\n        else {\n          iVar4 = *(byte *)((int)puVar3 + 1) + 1;\n        }\n        puVar3 = (u32 *)((int)p_00 + iVar4);\n        puVar11 = (u32 *)((int)puVar11 + 1);\n        if (puVar8 == puVar11) goto LAB_00030c20;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        bVar1 = *(byte *)puVar3;\n        puVar7 = (u32 *)(uint)(bVar1 - 3 < 2);\n        p_00 = (u32 *)((int)puVar3 + 1);\n        if (puVar7 == (u32 *)0x0) break;\n        if ((char)*(byte *)((int)puVar3 + 1) < '\0') {\n          puVar7 = p_00;\n          puVar9 = &uStack_58;\n          uVar5 = sqlite3GetVarint32((uchar *)p_00,&uStack_58);\n          iVar4 = uStack_58 + CONCAT31(extraout_var,uVar5);\n        }\n        else {\n          iVar4 = *(byte *)((int)puVar3 + 1) + 1;\n        }\n        puVar3 = (u32 *)((int)p_00 + iVar4);\n        puVar11 = (u32 *)((int)puVar11 + 1);\n        if (puVar8 == puVar11) goto LAB_00030c20;\n      }" { (expression_statement "bVar1 = *(byte *)puVar3;" (assignment_expression "bVar1 = *(byte *)puVar3" identifier = (pointer_expression "*(byte *)puVar3" * (cast_expression "(byte *)puVar3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar7 = (u32 *)(uint)(bVar1 - 3 < 2);" (assignment_expression "puVar7 = (u32 *)(uint)(bVar1 - 3 < 2)" identifier = (cast_expression "(u32 *)(uint)(bVar1 - 3 < 2)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(bVar1 - 3 < 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 - 3 < 2)" ( (binary_expression "bVar1 - 3 < 2" (binary_expression "bVar1 - 3" identifier - number_literal) < number_literal) ))))) ;) (expression_statement "p_00 = (u32 *)((int)puVar3 + 1);" (assignment_expression "p_00 = (u32 *)((int)puVar3 + 1)" identifier = (cast_expression "(u32 *)((int)puVar3 + 1)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 1)" ( (binary_expression "(int)puVar3 + 1" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar7 == (u32 *)0x0) break;" if (parenthesized_expression "(puVar7 == (u32 *)0x0)" ( (binary_expression "puVar7 == (u32 *)0x0" identifier == (cast_expression "(u32 *)0x0" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if ((char)*(byte *)((int)puVar3 + 1) < '\0') {\n          puVar7 = p_00;\n          puVar9 = &uStack_58;\n          uVar5 = sqlite3GetVarint32((uchar *)p_00,&uStack_58);\n          iVar4 = uStack_58 + CONCAT31(extraout_var,uVar5);\n        }\n        else {\n          iVar4 = *(byte *)((int)puVar3 + 1) + 1;\n        }" if (parenthesized_expression "((char)*(byte *)((int)puVar3 + 1) < '\0')" ( (binary_expression "(char)*(byte *)((int)puVar3 + 1) < '\0'" (cast_expression "(char)*(byte *)((int)puVar3 + 1)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)((int)puVar3 + 1)" * (cast_expression "(byte *)((int)puVar3 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 1)" ( (binary_expression "(int)puVar3 + 1" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          puVar7 = p_00;\n          puVar9 = &uStack_58;\n          uVar5 = sqlite3GetVarint32((uchar *)p_00,&uStack_58);\n          iVar4 = uStack_58 + CONCAT31(extraout_var,uVar5);\n        }" { (expression_statement "puVar7 = p_00;" (assignment_expression "puVar7 = p_00" identifier = identifier) ;) (expression_statement "puVar9 = &uStack_58;" (assignment_expression "puVar9 = &uStack_58" identifier = (pointer_expression "&uStack_58" & identifier)) ;) (expression_statement "uVar5 = sqlite3GetVarint32((uchar *)p_00,&uStack_58);" (assignment_expression "uVar5 = sqlite3GetVarint32((uchar *)p_00,&uStack_58)" identifier = (call_expression "sqlite3GetVarint32((uchar *)p_00,&uStack_58)" identifier (argument_list "((uchar *)p_00,&uStack_58)" ( (cast_expression "(uchar *)p_00" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&uStack_58" & identifier) )))) ;) (expression_statement "iVar4 = uStack_58 + CONCAT31(extraout_var,uVar5);" (assignment_expression "iVar4 = uStack_58 + CONCAT31(extraout_var,uVar5)" identifier = (binary_expression "uStack_58 + CONCAT31(extraout_var,uVar5)" identifier + (call_expression "CONCAT31(extraout_var,uVar5)" identifier (argument_list "(extraout_var,uVar5)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n          iVar4 = *(byte *)((int)puVar3 + 1) + 1;\n        }" else (compound_statement "{\n          iVar4 = *(byte *)((int)puVar3 + 1) + 1;\n        }" { (expression_statement "iVar4 = *(byte *)((int)puVar3 + 1) + 1;" (assignment_expression "iVar4 = *(byte *)((int)puVar3 + 1) + 1" identifier = (binary_expression "*(byte *)((int)puVar3 + 1) + 1" (pointer_expression "*(byte *)((int)puVar3 + 1)" * (cast_expression "(byte *)((int)puVar3 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 1)" ( (binary_expression "(int)puVar3 + 1" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal)) ;) }))) (expression_statement "puVar3 = (u32 *)((int)p_00 + iVar4);" (assignment_expression "puVar3 = (u32 *)((int)p_00 + iVar4)" identifier = (cast_expression "(u32 *)((int)p_00 + iVar4)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_00 + iVar4)" ( (binary_expression "(int)p_00 + iVar4" (cast_expression "(int)p_00" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar11 = (u32 *)((int)puVar11 + 1);" (assignment_expression "puVar11 = (u32 *)((int)puVar11 + 1)" identifier = (cast_expression "(u32 *)((int)puVar11 + 1)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + 1)" ( (binary_expression "(int)puVar11 + 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar8 == puVar11) goto LAB_00030c20;" if (parenthesized_expression "(puVar8 == puVar11)" ( (binary_expression "puVar8 == puVar11" identifier == identifier) )) (goto_statement "goto LAB_00030c20;" goto statement_identifier ;)) })) (expression_statement "puVar3 = (u32 *)((int)puVar3 + 9);" (assignment_expression "puVar3 = (u32 *)((int)puVar3 + 9)" identifier = (cast_expression "(u32 *)((int)puVar3 + 9)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 9)" ( (binary_expression "(int)puVar3 + 9" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (1 < bVar1 - 1) {\n        puVar3 = p_00;\n      }" if (parenthesized_expression "(1 < bVar1 - 1)" ( (binary_expression "1 < bVar1 - 1" number_literal < (binary_expression "bVar1 - 1" identifier - number_literal)) )) (compound_statement "{\n        puVar3 = p_00;\n      }" { (expression_statement "puVar3 = p_00;" (assignment_expression "puVar3 = p_00" identifier = identifier) ;) })) (expression_statement "puVar11 = (u32 *)((int)puVar11 + 1);" (assignment_expression "puVar11 = (u32 *)((int)puVar11 + 1)" identifier = (cast_expression "(u32 *)((int)puVar11 + 1)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + 1)" ( (binary_expression "(int)puVar11 + 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(puVar8 != puVar11)" ( (binary_expression "puVar8 != puVar11" identifier != identifier) )) ;) })) (labeled_statement "LAB_00030c20:\n  *puVar6 = (u32)puVar3;" statement_identifier : (expression_statement "*puVar6 = (u32)puVar3;" (assignment_expression "*puVar6 = (u32)puVar3" (pointer_expression "*puVar6" * identifier) = (cast_expression "(u32)puVar3" ( (type_descriptor "u32" type_identifier) ) identifier)) ;)) (expression_statement "iVar4 = *piVar12;" (assignment_expression "iVar4 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (if_statement "if (iStack_54 == iVar4) {\n    return (u8)iVar4;\n  }" if (parenthesized_expression "(iStack_54 == iVar4)" ( (binary_expression "iStack_54 == iVar4" identifier == identifier) )) (compound_statement "{\n    return (u8)iVar4;\n  }" { (return_statement "return (u8)iVar4;" return (cast_expression "(u8)iVar4" ( (type_descriptor "u8" type_identifier) ) identifier) ;) })) (expression_statement "pcVar14 = *(code **)(puVar13 + 0x12beb8);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0x12beb8)" identifier = (pointer_expression "*(code **)(puVar13 + 0x12beb8)" * (cast_expression "(code **)(puVar13 + 0x12beb8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x12beb8)" ( (binary_expression "puVar13 + 0x12beb8" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar14)();" (call_expression "(*pcVar14)()" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if ((int)puVar7 < (int)puVar9) {\n    uVar5 = (u8)puVar9;\n    if ((int)((int)puVar7 + 0x31) < (int)puVar9) {\n      return uVar5;\n    }\n    if ((int)puVar9 <= (int)((int)puVar7 + 0x1f)) {\n      return uVar5 + *(byte *)((int)puVar9 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)\n                              );\n    }\n  }\n  else {\n    uVar5 = (u8)puVar7;\n    if ((int)((int)puVar9 + 0x31) < (int)puVar7) {\n      return uVar5;\n    }\n    if ((int)puVar7 <= (int)((int)puVar9 + 0x1f)) {\n      return uVar5 + *(byte *)((int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)\n                              );\n    }\n  }" if (parenthesized_expression "((int)puVar7 < (int)puVar9)" ( (binary_expression "(int)puVar7 < (int)puVar9" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar5 = (u8)puVar9;\n    if ((int)((int)puVar7 + 0x31) < (int)puVar9) {\n      return uVar5;\n    }\n    if ((int)puVar9 <= (int)((int)puVar7 + 0x1f)) {\n      return uVar5 + *(byte *)((int)puVar9 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)\n                              );\n    }\n  }" { (expression_statement "uVar5 = (u8)puVar9;" (assignment_expression "uVar5 = (u8)puVar9" identifier = (cast_expression "(u8)puVar9" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (if_statement "if ((int)((int)puVar7 + 0x31) < (int)puVar9) {\n      return uVar5;\n    }" if (parenthesized_expression "((int)((int)puVar7 + 0x31) < (int)puVar9)" ( (binary_expression "(int)((int)puVar7 + 0x31) < (int)puVar9" (cast_expression "(int)((int)puVar7 + 0x31)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar7 + 0x31)" ( (binary_expression "(int)puVar7 + 0x31" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) < (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      return uVar5;\n    }" { (return_statement "return uVar5;" return identifier ;) })) (if_statement "if ((int)puVar9 <= (int)((int)puVar7 + 0x1f)) {\n      return uVar5 + *(byte *)((int)puVar9 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)\n                              );\n    }" if (parenthesized_expression "((int)puVar9 <= (int)((int)puVar7 + 0x1f))" ( (binary_expression "(int)puVar9 <= (int)((int)puVar7 + 0x1f)" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)((int)puVar7 + 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar7 + 0x1f)" ( (binary_expression "(int)puVar7 + 0x1f" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )) (compound_statement "{\n      return uVar5 + *(byte *)((int)puVar9 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)\n                              );\n    }" { (return_statement "return uVar5 + *(byte *)((int)puVar9 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)\n                              );" return (binary_expression "uVar5 + *(byte *)((int)puVar9 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)\n                              )" identifier + (pointer_expression "*(byte *)((int)puVar9 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)\n                              )" * (cast_expression "(byte *)((int)puVar9 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)\n                              )" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)\n                              )" ( (binary_expression "(int)puVar9 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7)" ( (binary_expression "(*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar7" (parenthesized_expression "(*(int *)(pcVar14 + 0x12b96c) + 0x3530)" ( (binary_expression "*(int *)(pcVar14 + 0x12b96c) + 0x3530" (pointer_expression "*(int *)(pcVar14 + 0x12b96c)" * (cast_expression "(int *)(pcVar14 + 0x12b96c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar14 + 0x12b96c)" ( (binary_expression "pcVar14 + 0x12b96c" identifier + number_literal) )))) + number_literal) )) - (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) }) (else_clause "else {\n    uVar5 = (u8)puVar7;\n    if ((int)((int)puVar9 + 0x31) < (int)puVar7) {\n      return uVar5;\n    }\n    if ((int)puVar7 <= (int)((int)puVar9 + 0x1f)) {\n      return uVar5 + *(byte *)((int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)\n                              );\n    }\n  }" else (compound_statement "{\n    uVar5 = (u8)puVar7;\n    if ((int)((int)puVar9 + 0x31) < (int)puVar7) {\n      return uVar5;\n    }\n    if ((int)puVar7 <= (int)((int)puVar9 + 0x1f)) {\n      return uVar5 + *(byte *)((int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)\n                              );\n    }\n  }" { (expression_statement "uVar5 = (u8)puVar7;" (assignment_expression "uVar5 = (u8)puVar7" identifier = (cast_expression "(u8)puVar7" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (if_statement "if ((int)((int)puVar9 + 0x31) < (int)puVar7) {\n      return uVar5;\n    }" if (parenthesized_expression "((int)((int)puVar9 + 0x31) < (int)puVar7)" ( (binary_expression "(int)((int)puVar9 + 0x31) < (int)puVar7" (cast_expression "(int)((int)puVar9 + 0x31)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar9 + 0x31)" ( (binary_expression "(int)puVar9 + 0x31" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) < (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      return uVar5;\n    }" { (return_statement "return uVar5;" return identifier ;) })) (if_statement "if ((int)puVar7 <= (int)((int)puVar9 + 0x1f)) {\n      return uVar5 + *(byte *)((int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)\n                              );\n    }" if (parenthesized_expression "((int)puVar7 <= (int)((int)puVar9 + 0x1f))" ( (binary_expression "(int)puVar7 <= (int)((int)puVar9 + 0x1f)" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)((int)puVar9 + 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar9 + 0x1f)" ( (binary_expression "(int)puVar9 + 0x1f" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )) (compound_statement "{\n      return uVar5 + *(byte *)((int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)\n                              );\n    }" { (return_statement "return uVar5 + *(byte *)((int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)\n                              );" return (binary_expression "uVar5 + *(byte *)((int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)\n                              )" identifier + (pointer_expression "*(byte *)((int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)\n                              )" * (cast_expression "(byte *)((int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)\n                              )" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)\n                              )" ( (binary_expression "(int)puVar7 + ((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9)" ( (binary_expression "(*(int *)(pcVar14 + 0x12b96c) + 0x3530) - (int)puVar9" (parenthesized_expression "(*(int *)(pcVar14 + 0x12b96c) + 0x3530)" ( (binary_expression "*(int *)(pcVar14 + 0x12b96c) + 0x3530" (pointer_expression "*(int *)(pcVar14 + 0x12b96c)" * (cast_expression "(int *)(pcVar14 + 0x12b96c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar14 + 0x12b96c)" ( (binary_expression "pcVar14 + 0x12b96c" identifier + number_literal) )))) + number_literal) )) - (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) }))) (return_statement "return uVar5 + '\x01';" return (binary_expression "uVar5 + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence ')) ;) })))
(translation_unit "byte * FUN_00030a88(byte *param_1,uint *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  byte *pbVar5;\n  short sVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int *piVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int iStack_58;\n  byte *pbStack_54;\n  byte *local_18;\n  uint local_14;\n  byte *local_c;\n  \n  puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;\n  bVar1 = param_1[1];\n  local_c = *(byte **)PTR___stack_chk_guard_0015ca30;\n  if ((char)bVar1 < '\0') {\n    bVar2 = param_1[2];\n    if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }\n  }\n  else {\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }\n  if (local_c == (byte *)*puVar10) {\n    return pbVar3;\n  }\n  pbVar7 = local_c;\n  puVar14 = PTR___stack_chk_fail_0015ca14;\n  (*(code *)PTR___stack_chk_fail_0015ca14)();\n  piVar13 = *(int **)(puVar14 + 0x12bed4);\n  pbVar3 = *(byte **)pbVar7;\n  pbStack_54 = (byte *)*piVar13;\n  pbVar8 = pbVar7;\n  pbVar9 = pbVar5;\n  if (0 < (int)pbVar5) {\n    pbVar11 = (byte *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);\n  }\nLAB_00030c20:\n  *(byte **)pbVar7 = pbVar3;\n  pbVar5 = (byte *)*piVar13;\n  if (pbStack_54 == pbVar5) {\n    return pbVar5;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x12beb8);\n  (*pcVar15)();\n  if ((int)pbVar8 < (int)pbVar9) {\n    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }\n    sVar6 = (short)pbVar9;\n    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }\n  }\n  else {\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }\n  return (byte *)(int)(short)(sVar6 + 1);\n}\n\n" (function_definition "byte * FUN_00030a88(byte *param_1,uint *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  byte *pbVar5;\n  short sVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int *piVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int iStack_58;\n  byte *pbStack_54;\n  byte *local_18;\n  uint local_14;\n  byte *local_c;\n  \n  puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;\n  bVar1 = param_1[1];\n  local_c = *(byte **)PTR___stack_chk_guard_0015ca30;\n  if ((char)bVar1 < '\0') {\n    bVar2 = param_1[2];\n    if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }\n  }\n  else {\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }\n  if (local_c == (byte *)*puVar10) {\n    return pbVar3;\n  }\n  pbVar7 = local_c;\n  puVar14 = PTR___stack_chk_fail_0015ca14;\n  (*(code *)PTR___stack_chk_fail_0015ca14)();\n  piVar13 = *(int **)(puVar14 + 0x12bed4);\n  pbVar3 = *(byte **)pbVar7;\n  pbStack_54 = (byte *)*piVar13;\n  pbVar8 = pbVar7;\n  pbVar9 = pbVar5;\n  if (0 < (int)pbVar5) {\n    pbVar11 = (byte *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);\n  }\nLAB_00030c20:\n  *(byte **)pbVar7 = pbVar3;\n  pbVar5 = (byte *)*piVar13;\n  if (pbStack_54 == pbVar5) {\n    return pbVar5;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x12beb8);\n  (*pcVar15)();\n  if ((int)pbVar8 < (int)pbVar9) {\n    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }\n    sVar6 = (short)pbVar9;\n    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }\n  }\n  else {\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }\n  return (byte *)(int)(short)(sVar6 + 1);\n}" type_identifier (pointer_declarator "* FUN_00030a88(byte *param_1,uint *param_2)" * (function_declarator "FUN_00030a88(byte *param_1,uint *param_2)" identifier (parameter_list "(byte *param_1,uint *param_2)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  byte *pbVar5;\n  short sVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int *piVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int iStack_58;\n  byte *pbStack_54;\n  byte *local_18;\n  uint local_14;\n  byte *local_c;\n  \n  puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;\n  bVar1 = param_1[1];\n  local_c = *(byte **)PTR___stack_chk_guard_0015ca30;\n  if ((char)bVar1 < '\0') {\n    bVar2 = param_1[2];\n    if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }\n  }\n  else {\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }\n  if (local_c == (byte *)*puVar10) {\n    return pbVar3;\n  }\n  pbVar7 = local_c;\n  puVar14 = PTR___stack_chk_fail_0015ca14;\n  (*(code *)PTR___stack_chk_fail_0015ca14)();\n  piVar13 = *(int **)(puVar14 + 0x12bed4);\n  pbVar3 = *(byte **)pbVar7;\n  pbStack_54 = (byte *)*piVar13;\n  pbVar8 = pbVar7;\n  pbVar9 = pbVar5;\n  if (0 < (int)pbVar5) {\n    pbVar11 = (byte *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);\n  }\nLAB_00030c20:\n  *(byte **)pbVar7 = pbVar3;\n  pbVar5 = (byte *)*piVar13;\n  if (pbStack_54 == pbVar5) {\n    return pbVar5;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x12beb8);\n  (*pcVar15)();\n  if ((int)pbVar8 < (int)pbVar9) {\n    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }\n    sVar6 = (short)pbVar9;\n    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }\n  }\n  else {\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }\n  return (byte *)(int)(short)(sVar6 + 1);\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "short sVar6;" (sized_type_specifier "short" short) identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "int iStack_58;" primitive_type identifier ;) (declaration "byte *pbStack_54;" type_identifier (pointer_declarator "*pbStack_54" * identifier) ;) (declaration "byte *local_18;" type_identifier (pointer_declarator "*local_18" * identifier) ;) (declaration "uint local_14;" type_identifier identifier ;) (declaration "byte *local_c;" type_identifier (pointer_declarator "*local_c" * identifier) ;) (expression_statement "puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;" (assignment_expression "puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30" identifier = (cast_expression "(undefined4 *)PTR___stack_chk_guard_0015ca30" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar1 = param_1[1];" (assignment_expression "bVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "local_c = *(byte **)PTR___stack_chk_guard_0015ca30;" (assignment_expression "local_c = *(byte **)PTR___stack_chk_guard_0015ca30" identifier = (pointer_expression "*(byte **)PTR___stack_chk_guard_0015ca30" * (cast_expression "(byte **)PTR___stack_chk_guard_0015ca30" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((char)bVar1 < '\0') {\n    bVar2 = param_1[2];\n    if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }\n  }\n  else {\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar2 = param_1[2];\n    if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }\n  }" { (expression_statement "bVar2 = param_1[2];" (assignment_expression "bVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (if_statement "if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }" if (parenthesized_expression "((bVar2 & 0x80) == 0)" ( (binary_expression "(bVar2 & 0x80) == 0" (parenthesized_expression "(bVar2 & 0x80)" ( (binary_expression "bVar2 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }" { (expression_statement "*param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;" (assignment_expression "*param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7" (pointer_expression "*param_2" * identifier) = (binary_expression "((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7" (binary_expression "((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f" (parenthesized_expression "((uint)bVar2 | (uint)*param_1 << 0xe)" ( (binary_expression "(uint)bVar2 | (uint)*param_1 << 0xe" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) | (binary_expression "(uint)*param_1 << 0xe" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal)) )) & number_literal) | (binary_expression "(bVar1 & 0x7f) << 7" (parenthesized_expression "(bVar1 & 0x7f)" ( (binary_expression "bVar1 & 0x7f" identifier & number_literal) )) << number_literal))) ;) (expression_statement "pbVar3 = (byte *)0x3;" (assignment_expression "pbVar3 = (byte *)0x3" identifier = (cast_expression "(byte *)0x3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar5 = (byte *)(uint)bVar2;" (assignment_expression "pbVar5 = (byte *)(uint)bVar2" identifier = (cast_expression "(byte *)(uint)bVar2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) (else_clause "else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }" else (compound_statement "{\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }" { (expression_statement "pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);" (assignment_expression "pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18)" identifier = (cast_expression "(byte *)FUN_0001dea8(param_1,&local_18)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001dea8(param_1,&local_18)" identifier (argument_list "(param_1,&local_18)" ( identifier , (pointer_expression "&local_18" & identifier) ))))) ;) (if_statement "if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }" if (parenthesized_expression "(local_18 != (byte *)0x0)" ( (binary_expression "local_18 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_14 = 0xffffffff;\n      }" { (expression_statement "local_14 = 0xffffffff;" (assignment_expression "local_14 = 0xffffffff" identifier = number_literal) ;) })) (expression_statement "*param_2 = local_14;" (assignment_expression "*param_2 = local_14" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "pbVar5 = local_18;" (assignment_expression "pbVar5 = local_18" identifier = identifier) ;) }))) }) (else_clause "else {\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }" else (compound_statement "{\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }" { (expression_statement "pbVar3 = &SUB_00000002;" (assignment_expression "pbVar3 = &SUB_00000002" identifier = (pointer_expression "&SUB_00000002" & identifier)) ;) (expression_statement "*param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;" (assignment_expression "*param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1" (pointer_expression "*param_2" * identifier) = (binary_expression "(*param_1 & 0x7f) << 7 | (uint)bVar1" (binary_expression "(*param_1 & 0x7f) << 7" (parenthesized_expression "(*param_1 & 0x7f)" ( (binary_expression "*param_1 & 0x7f" (pointer_expression "*param_1" * identifier) & number_literal) )) << number_literal) | (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "pbVar5 = local_c;" (assignment_expression "pbVar5 = local_c" identifier = identifier) ;) }))) (if_statement "if (local_c == (byte *)*puVar10) {\n    return pbVar3;\n  }" if (parenthesized_expression "(local_c == (byte *)*puVar10)" ( (binary_expression "local_c == (byte *)*puVar10" identifier == (cast_expression "(byte *)*puVar10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) )) (compound_statement "{\n    return pbVar3;\n  }" { (return_statement "return pbVar3;" return identifier ;) })) (expression_statement "pbVar7 = local_c;" (assignment_expression "pbVar7 = local_c" identifier = identifier) ;) (expression_statement "puVar14 = PTR___stack_chk_fail_0015ca14;" (assignment_expression "puVar14 = PTR___stack_chk_fail_0015ca14" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ca14)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ca14)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ca14)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ca14" * (cast_expression "(code *)PTR___stack_chk_fail_0015ca14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar13 = *(int **)(puVar14 + 0x12bed4);" (assignment_expression "piVar13 = *(int **)(puVar14 + 0x12bed4)" identifier = (pointer_expression "*(int **)(puVar14 + 0x12bed4)" * (cast_expression "(int **)(puVar14 + 0x12bed4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x12bed4)" ( (binary_expression "puVar14 + 0x12bed4" identifier + number_literal) ))))) ;) (expression_statement "pbVar3 = *(byte **)pbVar7;" (assignment_expression "pbVar3 = *(byte **)pbVar7" identifier = (pointer_expression "*(byte **)pbVar7" * (cast_expression "(byte **)pbVar7" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "pbStack_54 = (byte *)*piVar13;" (assignment_expression "pbStack_54 = (byte *)*piVar13" identifier = (cast_expression "(byte *)*piVar13" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar13" * identifier))) ;) (expression_statement "pbVar8 = pbVar7;" (assignment_expression "pbVar8 = pbVar7" identifier = identifier) ;) (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" identifier = identifier) ;) (if_statement "if (0 < (int)pbVar5) {\n    pbVar11 = (byte *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);\n  }" if (parenthesized_expression "(0 < (int)pbVar5)" ( (binary_expression "0 < (int)pbVar5" number_literal < (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    pbVar11 = (byte *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);\n  }" { (expression_statement "pbVar11 = (byte *)0x0;" (assignment_expression "pbVar11 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);" do (compound_statement "{\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    }" { (while_statement "while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }" { (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) (expression_statement "pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);" (assignment_expression "pbVar8 = (byte *)(uint)(bVar1 - 3 < 2)" identifier = (cast_expression "(byte *)(uint)(bVar1 - 3 < 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(bVar1 - 3 < 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 - 3 < 2)" ( (binary_expression "bVar1 - 3 < 2" (binary_expression "bVar1 - 3" identifier - number_literal) < number_literal) ))))) ;) (expression_statement "pbVar12 = pbVar3 + 1;" (assignment_expression "pbVar12 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar8 == (byte *)0x0) break;" if (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }" if (parenthesized_expression "((char)pbVar3[1] < '\0')" ( (binary_expression "(char)pbVar3[1] < '\0'" (cast_expression "(char)pbVar3[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar3[1]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }" { (expression_statement "pbVar8 = pbVar12;" (assignment_expression "pbVar8 = pbVar12" identifier = identifier) ;) (expression_statement "pbVar9 = (byte *)&iStack_58;" (assignment_expression "pbVar9 = (byte *)&iStack_58" identifier = (cast_expression "(byte *)&iStack_58" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&iStack_58" & identifier))) ;) (expression_statement "iVar4 = FUN_00030a88();" (assignment_expression "iVar4 = FUN_00030a88()" identifier = (call_expression "FUN_00030a88()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = iStack_58 + iVar4;" (assignment_expression "iVar4 = iStack_58 + iVar4" identifier = (binary_expression "iStack_58 + iVar4" identifier + identifier)) ;) }) (else_clause "else {\n          iVar4 = pbVar3[1] + 1;\n        }" else (compound_statement "{\n          iVar4 = pbVar3[1] + 1;\n        }" { (expression_statement "iVar4 = pbVar3[1] + 1;" (assignment_expression "iVar4 = pbVar3[1] + 1" identifier = (binary_expression "pbVar3[1] + 1" (subscript_expression "pbVar3[1]" identifier [ number_literal ]) + number_literal)) ;) }))) (expression_statement "pbVar3 = pbVar12 + iVar4;" (assignment_expression "pbVar3 = pbVar12 + iVar4" identifier = (binary_expression "pbVar12 + iVar4" identifier + identifier)) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar5 == pbVar11) goto LAB_00030c20;" if (parenthesized_expression "(pbVar5 == pbVar11)" ( (binary_expression "pbVar5 == pbVar11" identifier == identifier) )) (goto_statement "goto LAB_00030c20;" goto statement_identifier ;)) })) (expression_statement "pbVar3 = pbVar3 + 9;" (assignment_expression "pbVar3 = pbVar3 + 9" identifier = (binary_expression "pbVar3 + 9" identifier + number_literal)) ;) (if_statement "if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }" if (parenthesized_expression "(1 < bVar1 - 1)" ( (binary_expression "1 < bVar1 - 1" number_literal < (binary_expression "bVar1 - 1" identifier - number_literal)) )) (compound_statement "{\n        pbVar3 = pbVar12;\n      }" { (expression_statement "pbVar3 = pbVar12;" (assignment_expression "pbVar3 = pbVar12" identifier = identifier) ;) })) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar5 != pbVar11)" ( (binary_expression "pbVar5 != pbVar11" identifier != identifier) )) ;) })) (labeled_statement "LAB_00030c20:\n  *(byte **)pbVar7 = pbVar3;" statement_identifier : (expression_statement "*(byte **)pbVar7 = pbVar3;" (assignment_expression "*(byte **)pbVar7 = pbVar3" (pointer_expression "*(byte **)pbVar7" * (cast_expression "(byte **)pbVar7" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;)) (expression_statement "pbVar5 = (byte *)*piVar13;" (assignment_expression "pbVar5 = (byte *)*piVar13" identifier = (cast_expression "(byte *)*piVar13" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar13" * identifier))) ;) (if_statement "if (pbStack_54 == pbVar5) {\n    return pbVar5;\n  }" if (parenthesized_expression "(pbStack_54 == pbVar5)" ( (binary_expression "pbStack_54 == pbVar5" identifier == identifier) )) (compound_statement "{\n    return pbVar5;\n  }" { (return_statement "return pbVar5;" return identifier ;) })) (expression_statement "pcVar15 = *(code **)(puVar14 + 0x12beb8);" (assignment_expression "pcVar15 = *(code **)(puVar14 + 0x12beb8)" identifier = (pointer_expression "*(code **)(puVar14 + 0x12beb8)" * (cast_expression "(code **)(puVar14 + 0x12beb8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x12beb8)" ( (binary_expression "puVar14 + 0x12beb8" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if ((int)pbVar8 < (int)pbVar9) {\n    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }\n    sVar6 = (short)pbVar9;\n    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }\n  }\n  else {\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }" if (parenthesized_expression "((int)pbVar8 < (int)pbVar9)" ( (binary_expression "(int)pbVar8 < (int)pbVar9" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }\n    sVar6 = (short)pbVar9;\n    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }\n  }" { (if_statement "if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }" if (parenthesized_expression "((int)(pbVar8 + 0x31) < (int)pbVar9)" ( (binary_expression "(int)(pbVar8 + 0x31) < (int)pbVar9" (cast_expression "(int)(pbVar8 + 0x31)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar8 + 0x31)" ( (binary_expression "pbVar8 + 0x31" identifier + number_literal) ))) < (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      return pbVar9;\n    }" { (return_statement "return pbVar9;" return identifier ;) })) (expression_statement "sVar6 = (short)pbVar9;" (assignment_expression "sVar6 = (short)pbVar9" identifier = (cast_expression "(short)pbVar9" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }" if (parenthesized_expression "((int)pbVar9 <= (int)(pbVar8 + 0x1f))" ( (binary_expression "(int)pbVar9 <= (int)(pbVar8 + 0x1f)" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)(pbVar8 + 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar8 + 0x1f)" ( (binary_expression "pbVar8 + 0x1f" identifier + number_literal) )))) )) (compound_statement "{\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }" { (return_statement "return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);" return (cast_expression "(byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8])" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8])" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8])" ( (binary_expression "sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]" identifier + (cast_expression "(ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]" identifier [ (binary_expression "(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8" (parenthesized_expression "(*(int *)(pcVar15 + 0x12b96c) + 0x3530)" ( (binary_expression "*(int *)(pcVar15 + 0x12b96c) + 0x3530" (pointer_expression "*(int *)(pcVar15 + 0x12b96c)" * (cast_expression "(int *)(pcVar15 + 0x12b96c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x12b96c)" ( (binary_expression "pcVar15 + 0x12b96c" identifier + number_literal) )))) + number_literal) )) - (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ]))) ))))) ;) })) }) (else_clause "else {\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }" else (compound_statement "{\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }" { (if_statement "if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }" if (parenthesized_expression "((int)(pbVar9 + 0x31) < (int)pbVar8)" ( (binary_expression "(int)(pbVar9 + 0x31) < (int)pbVar8" (cast_expression "(int)(pbVar9 + 0x31)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar9 + 0x31)" ( (binary_expression "pbVar9 + 0x31" identifier + number_literal) ))) < (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      return pbVar8;\n    }" { (return_statement "return pbVar8;" return identifier ;) })) (expression_statement "sVar6 = (short)pbVar8;" (assignment_expression "sVar6 = (short)pbVar8" identifier = (cast_expression "(short)pbVar8" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }" if (parenthesized_expression "((int)pbVar8 <= (int)(pbVar9 + 0x1f))" ( (binary_expression "(int)pbVar8 <= (int)(pbVar9 + 0x1f)" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)(pbVar9 + 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar9 + 0x1f)" ( (binary_expression "pbVar9 + 0x1f" identifier + number_literal) )))) )) (compound_statement "{\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }" { (return_statement "return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);" return (cast_expression "(byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9])" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9])" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9])" ( (binary_expression "sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]" identifier + (cast_expression "(ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]" identifier [ (binary_expression "(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9" (parenthesized_expression "(*(int *)(pcVar15 + 0x12b96c) + 0x3530)" ( (binary_expression "*(int *)(pcVar15 + 0x12b96c) + 0x3530" (pointer_expression "*(int *)(pcVar15 + 0x12b96c)" * (cast_expression "(int *)(pcVar15 + 0x12b96c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x12b96c)" ( (binary_expression "pcVar15 + 0x12b96c" identifier + number_literal) )))) + number_literal) )) - (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ]))) ))))) ;) })) }))) (return_statement "return (byte *)(int)(short)(sVar6 + 1);" return (cast_expression "(byte *)(int)(short)(sVar6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(short)(sVar6 + 1)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)(sVar6 + 1)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(sVar6 + 1)" ( (binary_expression "sVar6 + 1" identifier + number_literal) ))))) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << LIT)) )) & LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT))) ;) (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 *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) << LIT) | (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (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 { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT - LIT) < LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ]))) ))))) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ]))) ))))) ;) })) }))) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })))
(function_definition "byte * FUN_00030a88(byte *param_1,uint *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  byte *pbVar5;\n  short sVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int *piVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int iStack_58;\n  byte *pbStack_54;\n  byte *local_18;\n  uint local_14;\n  byte *local_c;\n  \n  puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;\n  bVar1 = param_1[1];\n  local_c = *(byte **)PTR___stack_chk_guard_0015ca30;\n  if ((char)bVar1 < '\0') {\n    bVar2 = param_1[2];\n    if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }\n  }\n  else {\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }\n  if (local_c == (byte *)*puVar10) {\n    return pbVar3;\n  }\n  pbVar7 = local_c;\n  puVar14 = PTR___stack_chk_fail_0015ca14;\n  (*(code *)PTR___stack_chk_fail_0015ca14)();\n  piVar13 = *(int **)(puVar14 + 0x12bed4);\n  pbVar3 = *(byte **)pbVar7;\n  pbStack_54 = (byte *)*piVar13;\n  pbVar8 = pbVar7;\n  pbVar9 = pbVar5;\n  if (0 < (int)pbVar5) {\n    pbVar11 = (byte *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);\n  }\nLAB_00030c20:\n  *(byte **)pbVar7 = pbVar3;\n  pbVar5 = (byte *)*piVar13;\n  if (pbStack_54 == pbVar5) {\n    return pbVar5;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x12beb8);\n  (*pcVar15)();\n  if ((int)pbVar8 < (int)pbVar9) {\n    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }\n    sVar6 = (short)pbVar9;\n    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }\n  }\n  else {\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }\n  return (byte *)(int)(short)(sVar6 + 1);\n}" (type_identifier "byte") (pointer_declarator "* FUN_00030a88(byte *param_1,uint *param_2)" (* "*") (function_declarator "FUN_00030a88(byte *param_1,uint *param_2)" (identifier "FUN_00030a88") (parameter_list "(byte *param_1,uint *param_2)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  byte *pbVar5;\n  short sVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int *piVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  int iStack_58;\n  byte *pbStack_54;\n  byte *local_18;\n  uint local_14;\n  byte *local_c;\n  \n  puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;\n  bVar1 = param_1[1];\n  local_c = *(byte **)PTR___stack_chk_guard_0015ca30;\n  if ((char)bVar1 < '\0') {\n    bVar2 = param_1[2];\n    if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }\n  }\n  else {\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }\n  if (local_c == (byte *)*puVar10) {\n    return pbVar3;\n  }\n  pbVar7 = local_c;\n  puVar14 = PTR___stack_chk_fail_0015ca14;\n  (*(code *)PTR___stack_chk_fail_0015ca14)();\n  piVar13 = *(int **)(puVar14 + 0x12bed4);\n  pbVar3 = *(byte **)pbVar7;\n  pbStack_54 = (byte *)*piVar13;\n  pbVar8 = pbVar7;\n  pbVar9 = pbVar5;\n  if (0 < (int)pbVar5) {\n    pbVar11 = (byte *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);\n  }\nLAB_00030c20:\n  *(byte **)pbVar7 = pbVar3;\n  pbVar5 = (byte *)*piVar13;\n  if (pbStack_54 == pbVar5) {\n    return pbVar5;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x12beb8);\n  (*pcVar15)();\n  if ((int)pbVar8 < (int)pbVar9) {\n    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }\n    sVar6 = (short)pbVar9;\n    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }\n  }\n  else {\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }\n  return (byte *)(int)(short)(sVar6 + 1);\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "byte *pbVar3;" (type_identifier "byte") (pointer_declarator "*pbVar3" (* "*") (identifier "pbVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "short sVar6;" (sized_type_specifier "short" (short "short")) (identifier "sVar6") (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "int *piVar13;" (primitive_type "int") (pointer_declarator "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (declaration "undefined *puVar14;" (type_identifier "undefined") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "code *pcVar15;" (type_identifier "code") (pointer_declarator "*pcVar15" (* "*") (identifier "pcVar15")) (; ";")) (declaration "int iStack_58;" (primitive_type "int") (identifier "iStack_58") (; ";")) (declaration "byte *pbStack_54;" (type_identifier "byte") (pointer_declarator "*pbStack_54" (* "*") (identifier "pbStack_54")) (; ";")) (declaration "byte *local_18;" (type_identifier "byte") (pointer_declarator "*local_18" (* "*") (identifier "local_18")) (; ";")) (declaration "uint local_14;" (type_identifier "uint") (identifier "local_14") (; ";")) (declaration "byte *local_c;" (type_identifier "byte") (pointer_declarator "*local_c" (* "*") (identifier "local_c")) (; ";")) (expression_statement "puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;" (assignment_expression "puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)PTR___stack_chk_guard_0015ca30" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0015ca30"))) (; ";")) (expression_statement "bVar1 = param_1[1];" (assignment_expression "bVar1 = param_1[1]" (identifier "bVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_c = *(byte **)PTR___stack_chk_guard_0015ca30;" (assignment_expression "local_c = *(byte **)PTR___stack_chk_guard_0015ca30" (identifier "local_c") (= "=") (pointer_expression "*(byte **)PTR___stack_chk_guard_0015ca30" (* "*") (cast_expression "(byte **)PTR___stack_chk_guard_0015ca30" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_0015ca30")))) (; ";")) (if_statement "if ((char)bVar1 < '\0') {\n    bVar2 = param_1[2];\n    if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }\n  }\n  else {\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }" (if "if") (parenthesized_expression "((char)bVar1 < '\0')" (( "(") (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    bVar2 = param_1[2];\n    if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }\n  }" ({ "{") (expression_statement "bVar2 = param_1[2];" (assignment_expression "bVar2 = param_1[2]" (identifier "bVar2") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((bVar2 & 0x80) == 0) {\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }\n    else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }" (if "if") (parenthesized_expression "((bVar2 & 0x80) == 0)" (( "(") (binary_expression "(bVar2 & 0x80) == 0" (parenthesized_expression "(bVar2 & 0x80)" (( "(") (binary_expression "bVar2 & 0x80" (identifier "bVar2") (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;\n      pbVar3 = (byte *)0x3;\n      pbVar5 = (byte *)(uint)bVar2;\n    }" ({ "{") (expression_statement "*param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;" (assignment_expression "*param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7" (binary_expression "((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f" (parenthesized_expression "((uint)bVar2 | (uint)*param_1 << 0xe)" (( "(") (binary_expression "(uint)bVar2 | (uint)*param_1 << 0xe" (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")) (| "|") (binary_expression "(uint)*param_1 << 0xe" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_1")) (<< "<<") (number_literal "0xe"))) () ")")) (& "&") (number_literal "0x1fc07f")) (| "|") (binary_expression "(bVar1 & 0x7f) << 7" (parenthesized_expression "(bVar1 & 0x7f)" (( "(") (binary_expression "bVar1 & 0x7f" (identifier "bVar1") (& "&") (number_literal "0x7f")) () ")")) (<< "<<") (number_literal "7")))) (; ";")) (expression_statement "pbVar3 = (byte *)0x3;" (assignment_expression "pbVar3 = (byte *)0x3" (identifier "pbVar3") (= "=") (cast_expression "(byte *)0x3" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "pbVar5 = (byte *)(uint)bVar2;" (assignment_expression "pbVar5 = (byte *)(uint)bVar2" (identifier "pbVar5") (= "=") (cast_expression "(byte *)(uint)bVar2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")))) (; ";")) (} "}")) (else_clause "else {\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }" (else "else") (compound_statement "{\n      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);\n      if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }\n      *param_2 = local_14;\n      pbVar5 = local_18;\n    }" ({ "{") (expression_statement "pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);" (assignment_expression "pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18)" (identifier "pbVar3") (= "=") (cast_expression "(byte *)FUN_0001dea8(param_1,&local_18)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001dea8(param_1,&local_18)" (identifier "FUN_0001dea8") (argument_list "(param_1,&local_18)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_18" (& "&") (identifier "local_18")) () ")"))))) (; ";")) (if_statement "if (local_18 != (byte *)0x0) {\n        local_14 = 0xffffffff;\n      }" (if "if") (parenthesized_expression "(local_18 != (byte *)0x0)" (( "(") (binary_expression "local_18 != (byte *)0x0" (identifier "local_18") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        local_14 = 0xffffffff;\n      }" ({ "{") (expression_statement "local_14 = 0xffffffff;" (assignment_expression "local_14 = 0xffffffff" (identifier "local_14") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (expression_statement "*param_2 = local_14;" (assignment_expression "*param_2 = local_14" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "local_14")) (; ";")) (expression_statement "pbVar5 = local_18;" (assignment_expression "pbVar5 = local_18" (identifier "pbVar5") (= "=") (identifier "local_18")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }" (else "else") (compound_statement "{\n    pbVar3 = &SUB_00000002;\n    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;\n    pbVar5 = local_c;\n  }" ({ "{") (expression_statement "pbVar3 = &SUB_00000002;" (assignment_expression "pbVar3 = &SUB_00000002" (identifier "pbVar3") (= "=") (pointer_expression "&SUB_00000002" (& "&") (identifier "SUB_00000002"))) (; ";")) (expression_statement "*param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;" (assignment_expression "*param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "(*param_1 & 0x7f) << 7 | (uint)bVar1" (binary_expression "(*param_1 & 0x7f) << 7" (parenthesized_expression "(*param_1 & 0x7f)" (( "(") (binary_expression "*param_1 & 0x7f" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "0x7f")) () ")")) (<< "<<") (number_literal "7")) (| "|") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")))) (; ";")) (expression_statement "pbVar5 = local_c;" (assignment_expression "pbVar5 = local_c" (identifier "pbVar5") (= "=") (identifier "local_c")) (; ";")) (} "}")))) (if_statement "if (local_c == (byte *)*puVar10) {\n    return pbVar3;\n  }" (if "if") (parenthesized_expression "(local_c == (byte *)*puVar10)" (( "(") (binary_expression "local_c == (byte *)*puVar10" (identifier "local_c") (== "==") (cast_expression "(byte *)*puVar10" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) () ")")) (compound_statement "{\n    return pbVar3;\n  }" ({ "{") (return_statement "return pbVar3;" (return "return") (identifier "pbVar3") (; ";")) (} "}"))) (expression_statement "pbVar7 = local_c;" (assignment_expression "pbVar7 = local_c" (identifier "pbVar7") (= "=") (identifier "local_c")) (; ";")) (expression_statement "puVar14 = PTR___stack_chk_fail_0015ca14;" (assignment_expression "puVar14 = PTR___stack_chk_fail_0015ca14" (identifier "puVar14") (= "=") (identifier "PTR___stack_chk_fail_0015ca14")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ca14)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ca14)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ca14)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0015ca14" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0015ca14" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0015ca14"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar13 = *(int **)(puVar14 + 0x12bed4);" (assignment_expression "piVar13 = *(int **)(puVar14 + 0x12bed4)" (identifier "piVar13") (= "=") (pointer_expression "*(int **)(puVar14 + 0x12bed4)" (* "*") (cast_expression "(int **)(puVar14 + 0x12bed4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x12bed4)" (( "(") (binary_expression "puVar14 + 0x12bed4" (identifier "puVar14") (+ "+") (number_literal "0x12bed4")) () ")"))))) (; ";")) (expression_statement "pbVar3 = *(byte **)pbVar7;" (assignment_expression "pbVar3 = *(byte **)pbVar7" (identifier "pbVar3") (= "=") (pointer_expression "*(byte **)pbVar7" (* "*") (cast_expression "(byte **)pbVar7" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "pbVar7")))) (; ";")) (expression_statement "pbStack_54 = (byte *)*piVar13;" (assignment_expression "pbStack_54 = (byte *)*piVar13" (identifier "pbStack_54") (= "=") (cast_expression "(byte *)*piVar13" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar13" (* "*") (identifier "piVar13")))) (; ";")) (expression_statement "pbVar8 = pbVar7;" (assignment_expression "pbVar8 = pbVar7" (identifier "pbVar8") (= "=") (identifier "pbVar7")) (; ";")) (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" (identifier "pbVar9") (= "=") (identifier "pbVar5")) (; ";")) (if_statement "if (0 < (int)pbVar5) {\n    pbVar11 = (byte *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);\n  }" (if "if") (parenthesized_expression "(0 < (int)pbVar5)" (( "(") (binary_expression "0 < (int)pbVar5" (number_literal "0") (< "<") (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5"))) () ")")) (compound_statement "{\n    pbVar11 = (byte *)0x0;\n    do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);\n  }" ({ "{") (expression_statement "pbVar11 = (byte *)0x0;" (assignment_expression "pbVar11 = (byte *)0x0" (identifier "pbVar11") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (do_statement "do {\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    } while (pbVar5 != pbVar11);" (do "do") (compound_statement "{\n      while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }\n      pbVar3 = pbVar3 + 9;\n      if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }\n      pbVar11 = pbVar11 + 1;\n    }" ({ "{") (while_statement "while( true ) {\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        bVar1 = *pbVar3;\n        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);\n        pbVar12 = pbVar3 + 1;\n        if (pbVar8 == (byte *)0x0) break;\n        if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }\n        pbVar3 = pbVar12 + iVar4;\n        pbVar11 = pbVar11 + 1;\n        if (pbVar5 == pbVar11) goto LAB_00030c20;\n      }" ({ "{") (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" (identifier "bVar1") (= "=") (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3"))) (; ";")) (expression_statement "pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);" (assignment_expression "pbVar8 = (byte *)(uint)(bVar1 - 3 < 2)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(uint)(bVar1 - 3 < 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(bVar1 - 3 < 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar1 - 3 < 2)" (( "(") (binary_expression "bVar1 - 3 < 2" (binary_expression "bVar1 - 3" (identifier "bVar1") (- "-") (number_literal "3")) (< "<") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "pbVar12 = pbVar3 + 1;" (assignment_expression "pbVar12 = pbVar3 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar3 + 1" (identifier "pbVar3") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pbVar8 == (byte *)0x0) break;" (if "if") (parenthesized_expression "(pbVar8 == (byte *)0x0)" (( "(") (binary_expression "pbVar8 == (byte *)0x0" (identifier "pbVar8") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if ((char)pbVar3[1] < '\0') {\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }\n        else {\n          iVar4 = pbVar3[1] + 1;\n        }" (if "if") (parenthesized_expression "((char)pbVar3[1] < '\0')" (( "(") (binary_expression "(char)pbVar3[1] < '\0'" (cast_expression "(char)pbVar3[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar3[1]" (identifier "pbVar3") ([ "[") (number_literal "1") (] "]"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          pbVar8 = pbVar12;\n          pbVar9 = (byte *)&iStack_58;\n          iVar4 = FUN_00030a88();\n          iVar4 = iStack_58 + iVar4;\n        }" ({ "{") (expression_statement "pbVar8 = pbVar12;" (assignment_expression "pbVar8 = pbVar12" (identifier "pbVar8") (= "=") (identifier "pbVar12")) (; ";")) (expression_statement "pbVar9 = (byte *)&iStack_58;" (assignment_expression "pbVar9 = (byte *)&iStack_58" (identifier "pbVar9") (= "=") (cast_expression "(byte *)&iStack_58" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&iStack_58" (& "&") (identifier "iStack_58")))) (; ";")) (expression_statement "iVar4 = FUN_00030a88();" (assignment_expression "iVar4 = FUN_00030a88()" (identifier "iVar4") (= "=") (call_expression "FUN_00030a88()" (identifier "FUN_00030a88") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar4 = iStack_58 + iVar4;" (assignment_expression "iVar4 = iStack_58 + iVar4" (identifier "iVar4") (= "=") (binary_expression "iStack_58 + iVar4" (identifier "iStack_58") (+ "+") (identifier "iVar4"))) (; ";")) (} "}")) (else_clause "else {\n          iVar4 = pbVar3[1] + 1;\n        }" (else "else") (compound_statement "{\n          iVar4 = pbVar3[1] + 1;\n        }" ({ "{") (expression_statement "iVar4 = pbVar3[1] + 1;" (assignment_expression "iVar4 = pbVar3[1] + 1" (identifier "iVar4") (= "=") (binary_expression "pbVar3[1] + 1" (subscript_expression "pbVar3[1]" (identifier "pbVar3") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "pbVar3 = pbVar12 + iVar4;" (assignment_expression "pbVar3 = pbVar12 + iVar4" (identifier "pbVar3") (= "=") (binary_expression "pbVar12 + iVar4" (identifier "pbVar12") (+ "+") (identifier "iVar4"))) (; ";")) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pbVar5 == pbVar11) goto LAB_00030c20;" (if "if") (parenthesized_expression "(pbVar5 == pbVar11)" (( "(") (binary_expression "pbVar5 == pbVar11" (identifier "pbVar5") (== "==") (identifier "pbVar11")) () ")")) (goto_statement "goto LAB_00030c20;" (goto "goto") (statement_identifier "LAB_00030c20") (; ";"))) (} "}"))) (expression_statement "pbVar3 = pbVar3 + 9;" (assignment_expression "pbVar3 = pbVar3 + 9" (identifier "pbVar3") (= "=") (binary_expression "pbVar3 + 9" (identifier "pbVar3") (+ "+") (number_literal "9"))) (; ";")) (if_statement "if (1 < bVar1 - 1) {\n        pbVar3 = pbVar12;\n      }" (if "if") (parenthesized_expression "(1 < bVar1 - 1)" (( "(") (binary_expression "1 < bVar1 - 1" (number_literal "1") (< "<") (binary_expression "bVar1 - 1" (identifier "bVar1") (- "-") (number_literal "1"))) () ")")) (compound_statement "{\n        pbVar3 = pbVar12;\n      }" ({ "{") (expression_statement "pbVar3 = pbVar12;" (assignment_expression "pbVar3 = pbVar12" (identifier "pbVar3") (= "=") (identifier "pbVar12")) (; ";")) (} "}"))) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar5 != pbVar11)" (( "(") (binary_expression "pbVar5 != pbVar11" (identifier "pbVar5") (!= "!=") (identifier "pbVar11")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00030c20:\n  *(byte **)pbVar7 = pbVar3;" (statement_identifier "LAB_00030c20") (: ":") (expression_statement "*(byte **)pbVar7 = pbVar3;" (assignment_expression "*(byte **)pbVar7 = pbVar3" (pointer_expression "*(byte **)pbVar7" (* "*") (cast_expression "(byte **)pbVar7" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "pbVar7"))) (= "=") (identifier "pbVar3")) (; ";"))) (expression_statement "pbVar5 = (byte *)*piVar13;" (assignment_expression "pbVar5 = (byte *)*piVar13" (identifier "pbVar5") (= "=") (cast_expression "(byte *)*piVar13" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar13" (* "*") (identifier "piVar13")))) (; ";")) (if_statement "if (pbStack_54 == pbVar5) {\n    return pbVar5;\n  }" (if "if") (parenthesized_expression "(pbStack_54 == pbVar5)" (( "(") (binary_expression "pbStack_54 == pbVar5" (identifier "pbStack_54") (== "==") (identifier "pbVar5")) () ")")) (compound_statement "{\n    return pbVar5;\n  }" ({ "{") (return_statement "return pbVar5;" (return "return") (identifier "pbVar5") (; ";")) (} "}"))) (expression_statement "pcVar15 = *(code **)(puVar14 + 0x12beb8);" (assignment_expression "pcVar15 = *(code **)(puVar14 + 0x12beb8)" (identifier "pcVar15") (= "=") (pointer_expression "*(code **)(puVar14 + 0x12beb8)" (* "*") (cast_expression "(code **)(puVar14 + 0x12beb8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x12beb8)" (( "(") (binary_expression "puVar14 + 0x12beb8" (identifier "puVar14") (+ "+") (number_literal "0x12beb8")) () ")"))))) (; ";")) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((int)pbVar8 < (int)pbVar9) {\n    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }\n    sVar6 = (short)pbVar9;\n    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }\n  }\n  else {\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }" (if "if") (parenthesized_expression "((int)pbVar8 < (int)pbVar9)" (( "(") (binary_expression "(int)pbVar8 < (int)pbVar9" (cast_expression "(int)pbVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar8")) (< "<") (cast_expression "(int)pbVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar9"))) () ")")) (compound_statement "{\n    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }\n    sVar6 = (short)pbVar9;\n    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }\n  }" ({ "{") (if_statement "if ((int)(pbVar8 + 0x31) < (int)pbVar9) {\n      return pbVar9;\n    }" (if "if") (parenthesized_expression "((int)(pbVar8 + 0x31) < (int)pbVar9)" (( "(") (binary_expression "(int)(pbVar8 + 0x31) < (int)pbVar9" (cast_expression "(int)(pbVar8 + 0x31)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pbVar8 + 0x31)" (( "(") (binary_expression "pbVar8 + 0x31" (identifier "pbVar8") (+ "+") (number_literal "0x31")) () ")"))) (< "<") (cast_expression "(int)pbVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar9"))) () ")")) (compound_statement "{\n      return pbVar9;\n    }" ({ "{") (return_statement "return pbVar9;" (return "return") (identifier "pbVar9") (; ";")) (} "}"))) (expression_statement "sVar6 = (short)pbVar9;" (assignment_expression "sVar6 = (short)pbVar9" (identifier "sVar6") (= "=") (cast_expression "(short)pbVar9" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "pbVar9"))) (; ";")) (if_statement "if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }" (if "if") (parenthesized_expression "((int)pbVar9 <= (int)(pbVar8 + 0x1f))" (( "(") (binary_expression "(int)pbVar9 <= (int)(pbVar8 + 0x1f)" (cast_expression "(int)pbVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar9")) (<= "<=") (cast_expression "(int)(pbVar8 + 0x1f)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pbVar8 + 0x1f)" (( "(") (binary_expression "pbVar8 + 0x1f" (identifier "pbVar8") (+ "+") (number_literal "0x1f")) () ")")))) () ")")) (compound_statement "{\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);\n    }" ({ "{") (return_statement "return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]);" (return "return") (cast_expression "(byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8])" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8])" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8])" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8])" (( "(") (binary_expression "sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]" (identifier "sVar6") (+ "+") (cast_expression "(ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (subscript_expression "pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8]" (identifier "pbVar9") ([ "[") (binary_expression "(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar8" (parenthesized_expression "(*(int *)(pcVar15 + 0x12b96c) + 0x3530)" (( "(") (binary_expression "*(int *)(pcVar15 + 0x12b96c) + 0x3530" (pointer_expression "*(int *)(pcVar15 + 0x12b96c)" (* "*") (cast_expression "(int *)(pcVar15 + 0x12b96c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar15 + 0x12b96c)" (( "(") (binary_expression "pcVar15 + 0x12b96c" (identifier "pcVar15") (+ "+") (number_literal "0x12b96c")) () ")")))) (+ "+") (number_literal "0x3530")) () ")")) (- "-") (cast_expression "(int)pbVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar8"))) (] "]")))) () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }" (else "else") (compound_statement "{\n    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }\n    sVar6 = (short)pbVar8;\n    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }\n  }" ({ "{") (if_statement "if ((int)(pbVar9 + 0x31) < (int)pbVar8) {\n      return pbVar8;\n    }" (if "if") (parenthesized_expression "((int)(pbVar9 + 0x31) < (int)pbVar8)" (( "(") (binary_expression "(int)(pbVar9 + 0x31) < (int)pbVar8" (cast_expression "(int)(pbVar9 + 0x31)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pbVar9 + 0x31)" (( "(") (binary_expression "pbVar9 + 0x31" (identifier "pbVar9") (+ "+") (number_literal "0x31")) () ")"))) (< "<") (cast_expression "(int)pbVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar8"))) () ")")) (compound_statement "{\n      return pbVar8;\n    }" ({ "{") (return_statement "return pbVar8;" (return "return") (identifier "pbVar8") (; ";")) (} "}"))) (expression_statement "sVar6 = (short)pbVar8;" (assignment_expression "sVar6 = (short)pbVar8" (identifier "sVar6") (= "=") (cast_expression "(short)pbVar8" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "pbVar8"))) (; ";")) (if_statement "if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }" (if "if") (parenthesized_expression "((int)pbVar8 <= (int)(pbVar9 + 0x1f))" (( "(") (binary_expression "(int)pbVar8 <= (int)(pbVar9 + 0x1f)" (cast_expression "(int)pbVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar8")) (<= "<=") (cast_expression "(int)(pbVar9 + 0x1f)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pbVar9 + 0x1f)" (( "(") (binary_expression "pbVar9 + 0x1f" (identifier "pbVar9") (+ "+") (number_literal "0x1f")) () ")")))) () ")")) (compound_statement "{\n      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);\n    }" ({ "{") (return_statement "return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]);" (return "return") (cast_expression "(byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9])" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9])" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9])" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9])" (( "(") (binary_expression "sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]" (identifier "sVar6") (+ "+") (cast_expression "(ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (subscript_expression "pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9]" (identifier "pbVar8") ([ "[") (binary_expression "(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -\n                                                         (int)pbVar9" (parenthesized_expression "(*(int *)(pcVar15 + 0x12b96c) + 0x3530)" (( "(") (binary_expression "*(int *)(pcVar15 + 0x12b96c) + 0x3530" (pointer_expression "*(int *)(pcVar15 + 0x12b96c)" (* "*") (cast_expression "(int *)(pcVar15 + 0x12b96c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar15 + 0x12b96c)" (( "(") (binary_expression "pcVar15 + 0x12b96c" (identifier "pcVar15") (+ "+") (number_literal "0x12b96c")) () ")")))) (+ "+") (number_literal "0x3530")) () ")")) (- "-") (cast_expression "(int)pbVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar9"))) (] "]")))) () ")"))))) (; ";")) (} "}"))) (} "}")))) (return_statement "return (byte *)(int)(short)(sVar6 + 1);" (return "return") (cast_expression "(byte *)(int)(short)(sVar6 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(short)(sVar6 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(short)(sVar6 + 1)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "(sVar6 + 1)" (( "(") (binary_expression "sVar6 + 1" (identifier "sVar6") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (type_identifier) 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))) (declaration type: (sized_type_specifier) 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (number_literal)))) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) 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 (identifier) (pointer_expression argument: (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 (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (if_statement condition: (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)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (if_statement condition: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (if_statement condition: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))))))))) (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))

byte * MASKED(byte *param_1,uint *param_2)

{
  byte bVar1;
  byte bVar2;
  byte *pbVar3;
  int iVar4;
  byte *pbVar5;
  short sVar6;
  byte *pbVar7;
  byte *pbVar8;
  byte *pbVar9;
  undefined4 *puVar10;
  byte *pbVar11;
  byte *pbVar12;
  int *piVar13;
  undefined *puVar14;
  code *pcVar15;
  int iStack_58;
  byte *pbStack_54;
  byte *local_18;
  uint local_14;
  byte *local_c;
  
  puVar10 = (undefined4 *)PTR___stack_chk_guard_0015ca30;
  bVar1 = param_1[1];
  local_c = *(byte **)PTR___stack_chk_guard_0015ca30;
  if ((char)bVar1 < '\0') {
    bVar2 = param_1[2];
    if ((bVar2 & 0x80) == 0) {
      *param_2 = ((uint)bVar2 | (uint)*param_1 << 0xe) & 0x1fc07f | (bVar1 & 0x7f) << 7;
      pbVar3 = (byte *)0x3;
      pbVar5 = (byte *)(uint)bVar2;
    }
    else {
      pbVar3 = (byte *)FUN_0001dea8(param_1,&local_18);
      if (local_18 != (byte *)0x0) {
        local_14 = 0xffffffff;
      }
      *param_2 = local_14;
      pbVar5 = local_18;
    }
  }
  else {
    pbVar3 = &SUB_00000002;
    *param_2 = (*param_1 & 0x7f) << 7 | (uint)bVar1;
    pbVar5 = local_c;
  }
  if (local_c == (byte *)*puVar10) {
    return pbVar3;
  }
  pbVar7 = local_c;
  puVar14 = PTR___stack_chk_fail_0015ca14;
  (*(code *)PTR___stack_chk_fail_0015ca14)();
  piVar13 = *(int **)(puVar14 + 0x12bed4);
  pbVar3 = *(byte **)pbVar7;
  pbStack_54 = (byte *)*piVar13;
  pbVar8 = pbVar7;
  pbVar9 = pbVar5;
  if (0 < (int)pbVar5) {
    pbVar11 = (byte *)0x0;
    do {
      while( true ) {
        bVar1 = *pbVar3;
        pbVar8 = (byte *)(uint)(bVar1 - 3 < 2);
        pbVar12 = pbVar3 + 1;
        if (pbVar8 == (byte *)0x0) break;
        if ((char)pbVar3[1] < '\0') {
          pbVar8 = pbVar12;
          pbVar9 = (byte *)&iStack_58;
          iVar4 = MASKED();
          iVar4 = iStack_58 + iVar4;
        }
        else {
          iVar4 = pbVar3[1] + 1;
        }
        pbVar3 = pbVar12 + iVar4;
        pbVar11 = pbVar11 + 1;
        if (pbVar5 == pbVar11) goto LAB_00030c20;
      }
      pbVar3 = pbVar3 + 9;
      if (1 < bVar1 - 1) {
        pbVar3 = pbVar12;
      }
      pbVar11 = pbVar11 + 1;
    } while (pbVar5 != pbVar11);
  }
LAB_00030c20:
  *(byte **)pbVar7 = pbVar3;
  pbVar5 = (byte *)*piVar13;
  if (pbStack_54 == pbVar5) {
    return pbVar5;
  }
  pcVar15 = *(code **)(puVar14 + 0x12beb8);
  (*pcVar15)();
  if ((int)pbVar8 < (int)pbVar9) {
    if ((int)(pbVar8 + 0x31) < (int)pbVar9) {
      return pbVar9;
    }
    sVar6 = (short)pbVar9;
    if ((int)pbVar9 <= (int)(pbVar8 + 0x1f)) {
      return (byte *)(int)(short)(sVar6 + (ushort)pbVar9[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -
                                                         (int)pbVar8]);
    }
  }
  else {
    if ((int)(pbVar9 + 0x31) < (int)pbVar8) {
      return pbVar8;
    }
    sVar6 = (short)pbVar8;
    if ((int)pbVar8 <= (int)(pbVar9 + 0x1f)) {
      return (byte *)(int)(short)(sVar6 + (ushort)pbVar8[(*(int *)(pcVar15 + 0x12b96c) + 0x3530) -
                                                         (int)pbVar9]);
    }
  }
  return (byte *)(int)(short)(sVar6 + 1);
}

