
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Unknown calling convention */

void jsonRemoveFunc(sqlite3_context *ctx,int argc,sqlite3_value **argv)

{
  int iVar1;
  int iVar2;
  char *pcVar3;
  JsonNode *pJVar4;
  JsonNode *extraout_EDX;
  JsonNode *extraout_EDX_00;
  JsonNode *extraout_EDX_01;
  int in_GS_OFFSET;
  _func_void_void_ptr *xDel;
  JsonParse *in_stack_ffffffa4;
  sqlite3_context *in_stack_ffffffa8;
  char *zFormat;
  JsonParse *pParse;
  char *zErr;
  JsonParse x;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if (0 < argc) {
    sqlite3ValueText(*argv,(u8)argc);
    pParse = &x;
    iVar2 = jsonParse(in_stack_ffffffa4,in_stack_ffffffa8,(char *)pParse);
    if (iVar2 == 0) {
      zFormat = "JSON path error near \'%q\'";
      iVar2 = 1;
      pJVar4 = extraout_EDX;
      if (argc != 1) {
        do {
          while( true ) {
            pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);
            if (pcVar3 == (char *)0x0) goto LAB_000a736c;
            zErr = (char *)0x0;
            if ((*pcVar3 == '$') &&
               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,
               zErr == (char *)0x0)) break;
            zErr = pcVar3;
            x.nErr = x.nErr + '\x01';
            xDel = (_func_void_void_ptr *)zErr;
            pcVar3 = sqlite3_mprintf(zFormat);
            if (pcVar3 == (char *)0x0) {
              sqlite3_result_error_nomem(ctx);
              pJVar4 = extraout_EDX_01;
            }
            else {
              ctx->isError = 1;
              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);
              sqlite3_free(pcVar3);
              pJVar4 = extraout_EDX_00;
            }
            if (x.nErr != '\0') goto LAB_000a736c;
LAB_000a72ef:
            iVar2 = iVar2 + 1;
            if (iVar2 == argc) goto LAB_000a7352;
          }
          if (x.nErr != '\0') goto LAB_000a736c;
          if (pJVar4 == (JsonNode *)0x0) goto LAB_000a72ef;
          pJVar4->jnFlags = pJVar4->jnFlags | 4;
          iVar2 = iVar2 + 1;
        } while (iVar2 != argc);
      }
LAB_000a7352:
      if (((x.aNode)->jnFlags & 4) == 0) {
        jsonReturnJson(x.aNode,ctx,(sqlite3_value **)0x0);
      }
LAB_000a736c:
      sqlite3_free(x.aNode);
      x.aNode = (JsonNode *)0x0;
      x.nNode = 0;
      x.nAlloc = 0;
      sqlite3_free(x.aUp);
    }
  }
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void FUN_000a7220(int param_1,int param_2)

{
  int iVar1;
  char *pcVar2;
  int iVar3;
  int in_GS_OFFSET;
  char *local_44;
  undefined4 local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_30;
  char local_2b;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (0 < param_2) {
    FUN_0007f6d0();
    iVar1 = FUN_0009e3a0();
    if (iVar1 == 0) {
      iVar1 = 1;
      if (param_2 != 1) {
        do {
          while( true ) {
            pcVar2 = (char *)FUN_0007f6d0();
            if (pcVar2 == (char *)0x0) goto LAB_000a736c;
            local_44 = (char *)0x0;
            if ((*pcVar2 == '$') &&
               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))
            break;
            local_44 = pcVar2;
            local_2b = local_2b + '\x01';
            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);
            if (iVar3 == 0) {
              FUN_0004e320(param_1);
            }
            else {
              *(undefined4 *)(param_1 + 0x14) = 1;
              FUN_0006f5d0(0xffffffff);
              FUN_00044000(iVar3);
            }
            if (local_2b != '\0') goto LAB_000a736c;
LAB_000a72ef:
            iVar1 = iVar1 + 1;
            if (iVar1 == param_2) goto LAB_000a7352;
          }
          if (local_2b != '\0') goto LAB_000a736c;
          if (iVar3 == 0) goto LAB_000a72ef;
          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;
          iVar1 = iVar1 + 1;
        } while (iVar1 != param_2);
      }
LAB_000a7352:
      if ((*(byte *)(local_38 + 1) & 4) == 0) {
        FUN_0009fc80();
      }
LAB_000a736c:
      FUN_00044000(local_38);
      local_38 = 0;
      local_40 = 0;
      local_3c = 0;
      FUN_00044000(local_30);
    }
  }
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00153870();
}


PUSH EBP
PUSH EDI
PUSH ESI
CALL 0x00152e6c
ADD ESI,0x113c00
PUSH EBX
SUB ESP,0x4c
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x3c],EAX
XOR EAX,EAX
MOV EDX,dword ptr [ESP + 0x64]
MOV EDI,dword ptr [ESP + 0x60]
MOV EBP,dword ptr [ESP + 0x68]
TEST EDX,EDX
JLE 0x000a739a
MOV EAX,dword ptr [EBP]
CALL 0x0007f6d0
LEA ECX,[ESP + 0x1c]
MOV EDX,EDI
MOV EBX,ECX
MOV dword ptr [ESP + 0x8],ECX
MOV ECX,EAX
MOV EAX,EBX
CALL 0x0009e3a0
TEST EAX,EAX
JNZ 0x000a739a
LEA EAX,[ESI + 0xfffa240b]
CMP dword ptr [ESP + 0x64],0x1
MOV EBX,0x1
MOV dword ptr [ESP + 0x4],EAX
LEA EAX,[ESP + 0x18]
MOV dword ptr [ESP + 0xc],EAX
JNZ 0x000a72f8
JMP 0x000a7352
MOV dword ptr [ESP + 0x18],EAX
ADD byte ptr [ESP + 0x31],0x1
SUB ESP,0x8
PUSH EAX
PUSH dword ptr [ESP + 0x10]
CALL 0x000a3060
ADD ESP,0x10
MOV ESI,EAX
TEST EAX,EAX
JZ 0x000a73b0
SUB ESP,0xc
MOV dword ptr [EDI + 0x14],0x1
MOV EDX,EAX
MOV ECX,0x1
PUSH -0x1
MOV EAX,dword ptr [EDI]
CALL 0x0006f5d0
MOV dword ptr [ESP],ESI
CALL 0x00044000
ADD ESP,0x10
CMP byte ptr [ESP + 0x31],0x0
JNZ 0x000a7368
ADD EBX,0x1
CMP EBX,dword ptr [ESP + 0x64]
JZ 0x000a7352
MOV EAX,dword ptr [EBP + EBX*0x4]
CALL 0x0007f6d0
TEST EAX,EAX
JZ 0x000a7368
MOV dword ptr [ESP + 0x18],0x0
CMP byte ptr [EAX],0x24
JNZ 0x000a72a0
SUB ESP,0x8
LEA ECX,[EAX + 0x1]
XOR EDX,EDX
PUSH dword ptr [ESP + 0x14]
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x0009e5c0
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x28]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000a72a4
CMP byte ptr [ESP + 0x31],0x0
JNZ 0x000a7368
TEST EDX,EDX
JZ 0x000a72ef
OR byte ptr [EDX + 0x1],0x4
ADD EBX,0x1
CMP EBX,dword ptr [ESP + 0x64]
JNZ 0x000a72f8
MOV EAX,dword ptr [ESP + 0x24]
TEST byte ptr [EAX + 0x1],0x4
JNZ 0x000a736c
XOR ECX,ECX
MOV EDX,EDI
CALL 0x0009fc80
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x24]
SUB ESP,0xc
PUSH EAX
CALL 0x00044000
MOV dword ptr [ESP + 0x34],0x0
MOV dword ptr [ESP + 0x2c],0x0
MOV dword ptr [ESP + 0x30],0x0
POP EAX
PUSH dword ptr [ESP + 0x38]
CALL 0x00044000
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x3c]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x000a73c9
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH EDI
CALL 0x0004e320
ADD ESP,0x10
CMP byte ptr [ESP + 0x31],0x0
JZ 0x000a72ef
JMP 0x000a7368
CALL 0x00153870
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nvoid FUN_000a7220(int param_1,int param_2)\n\n{\n  int iVar1;\n  char *pcVar2;\n  int iVar3;\n  int in_GS_OFFSET;\n  char *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_30;\n  char local_2b;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (0 < param_2) {\n    FUN_0007f6d0();\n    iVar1 = FUN_0009e3a0();\n    if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00153870();\n}\n\n" comment (function_definition "void FUN_000a7220(int param_1,int param_2)\n\n{\n  int iVar1;\n  char *pcVar2;\n  int iVar3;\n  int in_GS_OFFSET;\n  char *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_30;\n  char local_2b;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (0 < param_2) {\n    FUN_0007f6d0();\n    iVar1 = FUN_0009e3a0();\n    if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00153870();\n}" primitive_type (function_declarator "FUN_000a7220(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  char *pcVar2;\n  int iVar3;\n  int in_GS_OFFSET;\n  char *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_30;\n  char local_2b;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (0 < param_2) {\n    FUN_0007f6d0();\n    iVar1 = FUN_0009e3a0();\n    if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00153870();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "char local_2b;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (0 < param_2) {\n    FUN_0007f6d0();\n    iVar1 = FUN_0009e3a0();\n    if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }\n  }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n    FUN_0007f6d0();\n    iVar1 = FUN_0009e3a0();\n    if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }\n  }" { (expression_statement "FUN_0007f6d0();" (call_expression "FUN_0007f6d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = FUN_0009e3a0();" (assignment_expression "iVar1 = FUN_0009e3a0()" identifier = (call_expression "FUN_0009e3a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }" { (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (if_statement "if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }" if (parenthesized_expression "(param_2 != 1)" ( (binary_expression "param_2 != 1" identifier != number_literal) )) (compound_statement "{\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }" { (do_statement "do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);" do (compound_statement "{\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        }" { (while_statement "while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }" { (expression_statement "pcVar2 = (char *)FUN_0007f6d0();" (assignment_expression "pcVar2 = (char *)FUN_0007f6d0()" identifier = (cast_expression "(char *)FUN_0007f6d0()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0007f6d0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (pcVar2 == (char *)0x0) goto LAB_000a736c;" if (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a736c;" goto statement_identifier ;)) (expression_statement "local_44 = (char *)0x0;" (assignment_expression "local_44 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;" if (parenthesized_expression "((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))" ( (binary_expression "(*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0)" (parenthesized_expression "(*pcVar2 == '$')" ( (binary_expression "*pcVar2 == '$'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'$'" ' character ')) )) && (parenthesized_expression "(iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0)" ( (comma_expression "iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0" (assignment_expression "iVar3 = FUN_0009e5c0(0,&local_44)" identifier = (call_expression "FUN_0009e5c0(0,&local_44)" identifier (argument_list "(0,&local_44)" ( number_literal , (pointer_expression "&local_44" & identifier) )))) , (comma_expression "pcVar2 = local_44, local_44 == (char *)0x0" (assignment_expression "pcVar2 = local_44" identifier = identifier) , (binary_expression "local_44 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (break_statement "break;" break ;)) (expression_statement "local_44 = pcVar2;" (assignment_expression "local_44 = pcVar2" identifier = identifier) ;) (expression_statement "local_2b = local_2b + '\x01';" (assignment_expression "local_2b = local_2b + '\x01'" identifier = (binary_expression "local_2b + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);" (assignment_expression "iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44)" identifier = (call_expression "FUN_000a3060("JSON path error near \'%q\'",local_44)" identifier (argument_list "("JSON path error near \'%q\'",local_44)" ( (string_literal ""JSON path error near \'%q\'"" " string_content escape_sequence string_content escape_sequence ") , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n              FUN_0004e320(param_1);\n            }" { (expression_statement "FUN_0004e320(param_1);" (call_expression "FUN_0004e320(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) }) (else_clause "else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }" else (compound_statement "{\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }" { (expression_statement "*(undefined4 *)(param_1 + 0x14) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x14) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0006f5d0(0xffffffff);" (call_expression "FUN_0006f5d0(0xffffffff)" identifier (argument_list "(0xffffffff)" ( number_literal ))) ;) (expression_statement "FUN_00044000(iVar3);" (call_expression "FUN_00044000(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) }))) (if_statement "if (local_2b != '\0') goto LAB_000a736c;" if (parenthesized_expression "(local_2b != '\0')" ( (binary_expression "local_2b != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a736c;" goto statement_identifier ;)) (labeled_statement "LAB_000a72ef:\n            iVar1 = iVar1 + 1;" statement_identifier : (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;)) (if_statement "if (iVar1 == param_2) goto LAB_000a7352;" if (parenthesized_expression "(iVar1 == param_2)" ( (binary_expression "iVar1 == param_2" identifier == identifier) )) (goto_statement "goto LAB_000a7352;" goto statement_identifier ;)) })) (if_statement "if (local_2b != '\0') goto LAB_000a736c;" if (parenthesized_expression "(local_2b != '\0')" ( (binary_expression "local_2b != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a736c;" goto statement_identifier ;)) (if_statement "if (iVar3 == 0) goto LAB_000a72ef;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a72ef;" goto statement_identifier ;)) (expression_statement "*(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;" (assignment_expression "*(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4" (pointer_expression "*(byte *)(iVar3 + 1)" * (cast_expression "(byte *)(iVar3 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar3 + 1) | 4" (pointer_expression "*(byte *)(iVar3 + 1)" * (cast_expression "(byte *)(iVar3 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar1 != param_2)" ( (binary_expression "iVar1 != param_2" identifier != identifier) )) ;) })) (labeled_statement "LAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }" statement_identifier : (if_statement "if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }" if (parenthesized_expression "((*(byte *)(local_38 + 1) & 4) == 0)" ( (binary_expression "(*(byte *)(local_38 + 1) & 4) == 0" (parenthesized_expression "(*(byte *)(local_38 + 1) & 4)" ( (binary_expression "*(byte *)(local_38 + 1) & 4" (pointer_expression "*(byte *)(local_38 + 1)" * (cast_expression "(byte *)(local_38 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 1)" ( (binary_expression "local_38 + 1" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        FUN_0009fc80();\n      }" { (expression_statement "FUN_0009fc80();" (call_expression "FUN_0009fc80()" identifier (argument_list "()" ( ))) ;) }))) (labeled_statement "LAB_000a736c:\n      FUN_00044000(local_38);" statement_identifier : (expression_statement "FUN_00044000(local_38);" (call_expression "FUN_00044000(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;)) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "FUN_00044000(local_30);" (call_expression "FUN_00044000(local_30)" identifier (argument_list "(local_30)" ( identifier ))) ;) })) })) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Unknown calling convention */\n\nvoid jsonRemoveFunc(sqlite3_context *ctx,int argc,sqlite3_value **argv)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  JsonNode *pJVar4;\n  JsonNode *extraout_EDX;\n  JsonNode *extraout_EDX_00;\n  JsonNode *extraout_EDX_01;\n  int in_GS_OFFSET;\n  _func_void_void_ptr *xDel;\n  JsonParse *in_stack_ffffffa4;\n  sqlite3_context *in_stack_ffffffa8;\n  char *zFormat;\n  JsonParse *pParse;\n  char *zErr;\n  JsonParse x;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (0 < argc) {\n    sqlite3ValueText(*argv,(u8)argc);\n    pParse = &x;\n    iVar2 = jsonParse(in_stack_ffffffa4,in_stack_ffffffa8,(char *)pParse);\n    if (iVar2 == 0) {\n      zFormat = "JSON path error near \'%q\'";\n      iVar2 = 1;\n      pJVar4 = extraout_EDX;\n      if (argc != 1) {\n        do {\n          while( true ) {\n            pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);\n            if (pcVar3 == (char *)0x0) goto LAB_000a736c;\n            zErr = (char *)0x0;\n            if ((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)) break;\n            zErr = pcVar3;\n            x.nErr = x.nErr + '\x01';\n            xDel = (_func_void_void_ptr *)zErr;\n            pcVar3 = sqlite3_mprintf(zFormat);\n            if (pcVar3 == (char *)0x0) {\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }\n            else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }\n            if (x.nErr != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar2 = iVar2 + 1;\n            if (iVar2 == argc) goto LAB_000a7352;\n          }\n          if (x.nErr != '\0') goto LAB_000a736c;\n          if (pJVar4 == (JsonNode *)0x0) goto LAB_000a72ef;\n          pJVar4->jnFlags = pJVar4->jnFlags | 4;\n          iVar2 = iVar2 + 1;\n        } while (iVar2 != argc);\n      }\nLAB_000a7352:\n      if (((x.aNode)->jnFlags & 4) == 0) {\n        jsonReturnJson(x.aNode,ctx,(sqlite3_value **)0x0);\n      }\nLAB_000a736c:\n      sqlite3_free(x.aNode);\n      x.aNode = (JsonNode *)0x0;\n      x.nNode = 0;\n      x.nAlloc = 0;\n      sqlite3_free(x.aUp);\n    }\n  }\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment comment (function_definition "void jsonRemoveFunc(sqlite3_context *ctx,int argc,sqlite3_value **argv)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  JsonNode *pJVar4;\n  JsonNode *extraout_EDX;\n  JsonNode *extraout_EDX_00;\n  JsonNode *extraout_EDX_01;\n  int in_GS_OFFSET;\n  _func_void_void_ptr *xDel;\n  JsonParse *in_stack_ffffffa4;\n  sqlite3_context *in_stack_ffffffa8;\n  char *zFormat;\n  JsonParse *pParse;\n  char *zErr;\n  JsonParse x;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (0 < argc) {\n    sqlite3ValueText(*argv,(u8)argc);\n    pParse = &x;\n    iVar2 = jsonParse(in_stack_ffffffa4,in_stack_ffffffa8,(char *)pParse);\n    if (iVar2 == 0) {\n      zFormat = "JSON path error near \'%q\'";\n      iVar2 = 1;\n      pJVar4 = extraout_EDX;\n      if (argc != 1) {\n        do {\n          while( true ) {\n            pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);\n            if (pcVar3 == (char *)0x0) goto LAB_000a736c;\n            zErr = (char *)0x0;\n            if ((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)) break;\n            zErr = pcVar3;\n            x.nErr = x.nErr + '\x01';\n            xDel = (_func_void_void_ptr *)zErr;\n            pcVar3 = sqlite3_mprintf(zFormat);\n            if (pcVar3 == (char *)0x0) {\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }\n            else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }\n            if (x.nErr != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar2 = iVar2 + 1;\n            if (iVar2 == argc) goto LAB_000a7352;\n          }\n          if (x.nErr != '\0') goto LAB_000a736c;\n          if (pJVar4 == (JsonNode *)0x0) goto LAB_000a72ef;\n          pJVar4->jnFlags = pJVar4->jnFlags | 4;\n          iVar2 = iVar2 + 1;\n        } while (iVar2 != argc);\n      }\nLAB_000a7352:\n      if (((x.aNode)->jnFlags & 4) == 0) {\n        jsonReturnJson(x.aNode,ctx,(sqlite3_value **)0x0);\n      }\nLAB_000a736c:\n      sqlite3_free(x.aNode);\n      x.aNode = (JsonNode *)0x0;\n      x.nNode = 0;\n      x.nAlloc = 0;\n      sqlite3_free(x.aUp);\n    }\n  }\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (function_declarator "jsonRemoveFunc(sqlite3_context *ctx,int argc,sqlite3_value **argv)" identifier (parameter_list "(sqlite3_context *ctx,int argc,sqlite3_value **argv)" ( (parameter_declaration "sqlite3_context *ctx" type_identifier (pointer_declarator "*ctx" * identifier)) , (parameter_declaration "int argc" primitive_type identifier) , (parameter_declaration "sqlite3_value **argv" type_identifier (pointer_declarator "**argv" * (pointer_declarator "*argv" * identifier))) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  JsonNode *pJVar4;\n  JsonNode *extraout_EDX;\n  JsonNode *extraout_EDX_00;\n  JsonNode *extraout_EDX_01;\n  int in_GS_OFFSET;\n  _func_void_void_ptr *xDel;\n  JsonParse *in_stack_ffffffa4;\n  sqlite3_context *in_stack_ffffffa8;\n  char *zFormat;\n  JsonParse *pParse;\n  char *zErr;\n  JsonParse x;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (0 < argc) {\n    sqlite3ValueText(*argv,(u8)argc);\n    pParse = &x;\n    iVar2 = jsonParse(in_stack_ffffffa4,in_stack_ffffffa8,(char *)pParse);\n    if (iVar2 == 0) {\n      zFormat = "JSON path error near \'%q\'";\n      iVar2 = 1;\n      pJVar4 = extraout_EDX;\n      if (argc != 1) {\n        do {\n          while( true ) {\n            pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);\n            if (pcVar3 == (char *)0x0) goto LAB_000a736c;\n            zErr = (char *)0x0;\n            if ((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)) break;\n            zErr = pcVar3;\n            x.nErr = x.nErr + '\x01';\n            xDel = (_func_void_void_ptr *)zErr;\n            pcVar3 = sqlite3_mprintf(zFormat);\n            if (pcVar3 == (char *)0x0) {\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }\n            else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }\n            if (x.nErr != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar2 = iVar2 + 1;\n            if (iVar2 == argc) goto LAB_000a7352;\n          }\n          if (x.nErr != '\0') goto LAB_000a736c;\n          if (pJVar4 == (JsonNode *)0x0) goto LAB_000a72ef;\n          pJVar4->jnFlags = pJVar4->jnFlags | 4;\n          iVar2 = iVar2 + 1;\n        } while (iVar2 != argc);\n      }\nLAB_000a7352:\n      if (((x.aNode)->jnFlags & 4) == 0) {\n        jsonReturnJson(x.aNode,ctx,(sqlite3_value **)0x0);\n      }\nLAB_000a736c:\n      sqlite3_free(x.aNode);\n      x.aNode = (JsonNode *)0x0;\n      x.nNode = 0;\n      x.nAlloc = 0;\n      sqlite3_free(x.aUp);\n    }\n  }\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "JsonNode *pJVar4;" type_identifier (pointer_declarator "*pJVar4" * identifier) ;) (declaration "JsonNode *extraout_EDX;" type_identifier (pointer_declarator "*extraout_EDX" * identifier) ;) (declaration "JsonNode *extraout_EDX_00;" type_identifier (pointer_declarator "*extraout_EDX_00" * identifier) ;) (declaration "JsonNode *extraout_EDX_01;" type_identifier (pointer_declarator "*extraout_EDX_01" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "_func_void_void_ptr *xDel;" type_identifier (pointer_declarator "*xDel" * identifier) ;) (declaration "JsonParse *in_stack_ffffffa4;" type_identifier (pointer_declarator "*in_stack_ffffffa4" * identifier) ;) (declaration "sqlite3_context *in_stack_ffffffa8;" type_identifier (pointer_declarator "*in_stack_ffffffa8" * identifier) ;) (declaration "char *zFormat;" primitive_type (pointer_declarator "*zFormat" * identifier) ;) (declaration "JsonParse *pParse;" type_identifier (pointer_declarator "*pParse" * identifier) ;) (declaration "char *zErr;" primitive_type (pointer_declarator "*zErr" * identifier) ;) (declaration "JsonParse x;" type_identifier identifier ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (0 < argc) {\n    sqlite3ValueText(*argv,(u8)argc);\n    pParse = &x;\n    iVar2 = jsonParse(in_stack_ffffffa4,in_stack_ffffffa8,(char *)pParse);\n    if (iVar2 == 0) {\n      zFormat = "JSON path error near \'%q\'";\n      iVar2 = 1;\n      pJVar4 = extraout_EDX;\n      if (argc != 1) {\n        do {\n          while( true ) {\n            pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);\n            if (pcVar3 == (char *)0x0) goto LAB_000a736c;\n            zErr = (char *)0x0;\n            if ((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)) break;\n            zErr = pcVar3;\n            x.nErr = x.nErr + '\x01';\n            xDel = (_func_void_void_ptr *)zErr;\n            pcVar3 = sqlite3_mprintf(zFormat);\n            if (pcVar3 == (char *)0x0) {\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }\n            else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }\n            if (x.nErr != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar2 = iVar2 + 1;\n            if (iVar2 == argc) goto LAB_000a7352;\n          }\n          if (x.nErr != '\0') goto LAB_000a736c;\n          if (pJVar4 == (JsonNode *)0x0) goto LAB_000a72ef;\n          pJVar4->jnFlags = pJVar4->jnFlags | 4;\n          iVar2 = iVar2 + 1;\n        } while (iVar2 != argc);\n      }\nLAB_000a7352:\n      if (((x.aNode)->jnFlags & 4) == 0) {\n        jsonReturnJson(x.aNode,ctx,(sqlite3_value **)0x0);\n      }\nLAB_000a736c:\n      sqlite3_free(x.aNode);\n      x.aNode = (JsonNode *)0x0;\n      x.nNode = 0;\n      x.nAlloc = 0;\n      sqlite3_free(x.aUp);\n    }\n  }" if (parenthesized_expression "(0 < argc)" ( (binary_expression "0 < argc" number_literal < identifier) )) (compound_statement "{\n    sqlite3ValueText(*argv,(u8)argc);\n    pParse = &x;\n    iVar2 = jsonParse(in_stack_ffffffa4,in_stack_ffffffa8,(char *)pParse);\n    if (iVar2 == 0) {\n      zFormat = "JSON path error near \'%q\'";\n      iVar2 = 1;\n      pJVar4 = extraout_EDX;\n      if (argc != 1) {\n        do {\n          while( true ) {\n            pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);\n            if (pcVar3 == (char *)0x0) goto LAB_000a736c;\n            zErr = (char *)0x0;\n            if ((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)) break;\n            zErr = pcVar3;\n            x.nErr = x.nErr + '\x01';\n            xDel = (_func_void_void_ptr *)zErr;\n            pcVar3 = sqlite3_mprintf(zFormat);\n            if (pcVar3 == (char *)0x0) {\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }\n            else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }\n            if (x.nErr != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar2 = iVar2 + 1;\n            if (iVar2 == argc) goto LAB_000a7352;\n          }\n          if (x.nErr != '\0') goto LAB_000a736c;\n          if (pJVar4 == (JsonNode *)0x0) goto LAB_000a72ef;\n          pJVar4->jnFlags = pJVar4->jnFlags | 4;\n          iVar2 = iVar2 + 1;\n        } while (iVar2 != argc);\n      }\nLAB_000a7352:\n      if (((x.aNode)->jnFlags & 4) == 0) {\n        jsonReturnJson(x.aNode,ctx,(sqlite3_value **)0x0);\n      }\nLAB_000a736c:\n      sqlite3_free(x.aNode);\n      x.aNode = (JsonNode *)0x0;\n      x.nNode = 0;\n      x.nAlloc = 0;\n      sqlite3_free(x.aUp);\n    }\n  }" { (expression_statement "sqlite3ValueText(*argv,(u8)argc);" (call_expression "sqlite3ValueText(*argv,(u8)argc)" identifier (argument_list "(*argv,(u8)argc)" ( (pointer_expression "*argv" * identifier) , (cast_expression "(u8)argc" ( (type_descriptor "u8" type_identifier) ) identifier) ))) ;) (expression_statement "pParse = &x;" (assignment_expression "pParse = &x" identifier = (pointer_expression "&x" & identifier)) ;) (expression_statement "iVar2 = jsonParse(in_stack_ffffffa4,in_stack_ffffffa8,(char *)pParse);" (assignment_expression "iVar2 = jsonParse(in_stack_ffffffa4,in_stack_ffffffa8,(char *)pParse)" identifier = (call_expression "jsonParse(in_stack_ffffffa4,in_stack_ffffffa8,(char *)pParse)" identifier (argument_list "(in_stack_ffffffa4,in_stack_ffffffa8,(char *)pParse)" ( identifier , identifier , (cast_expression "(char *)pParse" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n      zFormat = "JSON path error near \'%q\'";\n      iVar2 = 1;\n      pJVar4 = extraout_EDX;\n      if (argc != 1) {\n        do {\n          while( true ) {\n            pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);\n            if (pcVar3 == (char *)0x0) goto LAB_000a736c;\n            zErr = (char *)0x0;\n            if ((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)) break;\n            zErr = pcVar3;\n            x.nErr = x.nErr + '\x01';\n            xDel = (_func_void_void_ptr *)zErr;\n            pcVar3 = sqlite3_mprintf(zFormat);\n            if (pcVar3 == (char *)0x0) {\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }\n            else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }\n            if (x.nErr != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar2 = iVar2 + 1;\n            if (iVar2 == argc) goto LAB_000a7352;\n          }\n          if (x.nErr != '\0') goto LAB_000a736c;\n          if (pJVar4 == (JsonNode *)0x0) goto LAB_000a72ef;\n          pJVar4->jnFlags = pJVar4->jnFlags | 4;\n          iVar2 = iVar2 + 1;\n        } while (iVar2 != argc);\n      }\nLAB_000a7352:\n      if (((x.aNode)->jnFlags & 4) == 0) {\n        jsonReturnJson(x.aNode,ctx,(sqlite3_value **)0x0);\n      }\nLAB_000a736c:\n      sqlite3_free(x.aNode);\n      x.aNode = (JsonNode *)0x0;\n      x.nNode = 0;\n      x.nAlloc = 0;\n      sqlite3_free(x.aUp);\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      zFormat = "JSON path error near \'%q\'";\n      iVar2 = 1;\n      pJVar4 = extraout_EDX;\n      if (argc != 1) {\n        do {\n          while( true ) {\n            pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);\n            if (pcVar3 == (char *)0x0) goto LAB_000a736c;\n            zErr = (char *)0x0;\n            if ((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)) break;\n            zErr = pcVar3;\n            x.nErr = x.nErr + '\x01';\n            xDel = (_func_void_void_ptr *)zErr;\n            pcVar3 = sqlite3_mprintf(zFormat);\n            if (pcVar3 == (char *)0x0) {\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }\n            else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }\n            if (x.nErr != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar2 = iVar2 + 1;\n            if (iVar2 == argc) goto LAB_000a7352;\n          }\n          if (x.nErr != '\0') goto LAB_000a736c;\n          if (pJVar4 == (JsonNode *)0x0) goto LAB_000a72ef;\n          pJVar4->jnFlags = pJVar4->jnFlags | 4;\n          iVar2 = iVar2 + 1;\n        } while (iVar2 != argc);\n      }\nLAB_000a7352:\n      if (((x.aNode)->jnFlags & 4) == 0) {\n        jsonReturnJson(x.aNode,ctx,(sqlite3_value **)0x0);\n      }\nLAB_000a736c:\n      sqlite3_free(x.aNode);\n      x.aNode = (JsonNode *)0x0;\n      x.nNode = 0;\n      x.nAlloc = 0;\n      sqlite3_free(x.aUp);\n    }" { (expression_statement "zFormat = "JSON path error near \'%q\'";" (assignment_expression "zFormat = "JSON path error near \'%q\'"" identifier = (string_literal ""JSON path error near \'%q\'"" " string_content escape_sequence string_content escape_sequence ")) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "pJVar4 = extraout_EDX;" (assignment_expression "pJVar4 = extraout_EDX" identifier = identifier) ;) (if_statement "if (argc != 1) {\n        do {\n          while( true ) {\n            pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);\n            if (pcVar3 == (char *)0x0) goto LAB_000a736c;\n            zErr = (char *)0x0;\n            if ((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)) break;\n            zErr = pcVar3;\n            x.nErr = x.nErr + '\x01';\n            xDel = (_func_void_void_ptr *)zErr;\n            pcVar3 = sqlite3_mprintf(zFormat);\n            if (pcVar3 == (char *)0x0) {\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }\n            else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }\n            if (x.nErr != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar2 = iVar2 + 1;\n            if (iVar2 == argc) goto LAB_000a7352;\n          }\n          if (x.nErr != '\0') goto LAB_000a736c;\n          if (pJVar4 == (JsonNode *)0x0) goto LAB_000a72ef;\n          pJVar4->jnFlags = pJVar4->jnFlags | 4;\n          iVar2 = iVar2 + 1;\n        } while (iVar2 != argc);\n      }" if (parenthesized_expression "(argc != 1)" ( (binary_expression "argc != 1" identifier != number_literal) )) (compound_statement "{\n        do {\n          while( true ) {\n            pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);\n            if (pcVar3 == (char *)0x0) goto LAB_000a736c;\n            zErr = (char *)0x0;\n            if ((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)) break;\n            zErr = pcVar3;\n            x.nErr = x.nErr + '\x01';\n            xDel = (_func_void_void_ptr *)zErr;\n            pcVar3 = sqlite3_mprintf(zFormat);\n            if (pcVar3 == (char *)0x0) {\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }\n            else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }\n            if (x.nErr != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar2 = iVar2 + 1;\n            if (iVar2 == argc) goto LAB_000a7352;\n          }\n          if (x.nErr != '\0') goto LAB_000a736c;\n          if (pJVar4 == (JsonNode *)0x0) goto LAB_000a72ef;\n          pJVar4->jnFlags = pJVar4->jnFlags | 4;\n          iVar2 = iVar2 + 1;\n        } while (iVar2 != argc);\n      }" { (do_statement "do {\n          while( true ) {\n            pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);\n            if (pcVar3 == (char *)0x0) goto LAB_000a736c;\n            zErr = (char *)0x0;\n            if ((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)) break;\n            zErr = pcVar3;\n            x.nErr = x.nErr + '\x01';\n            xDel = (_func_void_void_ptr *)zErr;\n            pcVar3 = sqlite3_mprintf(zFormat);\n            if (pcVar3 == (char *)0x0) {\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }\n            else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }\n            if (x.nErr != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar2 = iVar2 + 1;\n            if (iVar2 == argc) goto LAB_000a7352;\n          }\n          if (x.nErr != '\0') goto LAB_000a736c;\n          if (pJVar4 == (JsonNode *)0x0) goto LAB_000a72ef;\n          pJVar4->jnFlags = pJVar4->jnFlags | 4;\n          iVar2 = iVar2 + 1;\n        } while (iVar2 != argc);" do (compound_statement "{\n          while( true ) {\n            pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);\n            if (pcVar3 == (char *)0x0) goto LAB_000a736c;\n            zErr = (char *)0x0;\n            if ((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)) break;\n            zErr = pcVar3;\n            x.nErr = x.nErr + '\x01';\n            xDel = (_func_void_void_ptr *)zErr;\n            pcVar3 = sqlite3_mprintf(zFormat);\n            if (pcVar3 == (char *)0x0) {\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }\n            else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }\n            if (x.nErr != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar2 = iVar2 + 1;\n            if (iVar2 == argc) goto LAB_000a7352;\n          }\n          if (x.nErr != '\0') goto LAB_000a736c;\n          if (pJVar4 == (JsonNode *)0x0) goto LAB_000a72ef;\n          pJVar4->jnFlags = pJVar4->jnFlags | 4;\n          iVar2 = iVar2 + 1;\n        }" { (while_statement "while( true ) {\n            pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);\n            if (pcVar3 == (char *)0x0) goto LAB_000a736c;\n            zErr = (char *)0x0;\n            if ((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)) break;\n            zErr = pcVar3;\n            x.nErr = x.nErr + '\x01';\n            xDel = (_func_void_void_ptr *)zErr;\n            pcVar3 = sqlite3_mprintf(zFormat);\n            if (pcVar3 == (char *)0x0) {\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }\n            else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }\n            if (x.nErr != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar2 = iVar2 + 1;\n            if (iVar2 == argc) goto LAB_000a7352;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);\n            if (pcVar3 == (char *)0x0) goto LAB_000a736c;\n            zErr = (char *)0x0;\n            if ((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)) break;\n            zErr = pcVar3;\n            x.nErr = x.nErr + '\x01';\n            xDel = (_func_void_void_ptr *)zErr;\n            pcVar3 = sqlite3_mprintf(zFormat);\n            if (pcVar3 == (char *)0x0) {\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }\n            else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }\n            if (x.nErr != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar2 = iVar2 + 1;\n            if (iVar2 == argc) goto LAB_000a7352;\n          }" { (expression_statement "pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4);" (assignment_expression "pcVar3 = (char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4)" identifier = (cast_expression "(char *)sqlite3ValueText(argv[iVar2],(u8)pJVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3ValueText(argv[iVar2],(u8)pJVar4)" identifier (argument_list "(argv[iVar2],(u8)pJVar4)" ( (subscript_expression "argv[iVar2]" identifier [ identifier ]) , (cast_expression "(u8)pJVar4" ( (type_descriptor "u8" type_identifier) ) identifier) ))))) ;) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_000a736c;" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a736c;" goto statement_identifier ;)) (expression_statement "zErr = (char *)0x0;" (assignment_expression "zErr = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)) break;" if (parenthesized_expression "((*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0))" ( (binary_expression "(*pcVar3 == '$') &&\n               (pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)" (parenthesized_expression "(*pcVar3 == '$')" ( (binary_expression "*pcVar3 == '$'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'$'" ' character ')) )) && (parenthesized_expression "(pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0)" ( (comma_expression "pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr), pcVar3 = zErr,\n               zErr == (char *)0x0" (assignment_expression "pJVar4 = jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr)" identifier = (call_expression "jsonLookupStep(pParse,0,pcVar3 + 1,(int *)0x0,&zErr)" identifier (argument_list "(pParse,0,pcVar3 + 1,(int *)0x0,&zErr)" ( identifier , number_literal , (binary_expression "pcVar3 + 1" identifier + number_literal) , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (pointer_expression "&zErr" & identifier) )))) , (comma_expression "pcVar3 = zErr,\n               zErr == (char *)0x0" (assignment_expression "pcVar3 = zErr" identifier = identifier) , (binary_expression "zErr == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (break_statement "break;" break ;)) (expression_statement "zErr = pcVar3;" (assignment_expression "zErr = pcVar3" identifier = identifier) ;) (expression_statement "x.nErr = x.nErr + '\x01';" (assignment_expression "x.nErr = x.nErr + '\x01'" (field_expression "x.nErr" identifier . field_identifier) = (binary_expression "x.nErr + '\x01'" (field_expression "x.nErr" identifier . field_identifier) + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "xDel = (_func_void_void_ptr *)zErr;" (assignment_expression "xDel = (_func_void_void_ptr *)zErr" identifier = (cast_expression "(_func_void_void_ptr *)zErr" ( (type_descriptor "_func_void_void_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pcVar3 = sqlite3_mprintf(zFormat);" (assignment_expression "pcVar3 = sqlite3_mprintf(zFormat)" identifier = (call_expression "sqlite3_mprintf(zFormat)" identifier (argument_list "(zFormat)" ( identifier )))) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }\n            else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              sqlite3_result_error_nomem(ctx);\n              pJVar4 = extraout_EDX_01;\n            }" { (expression_statement "sqlite3_result_error_nomem(ctx);" (call_expression "sqlite3_result_error_nomem(ctx)" identifier (argument_list "(ctx)" ( identifier ))) ;) (expression_statement "pJVar4 = extraout_EDX_01;" (assignment_expression "pJVar4 = extraout_EDX_01" identifier = identifier) ;) }) (else_clause "else {\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }" else (compound_statement "{\n              ctx->isError = 1;\n              sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);\n              sqlite3_free(pcVar3);\n              pJVar4 = extraout_EDX_00;\n            }" { (expression_statement "ctx->isError = 1;" (assignment_expression "ctx->isError = 1" (field_expression "ctx->isError" identifier -> field_identifier) = number_literal) ;) (expression_statement "sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel);" (call_expression "sqlite3VdbeMemSetStr(ctx->pOut,pcVar3,1,0xff,xDel)" identifier (argument_list "(ctx->pOut,pcVar3,1,0xff,xDel)" ( (field_expression "ctx->pOut" identifier -> field_identifier) , identifier , number_literal , number_literal , identifier ))) ;) (expression_statement "sqlite3_free(pcVar3);" (call_expression "sqlite3_free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "pJVar4 = extraout_EDX_00;" (assignment_expression "pJVar4 = extraout_EDX_00" identifier = identifier) ;) }))) (if_statement "if (x.nErr != '\0') goto LAB_000a736c;" if (parenthesized_expression "(x.nErr != '\0')" ( (binary_expression "x.nErr != '\0'" (field_expression "x.nErr" identifier . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a736c;" goto statement_identifier ;)) (labeled_statement "LAB_000a72ef:\n            iVar2 = iVar2 + 1;" statement_identifier : (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;)) (if_statement "if (iVar2 == argc) goto LAB_000a7352;" if (parenthesized_expression "(iVar2 == argc)" ( (binary_expression "iVar2 == argc" identifier == identifier) )) (goto_statement "goto LAB_000a7352;" goto statement_identifier ;)) })) (if_statement "if (x.nErr != '\0') goto LAB_000a736c;" if (parenthesized_expression "(x.nErr != '\0')" ( (binary_expression "x.nErr != '\0'" (field_expression "x.nErr" identifier . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a736c;" goto statement_identifier ;)) (if_statement "if (pJVar4 == (JsonNode *)0x0) goto LAB_000a72ef;" if (parenthesized_expression "(pJVar4 == (JsonNode *)0x0)" ( (binary_expression "pJVar4 == (JsonNode *)0x0" identifier == (cast_expression "(JsonNode *)0x0" ( (type_descriptor "JsonNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a72ef;" goto statement_identifier ;)) (expression_statement "pJVar4->jnFlags = pJVar4->jnFlags | 4;" (assignment_expression "pJVar4->jnFlags = pJVar4->jnFlags | 4" (field_expression "pJVar4->jnFlags" identifier -> field_identifier) = (binary_expression "pJVar4->jnFlags | 4" (field_expression "pJVar4->jnFlags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != argc)" ( (binary_expression "iVar2 != argc" identifier != identifier) )) ;) })) (labeled_statement "LAB_000a7352:\n      if (((x.aNode)->jnFlags & 4) == 0) {\n        jsonReturnJson(x.aNode,ctx,(sqlite3_value **)0x0);\n      }" statement_identifier : (if_statement "if (((x.aNode)->jnFlags & 4) == 0) {\n        jsonReturnJson(x.aNode,ctx,(sqlite3_value **)0x0);\n      }" if (parenthesized_expression "(((x.aNode)->jnFlags & 4) == 0)" ( (binary_expression "((x.aNode)->jnFlags & 4) == 0" (parenthesized_expression "((x.aNode)->jnFlags & 4)" ( (binary_expression "(x.aNode)->jnFlags & 4" (field_expression "(x.aNode)->jnFlags" (parenthesized_expression "(x.aNode)" ( (field_expression "x.aNode" identifier . field_identifier) )) -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        jsonReturnJson(x.aNode,ctx,(sqlite3_value **)0x0);\n      }" { (expression_statement "jsonReturnJson(x.aNode,ctx,(sqlite3_value **)0x0);" (call_expression "jsonReturnJson(x.aNode,ctx,(sqlite3_value **)0x0)" identifier (argument_list "(x.aNode,ctx,(sqlite3_value **)0x0)" ( (field_expression "x.aNode" identifier . field_identifier) , identifier , (cast_expression "(sqlite3_value **)0x0" ( (type_descriptor "sqlite3_value **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) ))) ;) }))) (labeled_statement "LAB_000a736c:\n      sqlite3_free(x.aNode);" statement_identifier : (expression_statement "sqlite3_free(x.aNode);" (call_expression "sqlite3_free(x.aNode)" identifier (argument_list "(x.aNode)" ( (field_expression "x.aNode" identifier . field_identifier) ))) ;)) (expression_statement "x.aNode = (JsonNode *)0x0;" (assignment_expression "x.aNode = (JsonNode *)0x0" (field_expression "x.aNode" identifier . field_identifier) = (cast_expression "(JsonNode *)0x0" ( (type_descriptor "JsonNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "x.nNode = 0;" (assignment_expression "x.nNode = 0" (field_expression "x.nNode" identifier . field_identifier) = number_literal) ;) (expression_statement "x.nAlloc = 0;" (assignment_expression "x.nAlloc = 0" (field_expression "x.nAlloc" identifier . field_identifier) = number_literal) ;) (expression_statement "sqlite3_free(x.aUp);" (call_expression "sqlite3_free(x.aUp)" identifier (argument_list "(x.aUp)" ( (field_expression "x.aUp" identifier . field_identifier) ))) ;) })) })) (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void FUN_000a7220(int param_1,int param_2)\n\n{\n  int iVar1;\n  char *pcVar2;\n  int iVar3;\n  int in_GS_OFFSET;\n  char *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_30;\n  char local_2b;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (0 < param_2) {\n    FUN_0007f6d0();\n    iVar1 = FUN_0009e3a0();\n    if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00153870();\n}\n\n" (function_definition "void FUN_000a7220(int param_1,int param_2)\n\n{\n  int iVar1;\n  char *pcVar2;\n  int iVar3;\n  int in_GS_OFFSET;\n  char *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_30;\n  char local_2b;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (0 < param_2) {\n    FUN_0007f6d0();\n    iVar1 = FUN_0009e3a0();\n    if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00153870();\n}" primitive_type (function_declarator "FUN_000a7220(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  char *pcVar2;\n  int iVar3;\n  int in_GS_OFFSET;\n  char *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_30;\n  char local_2b;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (0 < param_2) {\n    FUN_0007f6d0();\n    iVar1 = FUN_0009e3a0();\n    if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00153870();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "char local_2b;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (0 < param_2) {\n    FUN_0007f6d0();\n    iVar1 = FUN_0009e3a0();\n    if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }\n  }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n    FUN_0007f6d0();\n    iVar1 = FUN_0009e3a0();\n    if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }\n  }" { (expression_statement "FUN_0007f6d0();" (call_expression "FUN_0007f6d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = FUN_0009e3a0();" (assignment_expression "iVar1 = FUN_0009e3a0()" identifier = (call_expression "FUN_0009e3a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }" { (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (if_statement "if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }" if (parenthesized_expression "(param_2 != 1)" ( (binary_expression "param_2 != 1" identifier != number_literal) )) (compound_statement "{\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }" { (do_statement "do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);" do (compound_statement "{\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        }" { (while_statement "while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }" { (expression_statement "pcVar2 = (char *)FUN_0007f6d0();" (assignment_expression "pcVar2 = (char *)FUN_0007f6d0()" identifier = (cast_expression "(char *)FUN_0007f6d0()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0007f6d0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (pcVar2 == (char *)0x0) goto LAB_000a736c;" if (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a736c;" goto statement_identifier ;)) (expression_statement "local_44 = (char *)0x0;" (assignment_expression "local_44 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;" if (parenthesized_expression "((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))" ( (binary_expression "(*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0)" (parenthesized_expression "(*pcVar2 == '$')" ( (binary_expression "*pcVar2 == '$'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'$'" ' character ')) )) && (parenthesized_expression "(iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0)" ( (comma_expression "iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0" (assignment_expression "iVar3 = FUN_0009e5c0(0,&local_44)" identifier = (call_expression "FUN_0009e5c0(0,&local_44)" identifier (argument_list "(0,&local_44)" ( number_literal , (pointer_expression "&local_44" & identifier) )))) , (comma_expression "pcVar2 = local_44, local_44 == (char *)0x0" (assignment_expression "pcVar2 = local_44" identifier = identifier) , (binary_expression "local_44 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (break_statement "break;" break ;)) (expression_statement "local_44 = pcVar2;" (assignment_expression "local_44 = pcVar2" identifier = identifier) ;) (expression_statement "local_2b = local_2b + '\x01';" (assignment_expression "local_2b = local_2b + '\x01'" identifier = (binary_expression "local_2b + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);" (assignment_expression "iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44)" identifier = (call_expression "FUN_000a3060("JSON path error near \'%q\'",local_44)" identifier (argument_list "("JSON path error near \'%q\'",local_44)" ( (string_literal ""JSON path error near \'%q\'"" " string_content escape_sequence string_content escape_sequence ") , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n              FUN_0004e320(param_1);\n            }" { (expression_statement "FUN_0004e320(param_1);" (call_expression "FUN_0004e320(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) }) (else_clause "else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }" else (compound_statement "{\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }" { (expression_statement "*(undefined4 *)(param_1 + 0x14) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x14) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0006f5d0(0xffffffff);" (call_expression "FUN_0006f5d0(0xffffffff)" identifier (argument_list "(0xffffffff)" ( number_literal ))) ;) (expression_statement "FUN_00044000(iVar3);" (call_expression "FUN_00044000(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) }))) (if_statement "if (local_2b != '\0') goto LAB_000a736c;" if (parenthesized_expression "(local_2b != '\0')" ( (binary_expression "local_2b != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a736c;" goto statement_identifier ;)) (labeled_statement "LAB_000a72ef:\n            iVar1 = iVar1 + 1;" statement_identifier : (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;)) (if_statement "if (iVar1 == param_2) goto LAB_000a7352;" if (parenthesized_expression "(iVar1 == param_2)" ( (binary_expression "iVar1 == param_2" identifier == identifier) )) (goto_statement "goto LAB_000a7352;" goto statement_identifier ;)) })) (if_statement "if (local_2b != '\0') goto LAB_000a736c;" if (parenthesized_expression "(local_2b != '\0')" ( (binary_expression "local_2b != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a736c;" goto statement_identifier ;)) (if_statement "if (iVar3 == 0) goto LAB_000a72ef;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a72ef;" goto statement_identifier ;)) (expression_statement "*(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;" (assignment_expression "*(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4" (pointer_expression "*(byte *)(iVar3 + 1)" * (cast_expression "(byte *)(iVar3 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar3 + 1) | 4" (pointer_expression "*(byte *)(iVar3 + 1)" * (cast_expression "(byte *)(iVar3 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar1 != param_2)" ( (binary_expression "iVar1 != param_2" identifier != identifier) )) ;) })) (labeled_statement "LAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }" statement_identifier : (if_statement "if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }" if (parenthesized_expression "((*(byte *)(local_38 + 1) & 4) == 0)" ( (binary_expression "(*(byte *)(local_38 + 1) & 4) == 0" (parenthesized_expression "(*(byte *)(local_38 + 1) & 4)" ( (binary_expression "*(byte *)(local_38 + 1) & 4" (pointer_expression "*(byte *)(local_38 + 1)" * (cast_expression "(byte *)(local_38 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 1)" ( (binary_expression "local_38 + 1" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        FUN_0009fc80();\n      }" { (expression_statement "FUN_0009fc80();" (call_expression "FUN_0009fc80()" identifier (argument_list "()" ( ))) ;) }))) (labeled_statement "LAB_000a736c:\n      FUN_00044000(local_38);" statement_identifier : (expression_statement "FUN_00044000(local_38);" (call_expression "FUN_00044000(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;)) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "FUN_00044000(local_30);" (call_expression "FUN_00044000(local_30)" identifier (argument_list "(local_30)" ( identifier ))) ;) })) })) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) )))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)))) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content escape_sequence ") , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_000a7220(int param_1,int param_2)\n\n{\n  int iVar1;\n  char *pcVar2;\n  int iVar3;\n  int in_GS_OFFSET;\n  char *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_30;\n  char local_2b;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (0 < param_2) {\n    FUN_0007f6d0();\n    iVar1 = FUN_0009e3a0();\n    if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00153870();\n}" (primitive_type "void") (function_declarator "FUN_000a7220(int param_1,int param_2)" (identifier "FUN_000a7220") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  char *pcVar2;\n  int iVar3;\n  int in_GS_OFFSET;\n  char *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_30;\n  char local_2b;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (0 < param_2) {\n    FUN_0007f6d0();\n    iVar1 = FUN_0009e3a0();\n    if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00153870();\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "char *local_44;" (primitive_type "char") (pointer_declarator "*local_44" (* "*") (identifier "local_44")) (; ";")) (declaration "undefined4 local_40;" (type_identifier "undefined4") (identifier "local_40") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "char local_2b;" (primitive_type "char") (identifier "local_2b") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (0 < param_2) {\n    FUN_0007f6d0();\n    iVar1 = FUN_0009e3a0();\n    if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }\n  }" (if "if") (parenthesized_expression "(0 < param_2)" (( "(") (binary_expression "0 < param_2" (number_literal "0") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n    FUN_0007f6d0();\n    iVar1 = FUN_0009e3a0();\n    if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }\n  }" ({ "{") (expression_statement "FUN_0007f6d0();" (call_expression "FUN_0007f6d0()" (identifier "FUN_0007f6d0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar1 = FUN_0009e3a0();" (assignment_expression "iVar1 = FUN_0009e3a0()" (identifier "iVar1") (= "=") (call_expression "FUN_0009e3a0()" (identifier "FUN_0009e3a0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar1 = 1;\n      if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }\nLAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }\nLAB_000a736c:\n      FUN_00044000(local_38);\n      local_38 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      FUN_00044000(local_30);\n    }" ({ "{") (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" (identifier "iVar1") (= "=") (number_literal "1")) (; ";")) (if_statement "if (param_2 != 1) {\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }" (if "if") (parenthesized_expression "(param_2 != 1)" (( "(") (binary_expression "param_2 != 1" (identifier "param_2") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n        do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);\n      }" ({ "{") (do_statement "do {\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        } while (iVar1 != param_2);" (do "do") (compound_statement "{\n          while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }\n          if (local_2b != '\0') goto LAB_000a736c;\n          if (iVar3 == 0) goto LAB_000a72ef;\n          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;\n          iVar1 = iVar1 + 1;\n        }" ({ "{") (while_statement "while( true ) {\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            pcVar2 = (char *)FUN_0007f6d0();\n            if (pcVar2 == (char *)0x0) goto LAB_000a736c;\n            local_44 = (char *)0x0;\n            if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;\n            local_44 = pcVar2;\n            local_2b = local_2b + '\x01';\n            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);\n            if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }\n            if (local_2b != '\0') goto LAB_000a736c;\nLAB_000a72ef:\n            iVar1 = iVar1 + 1;\n            if (iVar1 == param_2) goto LAB_000a7352;\n          }" ({ "{") (expression_statement "pcVar2 = (char *)FUN_0007f6d0();" (assignment_expression "pcVar2 = (char *)FUN_0007f6d0()" (identifier "pcVar2") (= "=") (cast_expression "(char *)FUN_0007f6d0()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0007f6d0()" (identifier "FUN_0007f6d0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (pcVar2 == (char *)0x0) goto LAB_000a736c;" (if "if") (parenthesized_expression "(pcVar2 == (char *)0x0)" (( "(") (binary_expression "pcVar2 == (char *)0x0" (identifier "pcVar2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000a736c;" (goto "goto") (statement_identifier "LAB_000a736c") (; ";"))) (expression_statement "local_44 = (char *)0x0;" (assignment_expression "local_44 = (char *)0x0" (identifier "local_44") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if ((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))\n            break;" (if "if") (parenthesized_expression "((*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))" (( "(") (binary_expression "(*pcVar2 == '$') &&\n               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0)" (parenthesized_expression "(*pcVar2 == '$')" (( "(") (binary_expression "*pcVar2 == '$'" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (== "==") (char_literal "'$'" (' "'") (character "$") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0)" (( "(") (comma_expression "iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0" (assignment_expression "iVar3 = FUN_0009e5c0(0,&local_44)" (identifier "iVar3") (= "=") (call_expression "FUN_0009e5c0(0,&local_44)" (identifier "FUN_0009e5c0") (argument_list "(0,&local_44)" (( "(") (number_literal "0") (, ",") (pointer_expression "&local_44" (& "&") (identifier "local_44")) () ")")))) (, ",") (comma_expression "pcVar2 = local_44, local_44 == (char *)0x0" (assignment_expression "pcVar2 = local_44" (identifier "pcVar2") (= "=") (identifier "local_44")) (, ",") (binary_expression "local_44 == (char *)0x0" (identifier "local_44") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_44 = pcVar2;" (assignment_expression "local_44 = pcVar2" (identifier "local_44") (= "=") (identifier "pcVar2")) (; ";")) (expression_statement "local_2b = local_2b + '\x01';" (assignment_expression "local_2b = local_2b + '\x01'" (identifier "local_2b") (= "=") (binary_expression "local_2b + '\x01'" (identifier "local_2b") (+ "+") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'")))) (; ";")) (expression_statement "iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);" (assignment_expression "iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44)" (identifier "iVar3") (= "=") (call_expression "FUN_000a3060("JSON path error near \'%q\'",local_44)" (identifier "FUN_000a3060") (argument_list "("JSON path error near \'%q\'",local_44)" (( "(") (string_literal ""JSON path error near \'%q\'"" (" """) (string_content "JSON path error near ") (escape_sequence "\'") (string_content "%q") (escape_sequence "\'") (" """)) (, ",") (identifier "local_44") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n              FUN_0004e320(param_1);\n            }\n            else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_0004e320(param_1);\n            }" ({ "{") (expression_statement "FUN_0004e320(param_1);" (call_expression "FUN_0004e320(param_1)" (identifier "FUN_0004e320") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}")) (else_clause "else {\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }" (else "else") (compound_statement "{\n              *(undefined4 *)(param_1 + 0x14) = 1;\n              FUN_0006f5d0(0xffffffff);\n              FUN_00044000(iVar3);\n            }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x14) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x14) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_0006f5d0(0xffffffff);" (call_expression "FUN_0006f5d0(0xffffffff)" (identifier "FUN_0006f5d0") (argument_list "(0xffffffff)" (( "(") (number_literal "0xffffffff") () ")"))) (; ";")) (expression_statement "FUN_00044000(iVar3);" (call_expression "FUN_00044000(iVar3)" (identifier "FUN_00044000") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (} "}")))) (if_statement "if (local_2b != '\0') goto LAB_000a736c;" (if "if") (parenthesized_expression "(local_2b != '\0')" (( "(") (binary_expression "local_2b != '\0'" (identifier "local_2b") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000a736c;" (goto "goto") (statement_identifier "LAB_000a736c") (; ";"))) (labeled_statement "LAB_000a72ef:\n            iVar1 = iVar1 + 1;" (statement_identifier "LAB_000a72ef") (: ":") (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" (identifier "iVar1") (= "=") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if (iVar1 == param_2) goto LAB_000a7352;" (if "if") (parenthesized_expression "(iVar1 == param_2)" (( "(") (binary_expression "iVar1 == param_2" (identifier "iVar1") (== "==") (identifier "param_2")) () ")")) (goto_statement "goto LAB_000a7352;" (goto "goto") (statement_identifier "LAB_000a7352") (; ";"))) (} "}"))) (if_statement "if (local_2b != '\0') goto LAB_000a736c;" (if "if") (parenthesized_expression "(local_2b != '\0')" (( "(") (binary_expression "local_2b != '\0'" (identifier "local_2b") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000a736c;" (goto "goto") (statement_identifier "LAB_000a736c") (; ";"))) (if_statement "if (iVar3 == 0) goto LAB_000a72ef;" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a72ef;" (goto "goto") (statement_identifier "LAB_000a72ef") (; ";"))) (expression_statement "*(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;" (assignment_expression "*(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4" (pointer_expression "*(byte *)(iVar3 + 1)" (* "*") (cast_expression "(byte *)(iVar3 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 1)" (( "(") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(byte *)(iVar3 + 1) | 4" (pointer_expression "*(byte *)(iVar3 + 1)" (* "*") (cast_expression "(byte *)(iVar3 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 1)" (( "(") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1")) () ")")))) (| "|") (number_literal "4"))) (; ";")) (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" (identifier "iVar1") (= "=") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar1 != param_2)" (( "(") (binary_expression "iVar1 != param_2" (identifier "iVar1") (!= "!=") (identifier "param_2")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_000a7352:\n      if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }" (statement_identifier "LAB_000a7352") (: ":") (if_statement "if ((*(byte *)(local_38 + 1) & 4) == 0) {\n        FUN_0009fc80();\n      }" (if "if") (parenthesized_expression "((*(byte *)(local_38 + 1) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(local_38 + 1) & 4) == 0" (parenthesized_expression "(*(byte *)(local_38 + 1) & 4)" (( "(") (binary_expression "*(byte *)(local_38 + 1) & 4" (pointer_expression "*(byte *)(local_38 + 1)" (* "*") (cast_expression "(byte *)(local_38 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 1)" (( "(") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0009fc80();\n      }" ({ "{") (expression_statement "FUN_0009fc80();" (call_expression "FUN_0009fc80()" (identifier "FUN_0009fc80") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (labeled_statement "LAB_000a736c:\n      FUN_00044000(local_38);" (statement_identifier "LAB_000a736c") (: ":") (expression_statement "FUN_00044000(local_38);" (call_expression "FUN_00044000(local_38)" (identifier "FUN_00044000") (argument_list "(local_38)" (( "(") (identifier "local_38") () ")"))) (; ";"))) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00044000(local_30);" (call_expression "FUN_00044000(local_30)" (identifier "FUN_00044000") (argument_list "(local_30)" (( "(") (identifier "local_30") () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" (identifier "FUN_00153870") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Unknown calling convention */

void function_1(type_1 *ctx,int var_2,type_2 **argv)

{
  int var_15;
  int var_5;
  char *var_6;
  type_3 *var_13;
  type_3 *extraout_EDX;
  type_3 *extraout_EDX_00;
  type_3 *extraout_EDX_01;
  int var_1;
  type_4 *xDel;
  type_5 *in_stack_ffffffa4;
  type_1 *in_stack_ffffffa8;
  char *zFormat;
  type_5 *pParse;
  char *var_8;
  type_5 x;
  
  var_15 = *(int *)(var_1 + 0x14);
  if (0 < var_2) {
    var_3(*argv,(type_6)var_2);
    pParse = &x;
    var_5 = var_4(in_stack_ffffffa4,in_stack_ffffffa8,(char *)pParse);
    if (var_5 == 0) {
      zFormat = "JSON path error near \'%q\'";
      var_5 = 1;
      var_13 = extraout_EDX;
      if (var_2 != 1) {
        do {
          while( true ) {
            var_6 = (char *)var_3(argv[var_5],(type_6)var_13);
            if (var_6 == (char *)0x0) goto LAB_000a736c;
            var_8 = (char *)0x0;
            if ((*var_6 == '$') &&
               (var_13 = var_7(pParse,0,var_6 + 1,(int *)0x0,&var_8), var_6 = var_8,
               var_8 == (char *)0x0)) break;
            var_8 = var_6;
            x.nErr = x.nErr + '\x01';
            xDel = (type_4 *)var_8;
            var_6 = var_9(zFormat);
            if (var_6 == (char *)0x0) {
              var_10(ctx);
              var_13 = extraout_EDX_01;
            }
            else {
              ctx->isError = 1;
              var_11(ctx->pOut,var_6,1,0xff,xDel);
              var_12(var_6);
              var_13 = extraout_EDX_00;
            }
            if (x.nErr != '\0') goto LAB_000a736c;
LAB_000a72ef:
            var_5 = var_5 + 1;
            if (var_5 == var_2) goto LAB_000a7352;
          }
          if (x.nErr != '\0') goto LAB_000a736c;
          if (var_13 == (type_3 *)0x0) goto LAB_000a72ef;
          var_13->jnFlags = var_13->jnFlags | 4;
          var_5 = var_5 + 1;
        } while (var_5 != var_2);
      }
LAB_000a7352:
      if (((x.aNode)->jnFlags & 4) == 0) {
        var_14(x.aNode,ctx,(type_2 **)0x0);
      }
LAB_000a736c:
      var_12(x.aNode);
      x.aNode = (type_3 *)0x0;
      x.nNode = 0;
      x.nAlloc = 0;
      var_12(x.aUp);
    }
  }
  if (var_15 == *(int *)(var_1 + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_16();
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void MASKED(int param_1,int param_2)

{
  int iVar1;
  char *pcVar2;
  int iVar3;
  int in_GS_OFFSET;
  char *local_44;
  undefined4 local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_30;
  char local_2b;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (0 < param_2) {
    FUN_0007f6d0();
    iVar1 = FUN_0009e3a0();
    if (iVar1 == 0) {
      iVar1 = 1;
      if (param_2 != 1) {
        do {
          while( true ) {
            pcVar2 = (char *)FUN_0007f6d0();
            if (pcVar2 == (char *)0x0) goto LAB_000a736c;
            local_44 = (char *)0x0;
            if ((*pcVar2 == '$') &&
               (iVar3 = FUN_0009e5c0(0,&local_44), pcVar2 = local_44, local_44 == (char *)0x0))
            break;
            local_44 = pcVar2;
            local_2b = local_2b + '\x01';
            iVar3 = FUN_000a3060("JSON path error near \'%q\'",local_44);
            if (iVar3 == 0) {
              FUN_0004e320(param_1);
            }
            else {
              *(undefined4 *)(param_1 + 0x14) = 1;
              FUN_0006f5d0(0xffffffff);
              FUN_00044000(iVar3);
            }
            if (local_2b != '\0') goto LAB_000a736c;
LAB_000a72ef:
            iVar1 = iVar1 + 1;
            if (iVar1 == param_2) goto LAB_000a7352;
          }
          if (local_2b != '\0') goto LAB_000a736c;
          if (iVar3 == 0) goto LAB_000a72ef;
          *(byte *)(iVar3 + 1) = *(byte *)(iVar3 + 1) | 4;
          iVar1 = iVar1 + 1;
        } while (iVar1 != param_2);
      }
LAB_000a7352:
      if ((*(byte *)(local_38 + 1) & 4) == 0) {
        FUN_0009fc80();
      }
LAB_000a736c:
      FUN_00044000(local_38);
      local_38 = 0;
      local_40 = 0;
      local_3c = 0;
      FUN_00044000(local_30);
    }
  }
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00153870();
}

