{"_id":"4358be2bcd196bb0af892326dda0e4efa8643d029b96d73585cd695daffd59b8","abi":"arm64-v8a","apk_sha256":"76c308fac6a655a3534771777780e004feb1d91be032857768c891b2baf40ba6","architecture":"AArch64","bits":"64","cfg_count":10,"combined_c":"/* Decompiled: libtool-checker.so arch=AARCH64 */\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdint.h>\n\n\n/* === FUN_001008d0 @ 001008d0 === */\n\nvoid FUN_001008d0(void)\n\n{\n  (*(code *)PTR_00102fa0)();\n  return;\n}\n\n\n/* === entry @ 00100990 === */\n\nvoid entry(void)\n\n{\n  __cxa_finalize(&PTR_LOOP_00102d88);\n  return;\n}\n\n\n/* === FUN_0010099c @ 0010099c === */\n\nvoid FUN_0010099c(void)\n\n{\n  return;\n}\n\n\n/* === Java_com_scottyab_rootbeer_RootBeerNative_setLogDebugMessages @ 001009cc === */\n\nvoid Java_com_scottyab_rootbeer_RootBeerNative_setLogDebugMessages\n               (undefined8 param_1,undefined8 param_2,char param_3)\n\n{\n  DAT_00103000 = (uint)(param_3 != '\\0');\n  return;\n}\n\n\n/* === exists @ 00100a18 === */\n\n/* exists(char const*) */\n\nundefined4 exists(char *param_1)\n\n{\n  FILE *__stream;\n  undefined4 local_14;\n  \n  __stream = fopen(param_1,\"r\");\n  if (__stream == (FILE *)0x0) {\n    if (DAT_00103000 != 0) {\n      __android_log_print(4,\"RootBeer\",\"LOOKING FOR BINARY: %s Absent :(\",param_1);\n    }\n    local_14 = 0;\n  }\n  else {\n    if (DAT_00103000 != 0) {\n      __android_log_print(4,\"RootBeer\",\"LOOKING FOR BINARY: %s PRESENT!!!\",param_1);\n    }\n    fclose(__stream);\n    local_14 = 1;\n  }\n  return local_14;\n}\n\n\n/* === Java_com_scottyab_rootbeer_RootBeerNative_checkForRoot @ 00100ad4 === */\n\nbool Java_com_scottyab_rootbeer_RootBeerNative_checkForRoot\n               (_JNIEnv *param_1,undefined8 param_2,_jarray *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  _jstring *p_Var3;\n  char *pcVar4;\n  undefined4 local_34;\n  undefined4 local_2c;\n  \n  local_2c = 0;\n  iVar1 = _JNIEnv::GetArrayLength(param_1,param_3);\n  for (local_34 = 0; local_34 < iVar1; local_34 = local_34 + 1) {\n    p_Var3 = (_jstring *)_JNIEnv::GetObjectArrayElement(param_1,(_jobjectArray *)param_3,local_34);\n    pcVar4 = (char *)_JNIEnv::GetStringUTFChars(param_1,p_Var3,(uchar *)0x0);\n    iVar2 = exists(pcVar4);\n    local_2c = local_2c + iVar2;\n    _JNIEnv::ReleaseStringUTFChars(param_1,p_Var3,pcVar4);\n  }\n  return 0 < local_2c;\n}\n\n\n/* === GetArrayLength @ 00100b98 === */\n\n/* _JNIEnv::GetArrayLength(_jarray*) */\n\nvoid __thiscall _JNIEnv::GetArrayLength(_JNIEnv *this,_jarray *param_1)\n\n{\n  (**(code **)(*(long *)this + 0x558))(this,param_1);\n  return;\n}\n\n\n/* === GetObjectArrayElement @ 00100bd0 === */\n\n/* _JNIEnv::GetObjectArrayElement(_jobjectArray*, int) */\n\nvoid __thiscall _JNIEnv::GetObjectArrayElement(_JNIEnv *this,_jobjectArray *param_1,int param_2)\n\n{\n  (**(code **)(*(long *)this + 0x568))(this,param_1,param_2);\n  return;\n}\n\n\n/* === GetStringUTFChars @ 00100c10 === */\n\n/* _JNIEnv::GetStringUTFChars(_jstring*, unsigned char*) */\n\nvoid __thiscall _JNIEnv::GetStringUTFChars(_JNIEnv *this,_jstring *param_1,uchar *param_2)\n\n{\n  (**(code **)(*(long *)this + 0x548))(this,param_1,param_2);\n  return;\n}\n\n\n/* === ReleaseStringUTFChars @ 00100c50 === */\n\n/* _JNIEnv::ReleaseStringUTFChars(_jstring*, char const*) */\n\nvoid __thiscall _JNIEnv::ReleaseStringUTFChars(_JNIEnv *this,_jstring *param_1,char *param_2)\n\n{\n  (**(code **)(*(long *)this + 0x550))(this,param_1,param_2);\n  return;\n}\n\n\n/* total=26 ok=10 skip=16 cfgs=10 */\n","decompile_error":"","decompile_success":true,"decompiled_at":{"$date":"2026-06-13T14:02:48.985Z"},"endianness":"little","file_name":"libtool-checker.so","file_size":10064,"format":"ELF","function_count":10,"ghidra_processor":"AARCH64","mime_type":null,"rel_path":"lib/arm64-v8a/libtool-checker.so","status":"done"}
{"_id":"0784f567b550564f959e8070f5f080a3634c10145cbe5062dace387bf179e00e","abi":"armeabi-v7a","apk_sha256":"76c308fac6a655a3534771777780e004feb1d91be032857768c891b2baf40ba6","architecture":"ARM","bits":"32","cfg_count":45,"combined_c":"/* Decompiled: libfrida-check.so arch=ARM */\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdint.h>\n\n\n/* === _FINI_1 @ 000107c8 === */\n\nvoid _FINI_1(void)\n\n{\n  (*(code *)PTR___cxa_finalize_00013fc8)((int)&DAT_000107d4 + DAT_000107d4);\n  return;\n}\n\n\n/* === FUN_000107d8 @ 000107d8 === */\n\nvoid FUN_000107d8(void)\n\n{\n  return;\n}\n\n\n/* === Java_com_app_damnvulnerablebank_FridaCheckJNI_fridaCheck @ 0001080c === */\n\nvoid Java_com_app_damnvulnerablebank_FridaCheckJNI_fridaCheck(void)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  sockaddr local_2c;\n  int local_1c;\n  \n  piVar3 = *(int **)(DAT_00010874 + 0x10822);\n  local_1c = *piVar3;\n  iVar1 = socket(2,1,0);\n  if (-1 < iVar1) {\n    local_2c.sa_family = (sa_family_t)DAT_00010870;\n    local_2c.sa_data[0] = DAT_00010870._2_1_;\n    local_2c.sa_data[1] = DAT_00010870._3_1_;\n    iVar2 = inet_pton(2,(char *)(DAT_00010878 + 0x10842),local_2c.sa_data + 2);\n    if (0 < iVar2) {\n      connect(iVar1,&local_2c,0x10);\n    }\n  }\n  iVar1 = *piVar3 - local_1c;\n  if (iVar1 == 0) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail(iVar1);\n}\n\n\n/* === FUN_0001087c @ 0001087c === */\n\nuint * FUN_0001087c(uint *param_1,undefined4 *param_2,int *param_3)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  \n  uVar1 = *param_1;\n  if (-1 < (int)uVar1) {\n    *param_2 = 1;\n    *param_3 = (param_1[1] >> 0x18) * 4 + 4;\n    return param_1 + 1;\n  }\n  uVar3 = (uVar1 & 0xfffffff) >> 0x18;\n  if (uVar3 == 0) {\n    uVar2 = 1;\n    iVar4 = 4;\n  }\n  else {\n    if (uVar3 != 3 && uVar3 != 1) {\n      return (uint *)0x0;\n    }\n    iVar4 = ((uVar1 & 0xffffff) >> 0x10) * 4 + 4;\n    uVar2 = 2;\n  }\n  *param_3 = iVar4;\n  *param_2 = uVar2;\n  return param_1;\n}\n\n\n/* === FUN_000108c4 @ 000108c4 === */\n\nvoid FUN_000108c4(undefined4 param_1,int param_2,undefined1 *param_3,undefined1 *param_4)\n\n{\n  byte bVar1;\n  bool bVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  uint uVar7;\n  int unaff_r6;\n  uint uVar8;\n  undefined1 *puVar9;\n  undefined1 *puVar10;\n  uint uVar11;\n  \n  bVar2 = false;\n  piVar3 = *(int **)(DAT_00010b28 + 0x108d8);\n  iVar4 = *piVar3;\n  uVar11 = 0;\n  puVar10 = param_4;\nLAB_000108e8:\n  if ((bVar2) || (param_4 <= param_3)) {\n    if (uVar11 == 0) {\n      FUN_00011144(param_1,0xe,&stack0xffffffd4);\n      FUN_00011178(param_1,0xf,unaff_r6);\n    }\n    uVar5 = 8;\nswitchD_000109f6_caseD_b4:\n    if (*piVar3 == iVar4) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail(uVar5);\n  }\n  puVar9 = param_3 + 1;\n  uVar8 = (uint)*(byte *)(param_2 + ((uint)param_3 ^ 3));\n  if (-1 < (int)(uVar8 << 0x18)) {\n    FUN_00011144(param_1,0xd,&stack0xffffffd4);\n    if ((int)(uVar8 << 0x19) < 0) {\n      unaff_r6 = (unaff_r6 - (uVar8 * 4 & 0xfc)) + -4;\n    }\n    else {\n      unaff_r6 = uVar8 * 4 + unaff_r6 + 4;\n    }\nLAB_00010984:\n    FUN_00011178(param_1,0xd);\n    bVar2 = false;\n    param_3 = puVar9;\n    goto LAB_000108e8;\n  }\n  switch((uVar8 & 0xf0) - 0x80 >> 4) {\n  case 0:\n    if ((puVar9 < param_4) &&\n       (uVar6 = (uVar8 & 0xf) << 0xc | (uint)*(byte *)(param_2 + ((uint)puVar9 ^ 3)) << 4,\n       uVar6 != 0)) {\n      bVar2 = false;\n      FUN_00010c88(param_1,0,uVar6,0,puVar10);\n      uVar11 = uVar11 | (uVar8 & 8) >> 3;\n      param_3 = param_3 + 2;\n      goto LAB_000108e8;\n    }\n    break;\n  case 1:\n    if ((uVar8 & 0xf | 2) != 0xf) {\n      puVar10 = &stack0xffffffd4;\n      bVar2 = false;\n      FUN_00010b2c(param_1,0,uVar8 & 0xf,0);\n      FUN_00011178(param_1,0xd,unaff_r6);\n      param_3 = puVar9;\n      goto LAB_000108e8;\n    }\n    break;\n  case 2:\n    bVar2 = false;\n    FUN_00010c88(param_1,0,(0x20 << (uVar8 & 7)) - 0x10U | (uVar8 & 8) << 0xb,0,puVar10);\n    param_3 = puVar9;\n    goto LAB_000108e8;\n  case 3:\n    bVar2 = true;\n    uVar5 = 9;\n    switch(uVar8) {\n    case 0xb0:\n      param_3 = puVar9;\n      break;\n    case 0xb1:\n      if (param_4 <= puVar9) goto switchD_00010934_default;\n      bVar1 = *(byte *)(param_2 + ((uint)puVar9 ^ 3));\n      uVar5 = 9;\n      if ((bVar1 == 0) || ((bVar1 & 0xf0) != 0)) goto switchD_000109f6_caseD_b4;\n      bVar2 = false;\n      FUN_00010c88(param_1,0,bVar1,0,puVar10);\n      param_3 = param_3 + 2;\n      break;\n    case 0xb2:\n      uVar6 = 0;\n      uVar8 = 0;\n      do {\n        if (param_4 == puVar9) goto switchD_00010934_default;\n        uVar7 = (uint)puVar9 ^ 3;\n        puVar9 = puVar9 + 1;\n        uVar7 = (uint)*(byte *)(param_2 + uVar7);\n        uVar6 = uVar6 | (uVar7 & 0x7f) << (uVar8 & 0xff);\n        uVar8 = uVar8 + 7;\n      } while ((int)(uVar7 << 0x18) < 0);\n      FUN_00011144(param_1,0xd,&stack0xffffffd4);\n      unaff_r6 = unaff_r6 + uVar6 * 4 + 0x204;\n      goto LAB_00010984;\n    case 0xb3:\n      uVar5 = 1;\n      uVar8 = (uint)*(byte *)(param_2 + ((uint)puVar9 ^ 3));\n      uVar6 = (uVar8 | uVar8 << 0xc) & 0xf000f;\nLAB_00010a62:\n      FUN_00010c88(param_1,1,uVar6 + 1,uVar5,puVar10);\n      bVar2 = false;\n      param_3 = param_3 + 2;\n      break;\n    case 0xb4:\n    case 0xb5:\n    case 0xb6:\n    case 0xb7:\n      goto switchD_000109f6_caseD_b4;\n    default:\n      uVar5 = 1;\nLAB_00010a7e:\n      FUN_00010c88(param_1,1,(uVar8 & 7) + DAT_00010b24,uVar5,puVar10);\n      bVar2 = false;\n      param_3 = puVar9;\n    }\n    goto LAB_000108e8;\n  case 4:\n    if ((uVar8 & 0xfe) == 200) {\n      bVar1 = *(byte *)(param_2 + ((uint)puVar9 ^ 3));\n      uVar6 = bVar1 & 0xf;\n      uVar8 = (uint)(bVar1 >> 4) | (uint)(uVar8 == 200) << 4;\n      if (uVar8 + uVar6 < 0x20) {\n        uVar6 = uVar6 | uVar8 << 0x10;\n        uVar5 = 5;\n        goto LAB_00010a62;\n      }\n    }\n    break;\n  case 5:\n    if (-1 < (int)(uVar8 << 0x1c)) {\n      uVar5 = 5;\n      goto LAB_00010a7e;\n    }\n  }\nswitchD_00010934_default:\n  uVar5 = 9;\n  goto switchD_000109f6_caseD_b4;\n}\n\n\n/* === FUN_00010b2c @ 00010b2c === */\n\nint FUN_00010b2c(undefined4 param_1,int param_2,uint param_3,uint param_4,undefined4 param_5)\n\n{\n  int iVar1;\n  FILE *__stream;\n  \n  if (param_2 == 1) {\n    if ((param_4 | 4) != 5) {\n      return 2;\n    }\n    if (param_4 == 1) {\n      if (0xf < param_3) {\n        return 2;\n      }\n      FUN_000112aa(param_1);\n    }\n    else if (0x1f < param_3) {\n      return 2;\n    }\n    iVar1 = FUN_000111c0(param_1,param_3 + 0x100,param_5);\n  }\n  else {\n    if (param_2 != 0) {\n      __stream = (FILE *)(*(int *)(DAT_00010bc8 + 0x10ba6) + 0xa8);\n      fprintf(__stream,(char *)(DAT_00010bcc + 0x10bac),DAT_00010bd0 + 0x10bb0,\n              DAT_00010bd4 + 0x10bb2,0x35e,DAT_00010bc4 + 0x10b9c);\n      fflush(__stream);\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    if (0xf < param_3) {\n      return 2;\n    }\n    if (param_4 != 0) {\n      return 2;\n    }\n    iVar1 = FUN_00011144(param_1,param_3,param_5);\n  }\n  return (uint)(iVar1 != 0) << 1;\n}\n\n\n/* === FUN_00010bd8 @ 00010bd8 === */\n\nint FUN_00010bd8(undefined4 param_1,int param_2,uint param_3,uint param_4,undefined4 *param_5)\n\n{\n  int iVar1;\n  FILE *__stream;\n  \n  if (param_2 == 1) {\n    if ((param_4 | 4) != 5) {\n      return 2;\n    }\n    if (param_4 == 1) {\n      if (0xf < param_3) {\n        return 2;\n      }\n      FUN_000112aa(param_1);\n    }\n    else if (0x1f < param_3) {\n      return 2;\n    }\n    iVar1 = FUN_000111f8(param_1,param_3 + 0x100,*param_5,param_5[1]);\n  }\n  else {\n    if (param_2 != 0) {\n      __stream = (FILE *)(*(int *)(DAT_00010c78 + 0x10c54) + 0xa8);\n      fprintf(__stream,(char *)(DAT_00010c7c + 0x10c5a),DAT_00010c80 + 0x10c5e,\n              DAT_00010c84 + 0x10c60,0x328,DAT_00010c74 + 0x10c4a);\n      fflush(__stream);\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    if (0xf < param_3) {\n      return 2;\n    }\n    if (param_4 != 0) {\n      return 2;\n    }\n    iVar1 = FUN_00011178(param_1,param_3,*param_5);\n  }\n  return (uint)(iVar1 != 0) << 1;\n}\n\n\n/* === FUN_00010c88 @ 00010c88 === */\n\nvoid FUN_00010c88(undefined4 param_1,int param_2,uint param_3,int *param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  FILE *__stream;\n  bool bVar3;\n  uint uVar4;\n  int *unaff_r6;\n  uint uVar5;\n  int *piVar6;\n  int *local_38;\n  \n  piVar6 = *(int **)(DAT_00010dc0 + 0x10c9c);\n  iVar1 = *piVar6;\n  local_38 = param_4;\n  if (param_2 == 1) {\n    if ((((uint)param_4 | 4) == 5) &&\n       (iVar2 = FUN_00011144(param_1,0xd,&stack0xffffffd4,param_4,1,param_3), iVar2 == 0)) {\n      uVar4 = param_3 >> 0x10;\n      uVar5 = uVar4 + (param_3 & 0xffff);\n      do {\n        if (uVar5 <= uVar4) {\n          if (param_4 == (int *)0x1) {\n            unaff_r6 = unaff_r6 + 1;\n          }\n          goto LAB_00010d7c;\n        }\n        local_38 = (int *)*unaff_r6;\n        iVar2 = FUN_00010bd8(param_1,1,uVar4,param_4,&local_38);\n        uVar4 = uVar4 + 1;\n        unaff_r6 = unaff_r6 + 2;\n      } while (iVar2 == 0);\n    }\n  }\n  else {\n    if (param_2 != 0) {\n      __stream = (FILE *)(*(int *)(DAT_00010dc8 + 0x10da2) + 0xa8);\n      fprintf(__stream,(char *)(DAT_00010dcc + 0x10da8),DAT_00010dd0 + 0x10dac,\n              DAT_00010dd4 + 0x10dae,0x3b8,DAT_00010dc4 + 0x10d98);\n      fflush(__stream);\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    if ((param_4 == (int *)0x0) &&\n       (iVar2 = FUN_00011144(param_1,0xd,&local_38,0,0,param_3), iVar2 == 0)) {\n      bVar3 = false;\n      for (uVar5 = 0; uVar5 != 0x10; uVar5 = uVar5 + 1) {\n        if ((1 << (uVar5 & 0xff) & param_3) != 0) {\n          local_38 = local_38 + 1;\n          iVar2 = FUN_00010bd8(param_1,0,uVar5,0,&stack0xffffffd4);\n          if (iVar2 != 0) goto LAB_00010d4a;\n          bVar3 = (bool)(bVar3 | uVar5 == 0xd);\n        }\n      }\n      unaff_r6 = local_38;\n      if (bVar3) {\n        iVar2 = 0;\n      }\n      else {\nLAB_00010d7c:\n        iVar2 = FUN_00011178(param_1,0xd,unaff_r6);\n        iVar2 = (uint)(iVar2 != 0) << 1;\n      }\n      goto LAB_00010d4c;\n    }\n  }\nLAB_00010d4a:\n  iVar2 = 2;\nLAB_00010d4c:\n  if (*piVar6 != iVar1) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail(iVar2);\n  }\n  return;\n}\n\n\n/* === FUN_00010e20 @ 00010e20 === */\n\nvoid FUN_00010e20(int param_1)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  undefined4 local_8a8 [3];\n  code *local_89c;\n  undefined4 local_894;\n  undefined4 local_888;\n  undefined1 auStack_880 [1120];\n  undefined1 auStack_420 [1028];\n  int iStack_1c;\n  \n  piVar3 = *(int **)(DAT_00010ebc + 0x10e38);\n  iStack_1c = *piVar3;\n  FUN_000110cc(auStack_420);\n  *(undefined4 *)(param_1 + 0xc) = 0;\n  FUN_000110fc(auStack_880,auStack_420);\n  do {\n    do {\n      iVar1 = FUN_0001123a(auStack_880,local_8a8);\n      if (iVar1 != 0) goto LAB_00010e8e;\n    } while (local_89c == (code *)0x0);\n    *(undefined4 *)(param_1 + 0x48) = local_8a8[0];\n    *(undefined4 *)(param_1 + 0x4c) = local_888;\n    *(undefined4 *)(param_1 + 0x50) = local_894;\n    iVar1 = (*local_89c)(0,param_1,auStack_880);\n  } while (iVar1 == 8);\n  if (iVar1 == 6) {\n    FUN_00010ec0(auStack_420,auStack_880,param_1,0);\n    uVar2 = 2;\n  }\n  else if (iVar1 == 9) {\n    uVar2 = 9;\n  }\n  else {\nLAB_00010e8e:\n    uVar2 = 3;\n  }\n  if (*piVar3 != iStack_1c) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail(uVar2);\n  }\n  return;\n}\n\n\n/* === FUN_00010ec0 @ 00010ec0 === */\n\nvoid FUN_00010ec0(undefined4 param_1,undefined4 param_2,int param_3,uint param_4)\n\n{\n  int iVar1;\n  FILE *__stream;\n  undefined4 uVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 local_58;\n  undefined4 local_54 [3];\n  code *local_48;\n  undefined4 local_40;\n  undefined4 local_34;\n  int local_2c;\n  int local_28;\n  \n  piVar4 = *(int **)(DAT_00010fc0 + 0x10ed8);\n  local_28 = *piVar4;\n  FUN_000110fc(param_2,param_1);\n  iVar3 = 1;\n  do {\n    uVar2 = 1;\n    if (((param_4 & 1) != 0) && (uVar2 = 2, iVar3 == 0)) {\n      FUN_00011178(param_2,0xffffffff,*(undefined4 *)(param_3 + 0x10));\n      param_4 = 0;\n    }\n    FUN_00011144(param_2,0xfffffffe,&local_2c);\n    iVar1 = FUN_0001123a(param_2,local_54);\n    if (iVar1 != 0) goto LAB_00010f76;\n    if (local_48 != (code *)0x0) {\n      *(undefined4 *)(param_3 + 0x48) = local_54[0];\n      *(undefined4 *)(param_3 + 0x4c) = local_34;\n      *(undefined4 *)(param_3 + 0x50) = local_40;\n      iVar1 = (*local_48)(uVar2,param_3,param_2);\n      if (iVar1 == 7) {\n        FUN_00011144(param_2,0xffffffff,&local_58);\n        *(undefined4 *)(param_3 + 0x10) = local_58;\n        FUN_0001125c(param_2);\nLAB_00010f76:\n        if (*piVar4 != local_28) {\n                    /* WARNING: Subroutine does not return */\n          __stack_chk_fail();\n        }\n        return;\n      }\n      if (iVar1 != 8) {\n        if (iVar1 == 9) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        goto LAB_00010f76;\n      }\n      if (local_2c == *(int *)(param_3 + 0x20)) {\n        __stream = (FILE *)(*(int *)(DAT_00010fc8 + 0x10fa0) + 0xa8);\n        fprintf(__stream,(char *)(DAT_00010fcc + 0x10fa6),DAT_00010fd0 + 0x10faa,\n                DAT_00010fd4 + 0x10fac,0x268,DAT_00010fc4 + 0x10f96);\n        fflush(__stream);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n    }\n    iVar3 = iVar3 + -1;\n  } while( true );\n}\n\n\n/* === FUN_00010fdc @ 00010fdc === */\n\nvoid FUN_00010fdc(undefined4 param_1)\n\n{\n  FILE *__stream;\n  undefined1 auStack_870 [1120];\n  undefined1 auStack_410 [1024];\n  \n  FUN_000110cc(auStack_410);\n  FUN_00010ec0(auStack_410,auStack_870,param_1,1);\n  __stream = (FILE *)(*(int *)(DAT_00011034 + 0x11012) + 0xa8);\n  fprintf(__stream,(char *)(DAT_00011038 + 0x11018),DAT_0001103c + 0x1101c,DAT_00011040 + 0x1101e,\n          0x2ce,DAT_00011030 + 0x11008);\n  fflush(__stream);\n                    /* WARNING: Subroutine does not return */\n  abort();\n}\n\n\n/* === FUN_00011044 @ 00011044 === */\n\nvoid FUN_00011044(undefined4 param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  undefined1 auStack_3c [8];\n  undefined4 local_34;\n  int local_14;\n  \n  piVar2 = *(int **)(DAT_00011074 + 0x11050);\n  local_14 = *piVar2;\n  iVar1 = FUN_0001123a(param_1,auStack_3c);\n  if (iVar1 != 0) {\n    local_34 = 0;\n  }\n  if (*piVar2 != local_14) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail(local_34);\n  }\n  return;\n}\n\n\n/* === FUN_00011078 @ 00011078 === */\n\nvoid FUN_00011078(undefined4 param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  undefined4 local_3c [10];\n  int local_14;\n  \n  piVar2 = *(int **)(DAT_000110a8 + 0x11084);\n  local_14 = *piVar2;\n  iVar1 = FUN_0001123a(param_1,local_3c);\n  if (iVar1 != 0) {\n    local_3c[0] = 0;\n  }\n  if (*piVar2 != local_14) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail(local_3c[0]);\n  }\n  return;\n}\n\n\n/* === FUN_000110b8 @ 000110b8 === */\n\nundefined4 FUN_000110b8(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  \n  iVar1 = FUN_00011234(param_2);\n  uVar2 = 0;\n  if (iVar1 != 1) {\n    uVar2 = 9;\n  }\n  return uVar2;\n}\n\n\n/* === FUN_000110cc @ 000110cc === */\n\nundefined4 FUN_000110cc(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 unaff_r4;\n  undefined4 unaff_r5;\n  undefined4 unaff_r6;\n  undefined4 unaff_r7;\n  undefined4 unaff_r8;\n  undefined4 unaff_r9;\n  undefined4 unaff_r10;\n  undefined4 unaff_r11;\n  undefined4 in_r12;\n  undefined4 unaff_lr;\n  \n  *(int *)param_1 = param_1;\n  *(undefined4 *)(param_1 + 4) = param_2;\n  *(undefined4 *)(param_1 + 8) = param_3;\n  *(undefined4 *)(param_1 + 0xc) = param_4;\n  *(undefined4 *)(param_1 + 0x10) = unaff_r4;\n  *(undefined4 *)(param_1 + 0x14) = unaff_r5;\n  *(undefined4 *)(param_1 + 0x18) = unaff_r6;\n  *(undefined4 *)(param_1 + 0x1c) = unaff_r7;\n  *(undefined4 *)(param_1 + 0x20) = unaff_r8;\n  *(undefined4 *)(param_1 + 0x24) = unaff_r9;\n  *(undefined4 *)(param_1 + 0x28) = unaff_r10;\n  *(undefined4 *)(param_1 + 0x2c) = unaff_r11;\n  *(undefined4 *)(param_1 + 0x30) = in_r12;\n  *(BADSPACEBASE **)(param_1 + 0x34) = register0x00000054;\n  *(undefined4 *)(param_1 + 0x38) = unaff_lr;\n  *(undefined4 *)(param_1 + 0x3c) = unaff_lr;\n  return 0;\n}\n\n\n/* === FUN_000110e4 @ 000110e4 === */\n\nvoid FUN_000110e4(undefined8 *param_1)\n\n{\n  undefined8 in_d0;\n  undefined8 in_d1;\n  undefined8 in_d2;\n  undefined8 in_d3;\n  undefined8 in_d4;\n  undefined8 in_d5;\n  undefined8 in_d6;\n  undefined8 in_d7;\n  undefined8 unaff_d8;\n  undefined8 unaff_d9;\n  undefined8 unaff_d10;\n  undefined8 unaff_d11;\n  undefined8 unaff_d12;\n  undefined8 unaff_d13;\n  undefined8 unaff_d14;\n  undefined8 unaff_d15;\n  \n  *param_1 = in_d0;\n  param_1[1] = in_d1;\n  param_1[2] = in_d2;\n  param_1[3] = in_d3;\n  param_1[4] = in_d4;\n  param_1[5] = in_d5;\n  param_1[6] = in_d6;\n  param_1[7] = in_d7;\n  param_1[8] = unaff_d8;\n  param_1[9] = unaff_d9;\n  param_1[10] = unaff_d10;\n  param_1[0xb] = unaff_d11;\n  param_1[0xc] = unaff_d12;\n  param_1[0xd] = unaff_d13;\n  param_1[0xe] = unaff_d14;\n  param_1[0xf] = unaff_d15;\n  return;\n}\n\n\n/* === FUN_000110ec @ 000110ec === */\n\nvoid FUN_000110ec(undefined8 *param_1)\n\n{\n  undefined8 in_d0;\n  undefined8 in_d1;\n  undefined8 in_d2;\n  undefined8 in_d3;\n  undefined8 in_d4;\n  undefined8 in_d5;\n  undefined8 in_d6;\n  undefined8 in_d7;\n  undefined8 unaff_d8;\n  undefined8 unaff_d9;\n  undefined8 unaff_d10;\n  undefined8 unaff_d11;\n  undefined8 unaff_d12;\n  undefined8 unaff_d13;\n  undefined8 unaff_d14;\n  undefined8 unaff_d15;\n  \n  *param_1 = in_d0;\n  param_1[1] = in_d1;\n  param_1[2] = in_d2;\n  param_1[3] = in_d3;\n  param_1[4] = in_d4;\n  param_1[5] = in_d5;\n  param_1[6] = in_d6;\n  param_1[7] = in_d7;\n  param_1[8] = unaff_d8;\n  param_1[9] = unaff_d9;\n  param_1[10] = unaff_d10;\n  param_1[0xb] = unaff_d11;\n  param_1[0xc] = unaff_d12;\n  param_1[0xd] = unaff_d13;\n  param_1[0xe] = unaff_d14;\n  param_1[0xf] = unaff_d15;\n  return;\n}\n\n\n/* === FUN_000110f4 @ 000110f4 === */\n\nvoid FUN_000110f4(undefined8 *param_1)\n\n{\n  undefined8 in_d16;\n  undefined8 in_d17;\n  undefined8 in_d18;\n  undefined8 in_d19;\n  undefined8 in_d20;\n  undefined8 in_d21;\n  undefined8 in_d22;\n  undefined8 in_d23;\n  undefined8 in_d24;\n  undefined8 in_d25;\n  undefined8 in_d26;\n  undefined8 in_d27;\n  undefined8 in_d28;\n  undefined8 in_d29;\n  undefined8 in_d30;\n  undefined8 in_d31;\n  \n  *param_1 = in_d16;\n  param_1[1] = in_d17;\n  param_1[2] = in_d18;\n  param_1[3] = in_d19;\n  param_1[4] = in_d20;\n  param_1[5] = in_d21;\n  param_1[6] = in_d22;\n  param_1[7] = in_d23;\n  param_1[8] = in_d24;\n  param_1[9] = in_d25;\n  param_1[10] = in_d26;\n  param_1[0xb] = in_d27;\n  param_1[0xc] = in_d28;\n  param_1[0xd] = in_d29;\n  param_1[0xe] = in_d30;\n  param_1[0xf] = in_d31;\n  return;\n}\n\n\n/* === FUN_000110fc @ 000110fc === */\n\nundefined4 FUN_000110fc(int *param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  \n  *(undefined1 *)((int)param_1 + 0x4a) = 0;\n  *(undefined2 *)(param_1 + 0x12) = 0;\n  iVar1 = DAT_0001113c + 0x11114;\n  *param_1 = DAT_00011140 + 0x1111e;\n  param_1[1] = iVar1;\n  __aeabi_memcpy(param_1 + 2,param_2,0x40);\n  __aeabi_memclr(param_1 + 0x14,0x132);\n  FUN_0001138c(param_1,0);\n  return 0;\n}\n\n\n/* === FUN_00011144 @ 00011144 === */\n\nundefined4 FUN_00011144(int *param_1,undefined4 param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  \n  iVar1 = (**(code **)(*param_1 + 8))(param_1);\n  uVar2 = DAT_00011174;\n  if (iVar1 != 0) {\n    uVar2 = (**(code **)(*param_1 + 0xc))(param_1,param_2);\n    *param_3 = uVar2;\n    uVar2 = 0;\n  }\n  return uVar2;\n}\n\n\n/* === FUN_00011178 @ 00011178 === */\n\nundefined4 FUN_00011178(int *param_1,int param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  \n  iVar1 = (**(code **)(*param_1 + 8))(param_1);\n  uVar2 = DAT_000111bc;\n  if (iVar1 != 0) {\n    (**(code **)(*param_1 + 0x10))(param_1,param_2,param_3);\n    if (param_2 == -1) {\n      (**(code **)(*param_1 + 0x34))(param_1,0);\n      uVar2 = 0;\n    }\n    else {\n      uVar2 = 0;\n    }\n  }\n  return uVar2;\n}\n\n\n/* === FUN_000111c0 @ 000111c0 === */\n\nundefined4 FUN_000111c0(int *param_1,undefined4 param_2,undefined8 *param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined8 uVar3;\n  \n  iVar1 = (**(code **)(*param_1 + 0x14))(param_1);\n  uVar2 = DAT_000111f4;\n  if (iVar1 != 0) {\n    uVar3 = (**(code **)(*param_1 + 0x18))(param_1,param_2);\n    *param_3 = uVar3;\n    uVar2 = 0;\n  }\n  return uVar2;\n}\n\n\n/* === FUN_000111f8 @ 000111f8 === */\n\nundefined4 FUN_000111f8(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  \n  iVar1 = (**(code **)(*param_1 + 0x14))(param_1);\n  uVar2 = DAT_00011230;\n  if (iVar1 != 0) {\n    (**(code **)(*param_1 + 0x1c))(param_1,param_2,param_3,param_4);\n    uVar2 = 0;\n  }\n  return uVar2;\n}\n\n\n/* === FUN_00011234 @ 00011234 === */\n\nvoid FUN_00011234(int *param_1)\n\n{\n                    /* WARNING: Could not recover jumptable at 0x00011238. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(*param_1 + 0x20))();\n  return;\n}\n\n\n/* === FUN_0001123a @ 0001123a === */\n\nundefined4 FUN_0001123a(int *param_1,int param_2)\n\n{\n  undefined4 uVar1;\n  \n  (**(code **)(*param_1 + 0x24))(param_1,param_2);\n  uVar1 = 0;\n  if (*(int *)(param_2 + 4) == 0) {\n    uVar1 = 0xffffe66b;\n  }\n  return uVar1;\n}\n\n\n/* === FUN_0001125c @ 0001125c === */\n\nundefined4 FUN_0001125c(int *param_1)\n\n{\n  (**(code **)(*param_1 + 0x28))();\n  return DAT_0001126c;\n}\n\n\n/* === FUN_00011270 @ 00011270 === */\n\nundefined4 FUN_00011270(int *param_1)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  \n  iVar1 = (**(code **)(*param_1 + 0x30))();\n  uVar2 = DAT_00011288;\n  if (iVar1 != 0) {\n    uVar2 = 0;\n  }\n  return uVar2;\n}\n\n\n/* === FUN_0001128c @ 0001128c === */\n\nvoid FUN_0001128c(int *param_1)\n\n{\n  (**(code **)(*param_1 + 0x14))();\n  return;\n}\n\n\n/* === FUN_000112aa @ 000112aa === */\n\nvoid FUN_000112aa(int *param_1)\n\n{\n                    /* WARNING: Could not recover jumptable at 0x000112ae. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(*param_1 + 0x3c))();\n  return;\n}\n\n\n/* === FUN_000112ea @ 000112ea === */\n\nint FUN_000112ea(int *param_1)\n\n{\n  int iVar1;\n  \n  if ((char)param_1[0x60] != '\\0') {\n    return 0;\n  }\n  iVar1 = FUN_00011654(param_1);\n  if (iVar1 == 1) {\n    (**(code **)(*param_1 + 0x34))(param_1,1);\n    if ((char)param_1[0x60] != '\\0') {\n      return 0;\n    }\n    if (param_1[0x5a] != 0) {\n      iVar1 = (**(code **)(*param_1 + 0xc))(param_1,0xfffffffe);\n      (**(code **)(*param_1 + 0x10))(param_1,0xfffffffe,param_1[0x5a] + iVar1);\n    }\n    iVar1 = 1;\n  }\n  return iVar1;\n}\n\n\n/* === FUN_00011358 @ 00011358 === */\n\nvoid FUN_00011358(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  \n  iVar2 = param_1[1];\n  uVar1 = (**(code **)(*param_1 + 0xc))(param_1,0xffffffff);\n  FUN_000116e8(iVar2,uVar1,param_2,param_3,param_4);\n  return;\n}\n\n\n/* === FUN_0001138c @ 0001138c === */\n\nvoid FUN_0001138c(int *param_1,int param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int local_24 [2];\n  int local_1c;\n  \n  piVar3 = *(int **)(DAT_000113ec + 0x113a4);\n  local_1c = *piVar3;\n  uVar1 = (**(code **)(*param_1 + 0xc))(param_1,0xffffffff);\n  param_2 = (uVar1 & 0xfffffffe) - param_2;\n  iVar2 = FUN_00011748(param_1[1],param_2,local_24);\n  if (((iVar2 == 0) || (local_24[0] == 0)) ||\n     (iVar2 = FUN_0001178c(param_1,param_2,local_24), iVar2 == 0)) {\n    *(undefined1 *)(param_1 + 0x60) = 1;\n  }\n  if (*piVar3 != local_1c) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}\n\n\n/* === FUN_00011400 @ 00011400 === */\n\nundefined4 FUN_00011400(int param_1,uint param_2)\n\n{\n  undefined4 *puVar1;\n  FILE *__stream;\n  \n  if (param_2 != 0xfffffffe) {\n    if (param_2 == 0xffffffff || param_2 == 0xf) {\n      puVar1 = (undefined4 *)(param_1 + 0x3c);\n      goto LAB_0001142c;\n    }\n    if (param_2 == 0xe) {\n      puVar1 = (undefined4 *)(param_1 + 0x38);\n      goto LAB_0001142c;\n    }\n    if (param_2 != 0xd) {\n      if (0xc < param_2) {\n        __stream = (FILE *)(*(int *)(DAT_00011468 + 0x11446) + 0xa8);\n        fprintf(__stream,(char *)(DAT_0001146c + 0x1144c),DAT_00011470 + 0x11450,\n                DAT_00011474 + 0x11452,0x5db,DAT_00011464 + 0x1143c);\n        fflush(__stream);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      puVar1 = (undefined4 *)(param_1 + param_2 * 4);\n      goto LAB_0001142c;\n    }\n  }\n  puVar1 = (undefined4 *)(param_1 + 0x34);\nLAB_0001142c:\n  return *puVar1;\n}\n\n\n/* === FUN_00011654 @ 00011654 === */\n\nvoid FUN_00011654(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 uVar1;\n  int *piVar2;\n  undefined4 local_1c;\n  undefined4 uStack_18;\n  int local_14;\n  \n  piVar2 = *(int **)(DAT_0001169c + 0x11664);\n  local_14 = *piVar2;\n  local_1c = 0;\n  uStack_18 = 0;\n  uVar1 = FUN_0001087c(*(undefined4 *)(param_1 + 0x178),&local_1c,&uStack_18,param_4,param_1);\n  uVar1 = FUN_000108c4(param_1,uVar1,local_1c,uStack_18);\n  if (*piVar2 != local_14) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail(uVar1);\n  }\n  return;\n}\n\n\n/* === FUN_000116b4 @ 000116b4 === */\n\nvoid FUN_000116b4(int param_1)\n\n{\n  if (*(char *)(param_1 + 0x41) != '\\0') {\n    if (*(char *)(param_1 + 0x40) == '\\0') {\n      FUN_00011e10(param_1 + 0x48);\n    }\n    else {\n      FUN_00011e18();\n    }\n  }\n  if (*(char *)(param_1 + 0x42) == '\\0') {\n    return;\n  }\n                    /* WARNING: Could not recover jumptable at 0x00011e50. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*(code *)(&DAT_00011e58 + DAT_00011e54))(param_1 + 0xd0);\n  return;\n}\n\n\n/* === FUN_000116e8 @ 000116e8 === */\n\nvoid FUN_000116e8(undefined4 param_1,int param_2,char *param_3,size_t param_4,int *param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int unaff_r5;\n  int *piVar4;\n  int unaff_r6;\n  size_t sStack_34;\n  \n  piVar4 = *(int **)(DAT_00011740 + 0x116fc);\n  iVar1 = *piVar4;\n  sStack_34 = param_4;\n  iVar2 = dladdr(param_2,&sStack_34,param_3,param_4,param_3);\n  if ((iVar2 == 0) || (unaff_r5 == 0)) {\n    uVar3 = 0;\n  }\n  else {\n    snprintf(param_3,param_4,(char *)(DAT_00011744 + 0x1171c));\n    *param_5 = param_2 - unaff_r6;\n    uVar3 = 1;\n  }\n  if (*piVar4 != iVar1) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail(uVar3);\n  }\n  return;\n}\n\n\n/* === FUN_00011748 @ 00011748 === */\n\nvoid FUN_00011748(undefined4 param_1,undefined4 param_2,int *param_3)\n\n{\n  int iVar1;\n  int *piVar2;\n  int local_18;\n  int local_14;\n  \n  piVar2 = *(int **)(DAT_00011788 + 0x11756);\n  local_14 = *piVar2;\n  local_18 = 0;\n  iVar1 = __gnu_Unwind_Find_exidx(param_2,&local_18);\n  *param_3 = iVar1;\n  param_3[1] = local_18;\n  if (*piVar2 != local_14) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail(iVar1 != 0);\n  }\n  return;\n}\n\n\n/* === FUN_0001178c @ 0001178c === */\n\nvoid FUN_0001178c(int param_1,undefined4 param_2,int param_3)\n\n{\n  bool bVar1;\n  uint *puVar2;\n  uint *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  FILE *__stream;\n  bool bVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  uint uVar11;\n  int *piVar12;\n  int local_38 [2];\n  int *local_30;\n  undefined4 local_2c;\n  int local_28;\n  \n  piVar12 = *(int **)(DAT_0001190c + 0x117a6);\n  local_28 = *piVar12;\n  iVar10 = *(int *)(param_3 + 4);\n  local_2c = param_2;\n  FUN_00011934(local_38,0,*(undefined4 *)(param_1 + 4),param_3,iVar10,*(undefined4 *)(param_1 + 4),\n               param_3,&local_2c);\n  if ((local_38[0] == 0) || (local_38[0] == iVar10)) goto LAB_000118b6;\n  puVar3 = (uint *)(*local_30 + local_38[0] * 8);\n  puVar2 = puVar3 + -1;\n  uVar4 = *puVar3;\n  if ((puVar2 == (uint *)0x0) || (uVar5 = *puVar2, uVar5 == 1)) goto LAB_000118b6;\n  uVar11 = puVar3[-2];\n  if ((int)uVar5 < 0) {\n    bVar1 = true;\nLAB_0001182c:\n    uVar8 = (uVar5 & 0xfffffff) >> 0x18;\n    if (uVar8 == 2) {\n      iVar10 = *(int *)(DAT_0001192c + 0x11864);\n      bVar7 = true;\n    }\n    else {\n      if (uVar8 != 1) {\n        if (uVar8 != 0) {\n          uVar9 = 0x32e;\n          iVar10 = DAT_00011918 + 0x118d8;\n          goto LAB_000118e0;\n        }\n        puVar6 = puVar2 + 1;\n        if (bVar1) {\n          puVar6 = (uint *)0x0;\n        }\n        iVar10 = *(int *)(DAT_00011914 + 0x1184c);\n        goto LAB_0001184e;\n      }\n      iVar10 = *(int *)(DAT_00011910 + 0x11858);\n      bVar7 = false;\n    }\n    uVar5 = (uVar5 & 0xffffff) >> 0x10;\n    if (uVar5 != 0 && !(bool)(bVar1 ^ 1)) {\n      uVar9 = 0x335;\n      iVar10 = DAT_00011930 + 0x118e2;\nLAB_000118e0:\n      __stream = (FILE *)(*(int *)(DAT_0001191c + 0x118ec) + 0xa8);\n      fprintf(__stream,(char *)(DAT_00011920 + 0x118f2),DAT_00011924 + 0x118f6,\n              DAT_00011928 + 0x118f8,uVar9,iVar10);\n      fflush(__stream);\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    puVar6 = puVar2 + uVar5 + 1;\n  }\n  else {\n    uVar8 = uVar5 | (uVar5 & 0x40000000) << 1;\n    uVar5 = *(uint *)(uVar8 + (int)puVar2);\n    puVar2 = (uint *)((int)puVar2 + uVar8);\n    if ((int)uVar5 < 0) {\n      bVar1 = false;\n      goto LAB_0001182c;\n    }\n    bVar1 = false;\n    iVar10 = (uVar5 | (uVar5 & 0x40000000) << 1) + (int)puVar2;\n    puVar6 = puVar2 + 1 + (puVar2[1] >> 0x18) + 1;\nLAB_0001184e:\n    bVar7 = false;\n  }\n  *(uint **)(param_1 + 0x178) = puVar2;\n  *(uint *)(param_1 + 0x158) = (uVar11 | (uVar11 & 0x40000000) << 1) + (int)(puVar3 + -2);\n  *(uint *)(param_1 + 0x15c) = (int)puVar3 + (uVar4 | (uVar4 & 0x40000000) << 1);\n  *(uint **)(param_1 + 0x160) = puVar6;\n  *(int *)(param_1 + 0x164) = iVar10;\n  uVar9 = 0;\n  if (bVar7) {\n    uVar9 = 2;\n  }\n  if (bVar1) {\n    uVar9 = 1;\n  }\n  *(undefined4 *)(param_1 + 0x16c) = uVar9;\nLAB_000118b6:\n  iVar10 = *piVar12 - local_28;\n  if (iVar10 == 0) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail(iVar10);\n}\n\n\n/* === FUN_00011934 @ 00011934 === */\n\nvoid FUN_00011934(void)\n\n{\n  int *piVar1;\n  int iVar2;\n  \n  piVar1 = *(int **)(DAT_0001196c + 72000);\n  iVar2 = *piVar1;\n  FUN_00011970();\n  if (*piVar1 != iVar2) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}\n\n\n/* === FUN_00011970 @ 00011970 === */\n\nint * FUN_00011970(int *param_1,int param_2,int param_3,int *param_4,int param_5,undefined4 param_6,\n                  undefined4 param_7,uint *param_8)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  uVar1 = param_5 - param_2;\n  while (uVar3 = uVar1, uVar3 != 0) {\n    iVar2 = param_2 + (uVar3 >> 1);\n    uVar4 = *(uint *)(*param_4 + iVar2 * 8);\n    uVar1 = uVar3 >> 1;\n    if ((uVar4 | (uVar4 & 0x40000000) << 1) + *param_4 + iVar2 * 8 <= *param_8) {\n      param_2 = iVar2 + 1;\n      uVar1 = uVar3 + ~(uVar3 >> 1);\n    }\n  }\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  param_1[2] = (int)param_4;\n  return param_1 + 3;\n}\n\n\n/* === FUN_00011e10 @ 00011e10 === */\n\nundefined4 FUN_00011e10(undefined8 *param_1)\n\n{\n  return (int)*param_1;\n}\n\n\n/* === FUN_00011e18 @ 00011e18 === */\n\nundefined4 FUN_00011e18(undefined8 *param_1)\n\n{\n  return (int)*param_1;\n}\n\n\n/* total=70 ok=42 skip=28 cfgs=42 */\n","decompile_error":"","decompile_success":true,"decompiled_at":{"$date":"2026-06-13T14:02:58.080Z"},"endianness":"little","file_name":"libfrida-check.so","file_size":13904,"format":"ELF","function_count":45,"ghidra_processor":"ARM","mime_type":null,"rel_path":"lib/armeabi-v7a/libfrida-check.so","status":"done"}
{"_id":"079770dd6129aa7689ff46ade6984af38b4d716169490cbf1ec35b83ef4757f8","abi":"arm64-v8a","apk_sha256":"76c308fac6a655a3534771777780e004feb1d91be032857768c891b2baf40ba6","architecture":"AArch64","bits":"64","cfg_count":4,"combined_c":"/* Decompiled: libfrida-check.so arch=AARCH64 */\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdint.h>\n\n\n/* === FUN_00100670 @ 00100670 === */\n\nvoid FUN_00100670(void)\n\n{\n  (*(code *)PTR_00101fc0)();\n  return;\n}\n\n\n/* === entry @ 001006f0 === */\n\nvoid entry(void)\n\n{\n  __cxa_finalize(&PTR_LOOP_00101dc8);\n  return;\n}\n\n\n/* === FUN_001006fc @ 001006fc === */\n\nvoid FUN_001006fc(void)\n\n{\n  return;\n}\n\n\n/* === Java_com_app_damnvulnerablebank_FridaCheckJNI_fridaCheck @ 0010072c === */\n\nvoid Java_com_app_damnvulnerablebank_FridaCheckJNI_fridaCheck(void)\n\n{\n  long lVar1;\n  int __fd;\n  int iVar2;\n  uint uVar3;\n  sockaddr local_38;\n  long local_28;\n  \n  lVar1 = tpidr_el0;\n  local_28 = *(long *)(lVar1 + 0x28);\n  __fd = socket(2,1,0);\n  if (-1 < __fd) {\n    local_38.sa_family = 2;\n    local_38.sa_data[0] = 'i';\n    local_38.sa_data[1] = -0x5e;\n    iVar2 = inet_pton(2,\"127.0.0.1\",(void *)((ulong)&local_38 | 4));\n    if (0 < iVar2) {\n      uVar3 = connect(__fd,&local_38,0x10);\n      uVar3 = ~uVar3 >> 0x1f;\n      goto LAB_001007ac;\n    }\n  }\n  uVar3 = 0;\nLAB_001007ac:\n  if (*(long *)(lVar1 + 0x28) == local_28) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail(uVar3);\n}\n\n\n/* total=17 ok=4 skip=13 cfgs=4 */\n","decompile_error":"","decompile_success":true,"decompiled_at":{"$date":"2026-06-13T14:02:41.262Z"},"endianness":"little","file_name":"libfrida-check.so","file_size":5896,"format":"ELF","function_count":4,"ghidra_processor":"AARCH64","mime_type":null,"rel_path":"lib/arm64-v8a/libfrida-check.so","status":"done"}
{"_id":"47de484ebdb1664eafc25c96d809d15430a450adea22c1f4c6295ccb51039241","abi":"x86","apk_sha256":"76c308fac6a655a3534771777780e004feb1d91be032857768c891b2baf40ba6","architecture":"x86","bits":"32","cfg_count":52,"combined_c":"/* Decompiled: libtool-checker.so arch=x86 */\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdint.h>\n\n\n/* === FUN_00010660 @ 00010660 === */\n\nvoid FUN_00010660(void)\n\n{\n  (*(code *)PTR_00011fd0)();\n  return;\n}\n\n\n/* === _FINI_1 @ 00010720 === */\n\nvoid _FINI_1(void)\n\n{\n  __cxa_finalize(&PTR_LOOP_00011ea4);\n  return;\n}\n\n\n/* === FUN_00010750 @ 00010750 === */\n\nvoid FUN_00010750(void)\n\n{\n  return;\n}\n\n\n/* === Java_com_scottyab_rootbeer_RootBeerNative_setLogDebugMessages @ 000107e0 === */\n\nvoid Java_com_scottyab_rootbeer_RootBeerNative_setLogDebugMessages\n               (undefined4 param_1,undefined4 param_2,char param_3)\n\n{\n  DAT_00012000 = (uint)(param_3 != '\\0');\n  return;\n}\n\n\n/* === exists @ 00010830 === */\n\n/* exists(char const*) */\n\nundefined4 __cdecl exists(char *param_1)\n\n{\n  FILE *__stream;\n  undefined4 unaff_ESI;\n  int local_14;\n  \n  __stream = fopen(param_1,\"r\");\n  if (__stream == (FILE *)0x0) {\n    if (*(int *)(local_14 + 0x38) != 0) {\n      __android_log_print(4,local_14 + -0x13e6,local_14 + -0x13bb,param_1);\n    }\n    unaff_ESI = 0;\n  }\n  else {\n    if (*(int *)(local_14 + 0x38) != 0) {\n      __android_log_print(4,local_14 + -0x13e6,local_14 + -0x13dd,param_1);\n    }\n    fclose(__stream);\n  }\n  return unaff_ESI;\n}\n\n\n/* === Java_com_scottyab_rootbeer_RootBeerNative_checkForRoot @ 00010930 === */\n\nbool Java_com_scottyab_rootbeer_RootBeerNative_checkForRoot\n               (_jarray *param_1,undefined4 param_2,_JNIEnv *param_3)\n\n{\n  int iVar1;\n  _JNIEnv *this;\n  char *pcVar2;\n  int iVar3;\n  undefined4 local_20;\n  undefined4 local_18;\n  \n  local_18 = 0;\n  iVar1 = _JNIEnv::GetArrayLength(param_3,param_1);\n  for (local_20 = 0; local_20 < iVar1; local_20 = local_20 + 1) {\n    this = (_JNIEnv *)_JNIEnv::GetObjectArrayElement(param_3,(_jobjectArray *)param_1,(int)param_3);\n    pcVar2 = (char *)_JNIEnv::GetStringUTFChars((_JNIEnv *)0x0,(_jstring *)param_1,(uchar *)this);\n    iVar3 = exists(pcVar2);\n    local_18 = iVar3 + local_18;\n    _JNIEnv::ReleaseStringUTFChars(this,(_jstring *)param_1,(char *)this);\n  }\n  return 0 < local_18;\n}\n\n\n/* === GetArrayLength @ 00010a40 === */\n\n/* _JNIEnv::GetArrayLength(_jarray*) */\n\nvoid __thiscall _JNIEnv::GetArrayLength(_JNIEnv *this,_jarray *param_1)\n\n{\n  (**(code **)(*(int *)param_1 + 0x2ac))(param_1);\n  return;\n}\n\n\n/* === GetObjectArrayElement @ 00010a90 === */\n\n/* _JNIEnv::GetObjectArrayElement(_jobjectArray*, int) */\n\nvoid __thiscall _JNIEnv::GetObjectArrayElement(_JNIEnv *this,_jobjectArray *param_1,int param_2)\n\n{\n  (**(code **)(*(int *)param_1 + 0x2b4))(param_1,param_2);\n  return;\n}\n\n\n/* === GetStringUTFChars @ 00010b00 === */\n\n/* _JNIEnv::GetStringUTFChars(_jstring*, unsigned char*) */\n\nvoid __thiscall _JNIEnv::GetStringUTFChars(_JNIEnv *this,_jstring *param_1,uchar *param_2)\n\n{\n  (**(code **)(*(int *)param_1 + 0x2a4))(param_1,param_2);\n  return;\n}\n\n\n/* === ReleaseStringUTFChars @ 00010b70 === */\n\n/* _JNIEnv::ReleaseStringUTFChars(_jstring*, char const*) */\n\nvoid __thiscall _JNIEnv::ReleaseStringUTFChars(_JNIEnv *this,_jstring *param_1,char *param_2)\n\n{\n  (**(code **)(*(int *)param_1 + 0x2a8))(param_1,param_2);\n  return;\n}\n\n\n/* total=26 ok=10 skip=16 cfgs=10 */\n","decompile_error":"","decompile_success":true,"decompiled_at":{"$date":"2026-06-13T14:03:24.078Z"},"endianness":"little","file_name":"libtool-checker.so","file_size":5616,"format":"ELF","function_count":52,"ghidra_processor":"x86","mime_type":null,"rel_path":"lib/x86/libtool-checker.so","status":"done"}
{"_id":"2c551351e20b1c4b9a68820a1dd318cc69c9d4b2dfb73c1d783285d59c2b3dae","abi":"x86_64","apk_sha256":"76c308fac6a655a3534771777780e004feb1d91be032857768c891b2baf40ba6","architecture":"x86-64","bits":"64","cfg_count":49,"combined_c":"/* Decompiled: libfrida-check.so arch=x86 */\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdint.h>\n\n\n/* === FUN_00100640 @ 00100640 === */\n\nvoid FUN_00100640(void)\n\n{\n  (*(code *)PTR_00101fc8)();\n  return;\n}\n\n\n/* === _FINI_1 @ 001006b0 === */\n\nvoid _FINI_1(void)\n\n{\n  __cxa_finalize();\n  return;\n}\n\n\n/* === FUN_001006c0 @ 001006c0 === */\n\nvoid FUN_001006c0(void)\n\n{\n  return;\n}\n\n\n/* === Java_com_app_damnvulnerablebank_FridaCheckJNI_fridaCheck @ 00100710 === */\n\nuint Java_com_app_damnvulnerablebank_FridaCheckJNI_fridaCheck\n               (int param_1,undefined8 param_2,undefined8 param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  socklen_t __len;\n  undefined4 uVar3;\n  longlong in_FS_OFFSET;\n  char local_24 [12];\n  longlong local_18;\n  \n  uVar3 = (undefined4)((ulonglong)param_3 >> 0x20);\n  __len = (socklen_t)param_3;\n  local_18 = *(longlong *)(in_FS_OFFSET + 0x28);\n  uVar2 = 0;\n  iVar1 = socket(param_1,0,__len);\n  if (-1 < iVar1) {\n    uVar2 = 0;\n    iVar1 = inet_pton(param_1,local_24,(void *)CONCAT44(uVar3,__len));\n    if (0 < iVar1) {\n      uVar2 = connect(param_1,(sockaddr *)0x10,__len);\n      uVar2 = ~uVar2 >> 0x1f;\n    }\n  }\n  if (*(longlong *)(in_FS_OFFSET + 0x28) == local_18) {\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n\n/* total=16 ok=4 skip=12 cfgs=4 */\n","decompile_error":"","decompile_success":true,"decompiled_at":{"$date":"2026-06-13T14:03:30.685Z"},"endianness":"little","file_name":"libfrida-check.so","file_size":6168,"format":"ELF","function_count":49,"ghidra_processor":"x86","mime_type":null,"rel_path":"lib/x86_64/libfrida-check.so","status":"done"}
{"_id":"a20dff2d39392888c6a08bf672d96773e272bcfb402808ff15c2ffb62ad72c18","abi":"armeabi-v7a","apk_sha256":"76c308fac6a655a3534771777780e004feb1d91be032857768c891b2baf40ba6","architecture":"ARM","bits":"32","cfg_count":50,"combined_c":"/* Decompiled: libtool-checker.so arch=ARM */\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdint.h>\n\n\n/* === _FINI_1 @ 0001113c === */\n\nvoid _FINI_1(void)\n\n{\n  (*(code *)PTR___cxa_finalize_00014f74)((int)&DAT_00011148 + DAT_00011148);\n  return;\n}\n\n\n/* === FUN_0001114c @ 0001114c === */\n\nvoid FUN_0001114c(void)\n\n{\n  return;\n}\n\n\n/* === Java_com_scottyab_rootbeer_RootBeerNative_setLogDebugMessages @ 00011180 === */\n\nvoid Java_com_scottyab_rootbeer_RootBeerNative_setLogDebugMessages\n               (undefined4 param_1,undefined4 param_2,char param_3)\n\n{\n  if (param_3 == '\\0') {\n    *(undefined4 *)(DAT_000111b4 + 0x111a6) = 0;\n  }\n  else {\n    *(undefined4 *)(DAT_000111b0 + 0x1119c) = 1;\n  }\n  return;\n}\n\n\n/* === exists @ 000111b8 === */\n\n/* exists(char const*) */\n\nundefined4 exists(char *param_1)\n\n{\n  FILE *__stream;\n  undefined4 local_c;\n  \n  __stream = fopen(param_1,(char *)(DAT_00011228 + 0x111c8));\n  if (__stream == (FILE *)0x0) {\n    if (*(int *)(DAT_00011238 + 0x11202) != 0) {\n      __android_log_print(4,DAT_0001123c + 0x11210,DAT_00011240 + 0x11214,param_1);\n    }\n    local_c = 0;\n  }\n  else {\n    if (*(int *)(DAT_0001122c + 0x111d8) != 0) {\n      __android_log_print(4,DAT_00011230 + 0x111e6,DAT_00011234 + 0x111ea,param_1);\n    }\n    fclose(__stream);\n    local_c = 1;\n  }\n  return local_c;\n}\n\n\n/* === Java_com_scottyab_rootbeer_RootBeerNative_checkForRoot @ 00011244 === */\n\nbool Java_com_scottyab_rootbeer_RootBeerNative_checkForRoot\n               (_JNIEnv *param_1,undefined4 param_2,_jarray *param_3)\n\n{\n  int iVar1;\n  _jstring *p_Var2;\n  char *pcVar3;\n  int iVar4;\n  int local_20;\n  int local_18;\n  \n  local_18 = 0;\n  iVar1 = _JNIEnv::GetArrayLength(param_1,param_3);\n  for (local_20 = 0; local_20 < iVar1; local_20 = local_20 + 1) {\n    p_Var2 = (_jstring *)_JNIEnv::GetObjectArrayElement(param_1,(_jobjectArray *)param_3,local_20);\n    pcVar3 = (char *)_JNIEnv::GetStringUTFChars(param_1,p_Var2,(uchar *)0x0);\n    iVar4 = exists(pcVar3);\n    local_18 = iVar4 + local_18;\n    _JNIEnv::ReleaseStringUTFChars(param_1,p_Var2,pcVar3);\n  }\n  return 0 < local_18;\n}\n\n\n/* === GetArrayLength @ 000112bc === */\n\n/* _JNIEnv::GetArrayLength(_jarray*) */\n\nvoid __thiscall _JNIEnv::GetArrayLength(_JNIEnv *this,_jarray *param_1)\n\n{\n  (**(code **)(*(int *)this + 0x2ac))(this,param_1);\n  return;\n}\n\n\n/* === GetObjectArrayElement @ 000112dc === */\n\n/* _JNIEnv::GetObjectArrayElement(_jobjectArray*, int) */\n\nvoid __thiscall _JNIEnv::GetObjectArrayElement(_JNIEnv *this,_jobjectArray *param_1,int param_2)\n\n{\n  (**(code **)(*(int *)this + 0x2b4))(this,param_1,param_2);\n  return;\n}\n\n\n/* === GetStringUTFChars @ 00011302 === */\n\n/* _JNIEnv::GetStringUTFChars(_jstring*, unsigned char*) */\n\nvoid __thiscall _JNIEnv::GetStringUTFChars(_JNIEnv *this,_jstring *param_1,uchar *param_2)\n\n{\n  (**(code **)(*(int *)this + 0x2a4))(this,param_1,param_2);\n  return;\n}\n\n\n/* === ReleaseStringUTFChars @ 00011328 === */\n\n/* _JNIEnv::ReleaseStringUTFChars(_jstring*, char const*) */\n\nvoid __thiscall _JNIEnv::ReleaseStringUTFChars(_JNIEnv *this,_jstring *param_1,char *param_2)\n\n{\n  (**(code **)(*(int *)this + 0x2a8))(this,param_1,param_2);\n  return;\n}\n\n\n/* === decode_eht_entry @ 00011350 === */\n\nuint * decode_eht_entry(uint *param_1,undefined4 *param_2,int *param_3)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  \n  uVar1 = *param_1;\n  if (-1 < (int)uVar1) {\n    *param_2 = 1;\n    *param_3 = (param_1[1] >> 0x18) * 4 + 4;\n    return param_1 + 1;\n  }\n  uVar3 = (uVar1 & 0xfffffff) >> 0x18;\n  if (uVar3 == 0) {\n    uVar2 = 1;\n    iVar4 = 4;\n  }\n  else {\n    if (uVar3 != 3 && uVar3 != 1) {\n      return (uint *)0x0;\n    }\n    iVar4 = ((uVar1 & 0xffffff) >> 0x10) * 4 + 4;\n    uVar2 = 2;\n  }\n  *param_3 = iVar4;\n  *param_2 = uVar2;\n  return param_1;\n}\n\n\n/* === _Unwind_VRS_Get @ 00011600 === */\n\nint _Unwind_VRS_Get(undefined4 param_1,int param_2,uint param_3,uint param_4,undefined4 param_5)\n\n{\n  int iVar1;\n  FILE *__stream;\n  \n  if (param_2 == 1) {\n    if ((param_4 | 4) != 5) {\n      return 2;\n    }\n    if (param_4 == 1) {\n      if (0xf < param_3) {\n        return 2;\n      }\n      unw_save_vfp_as_X(param_1);\n    }\n    else if (0x1f < param_3) {\n      return 2;\n    }\n    iVar1 = unw_get_fpreg(param_1,param_3 + 0x100,param_5);\n  }\n  else {\n    if (param_2 != 0) {\n      __stream = (FILE *)(*(int *)(DAT_0001169c + 0x1167a) + 0xa8);\n      fprintf(__stream,(char *)(DAT_000116a0 + 0x11680),DAT_000116a4 + 0x11684,\n              DAT_000116a8 + 0x11686,0x35e,DAT_00011698 + 0x11670);\n      fflush(__stream);\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    if (0xf < param_3) {\n      return 2;\n    }\n    if (param_4 != 0) {\n      return 2;\n    }\n    iVar1 = unw_get_reg(param_1,param_3,param_5);\n  }\n  return (uint)(iVar1 != 0) << 1;\n}\n\n\n/* === _Unwind_VRS_Set @ 000116ac === */\n\nint _Unwind_VRS_Set(undefined4 param_1,int param_2,uint param_3,uint param_4,undefined4 *param_5)\n\n{\n  int iVar1;\n  FILE *__stream;\n  \n  if (param_2 == 1) {\n    if ((param_4 | 4) != 5) {\n      return 2;\n    }\n    if (param_4 == 1) {\n      if (0xf < param_3) {\n        return 2;\n      }\n      unw_save_vfp_as_X(param_1);\n    }\n    else if (0x1f < param_3) {\n      return 2;\n    }\n    iVar1 = unw_set_fpreg(param_1,param_3 + 0x100,*param_5,param_5[1]);\n  }\n  else {\n    if (param_2 != 0) {\n      __stream = (FILE *)(*(int *)(DAT_0001174c + 0x11728) + 0xa8);\n      fprintf(__stream,(char *)(DAT_00011750 + 0x1172e),DAT_00011754 + 0x11732,\n              DAT_00011758 + 0x11734,0x328,DAT_00011748 + 0x1171e);\n      fflush(__stream);\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    if (0xf < param_3) {\n      return 2;\n    }\n    if (param_4 != 0) {\n      return 2;\n    }\n    iVar1 = unw_set_reg(param_1,param_3,*param_5);\n  }\n  return (uint)(iVar1 != 0) << 1;\n}\n\n\n/* === _Unwind_VRS_Pop @ 0001175c === */\n\nvoid _Unwind_VRS_Pop(undefined4 param_1,int param_2,uint param_3,int *param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  FILE *__stream;\n  bool bVar3;\n  uint uVar4;\n  int *unaff_r6;\n  uint uVar5;\n  int *piVar6;\n  int *local_38;\n  \n  piVar6 = *(int **)(DAT_00011894 + 0x11770);\n  iVar1 = *piVar6;\n  local_38 = param_4;\n  if (param_2 == 1) {\n    if ((((uint)param_4 | 4) == 5) &&\n       (iVar2 = unw_get_reg(param_1,0xd,&stack0xffffffd4,param_4,1,param_3), iVar2 == 0)) {\n      uVar4 = param_3 >> 0x10;\n      uVar5 = uVar4 + (param_3 & 0xffff);\n      do {\n        if (uVar5 <= uVar4) {\n          if (param_4 == (int *)0x1) {\n            unaff_r6 = unaff_r6 + 1;\n          }\n          goto LAB_00011850;\n        }\n        local_38 = (int *)*unaff_r6;\n        iVar2 = _Unwind_VRS_Set(param_1,1,uVar4,param_4,&local_38);\n        uVar4 = uVar4 + 1;\n        unaff_r6 = unaff_r6 + 2;\n      } while (iVar2 == 0);\n    }\n  }\n  else {\n    if (param_2 != 0) {\n      __stream = (FILE *)(*(int *)(DAT_0001189c + 0x11876) + 0xa8);\n      fprintf(__stream,(char *)(DAT_000118a0 + 0x1187c),DAT_000118a4 + 0x11880,\n              DAT_000118a8 + 0x11882,0x3b8,DAT_00011898 + 0x1186c);\n      fflush(__stream);\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    if ((param_4 == (int *)0x0) &&\n       (iVar2 = unw_get_reg(param_1,0xd,&local_38,0,0,param_3), iVar2 == 0)) {\n      bVar3 = false;\n      for (uVar5 = 0; uVar5 != 0x10; uVar5 = uVar5 + 1) {\n        if ((1 << (uVar5 & 0xff) & param_3) != 0) {\n          local_38 = local_38 + 1;\n          iVar2 = _Unwind_VRS_Set(param_1,0,uVar5,0,&stack0xffffffd4);\n          if (iVar2 != 0) goto LAB_0001181e;\n          bVar3 = (bool)(bVar3 | uVar5 == 0xd);\n        }\n      }\n      unaff_r6 = local_38;\n      if (bVar3) {\n        iVar2 = 0;\n      }\n      else {\nLAB_00011850:\n        iVar2 = unw_set_reg(param_1,0xd,unaff_r6);\n        iVar2 = (uint)(iVar2 != 0) << 1;\n      }\n      goto LAB_00011820;\n    }\n  }\nLAB_0001181e:\n  iVar2 = 2;\nLAB_00011820:\n  if (*piVar6 != iVar1) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail(iVar2);\n  }\n  return;\n}\n\n\n/* === FUN_00011994 @ 00011994 === */\n\nvoid FUN_00011994(undefined4 param_1,undefined4 param_2,int param_3,uint param_4)\n\n{\n  int iVar1;\n  FILE *__stream;\n  undefined4 uVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 local_58;\n  undefined4 local_54 [3];\n  code *local_48;\n  undefined4 local_40;\n  undefined4 local_34;\n  int local_2c;\n  int local_28;\n  \n  piVar4 = *(int **)(DAT_00011a94 + 0x119ac);\n  local_28 = *piVar4;\n  unw_init_local(param_2,param_1);\n  iVar3 = 1;\n  do {\n    uVar2 = 1;\n    if (((param_4 & 1) != 0) && (uVar2 = 2, iVar3 == 0)) {\n      unw_set_reg(param_2,0xffffffff,*(undefined4 *)(param_3 + 0x10));\n      param_4 = 0;\n    }\n    unw_get_reg(param_2,0xfffffffe,&local_2c);\n    iVar1 = unw_get_proc_info(param_2,local_54);\n    if (iVar1 != 0) goto LAB_00011a4a;\n    if (local_48 != (code *)0x0) {\n      *(undefined4 *)(param_3 + 0x48) = local_54[0];\n      *(undefined4 *)(param_3 + 0x4c) = local_34;\n      *(undefined4 *)(param_3 + 0x50) = local_40;\n      iVar1 = (*local_48)(uVar2,param_3,param_2);\n      if (iVar1 == 7) {\n        unw_get_reg(param_2,0xffffffff,&local_58);\n        *(undefined4 *)(param_3 + 0x10) = local_58;\n        unw_resume(param_2);\nLAB_00011a4a:\n        if (*piVar4 != local_28) {\n                    /* WARNING: Subroutine does not return */\n          __stack_chk_fail();\n        }\n        return;\n      }\n      if (iVar1 != 8) {\n        if (iVar1 == 9) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        goto LAB_00011a4a;\n      }\n      if (local_2c == *(int *)(param_3 + 0x20)) {\n        __stream = (FILE *)(*(int *)(DAT_00011a9c + 0x11a74) + 0xa8);\n        fprintf(__stream,(char *)(DAT_00011aa0 + 0x11a7a),DAT_00011aa4 + 0x11a7e,\n                DAT_00011aa8 + 0x11a80,0x268,DAT_00011a98 + 0x11a6a);\n        fflush(__stream);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n    }\n    iVar3 = iVar3 + -1;\n  } while( true );\n}\n\n\n/* === _Unwind_Complete @ 00011aac === */\n\nvoid _Unwind_Complete(void)\n\n{\n  return;\n}\n\n\n/* === _Unwind_Resume @ 00011ab0 === */\n\nvoid _Unwind_Resume(undefined4 param_1)\n\n{\n  FILE *__stream;\n  undefined1 auStack_870 [1120];\n  undefined1 auStack_410 [1024];\n  \n  unw_getcontext(auStack_410);\n  FUN_00011994(auStack_410,auStack_870,param_1,1);\n  __stream = (FILE *)(*(int *)(DAT_00011b08 + 0x11ae6) + 0xa8);\n  fprintf(__stream,(char *)(DAT_00011b0c + 0x11aec),DAT_00011b10 + 0x11af0,DAT_00011b14 + 0x11af2,\n          0x2ce,DAT_00011b04 + 0x11adc);\n  fflush(__stream);\n                    /* WARNING: Subroutine does not return */\n  abort();\n}\n\n\n/* === __gnu_unwind_frame @ 00011b8c === */\n\nundefined4 __gnu_unwind_frame(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  \n  iVar1 = unw_step(param_2);\n  uVar2 = 0;\n  if (iVar1 != 1) {\n    uVar2 = 9;\n  }\n  return uVar2;\n}\n\n\n/* === unw_getcontext @ 00011ba0 === */\n\nundefined4 unw_getcontext(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 unaff_r4;\n  undefined4 unaff_r5;\n  undefined4 unaff_r6;\n  undefined4 unaff_r7;\n  undefined4 unaff_r8;\n  undefined4 unaff_r9;\n  undefined4 unaff_r10;\n  undefined4 unaff_r11;\n  undefined4 in_r12;\n  undefined4 unaff_lr;\n  \n  *(int *)param_1 = param_1;\n  *(undefined4 *)(param_1 + 4) = param_2;\n  *(undefined4 *)(param_1 + 8) = param_3;\n  *(undefined4 *)(param_1 + 0xc) = param_4;\n  *(undefined4 *)(param_1 + 0x10) = unaff_r4;\n  *(undefined4 *)(param_1 + 0x14) = unaff_r5;\n  *(undefined4 *)(param_1 + 0x18) = unaff_r6;\n  *(undefined4 *)(param_1 + 0x1c) = unaff_r7;\n  *(undefined4 *)(param_1 + 0x20) = unaff_r8;\n  *(undefined4 *)(param_1 + 0x24) = unaff_r9;\n  *(undefined4 *)(param_1 + 0x28) = unaff_r10;\n  *(undefined4 *)(param_1 + 0x2c) = unaff_r11;\n  *(undefined4 *)(param_1 + 0x30) = in_r12;\n  *(BADSPACEBASE **)(param_1 + 0x34) = register0x00000054;\n  *(undefined4 *)(param_1 + 0x38) = unaff_lr;\n  *(undefined4 *)(param_1 + 0x3c) = unaff_lr;\n  return 0;\n}\n\n\n/* === FUN_00011bb8 @ 00011bb8 === */\n\nvoid FUN_00011bb8(undefined8 *param_1)\n\n{\n  undefined8 in_d0;\n  undefined8 in_d1;\n  undefined8 in_d2;\n  undefined8 in_d3;\n  undefined8 in_d4;\n  undefined8 in_d5;\n  undefined8 in_d6;\n  undefined8 in_d7;\n  undefined8 unaff_d8;\n  undefined8 unaff_d9;\n  undefined8 unaff_d10;\n  undefined8 unaff_d11;\n  undefined8 unaff_d12;\n  undefined8 unaff_d13;\n  undefined8 unaff_d14;\n  undefined8 unaff_d15;\n  \n  *param_1 = in_d0;\n  param_1[1] = in_d1;\n  param_1[2] = in_d2;\n  param_1[3] = in_d3;\n  param_1[4] = in_d4;\n  param_1[5] = in_d5;\n  param_1[6] = in_d6;\n  param_1[7] = in_d7;\n  param_1[8] = unaff_d8;\n  param_1[9] = unaff_d9;\n  param_1[10] = unaff_d10;\n  param_1[0xb] = unaff_d11;\n  param_1[0xc] = unaff_d12;\n  param_1[0xd] = unaff_d13;\n  param_1[0xe] = unaff_d14;\n  param_1[0xf] = unaff_d15;\n  return;\n}\n\n\n/* === FUN_00011bc0 @ 00011bc0 === */\n\nvoid FUN_00011bc0(undefined8 *param_1)\n\n{\n  undefined8 in_d0;\n  undefined8 in_d1;\n  undefined8 in_d2;\n  undefined8 in_d3;\n  undefined8 in_d4;\n  undefined8 in_d5;\n  undefined8 in_d6;\n  undefined8 in_d7;\n  undefined8 unaff_d8;\n  undefined8 unaff_d9;\n  undefined8 unaff_d10;\n  undefined8 unaff_d11;\n  undefined8 unaff_d12;\n  undefined8 unaff_d13;\n  undefined8 unaff_d14;\n  undefined8 unaff_d15;\n  \n  *param_1 = in_d0;\n  param_1[1] = in_d1;\n  param_1[2] = in_d2;\n  param_1[3] = in_d3;\n  param_1[4] = in_d4;\n  param_1[5] = in_d5;\n  param_1[6] = in_d6;\n  param_1[7] = in_d7;\n  param_1[8] = unaff_d8;\n  param_1[9] = unaff_d9;\n  param_1[10] = unaff_d10;\n  param_1[0xb] = unaff_d11;\n  param_1[0xc] = unaff_d12;\n  param_1[0xd] = unaff_d13;\n  param_1[0xe] = unaff_d14;\n  param_1[0xf] = unaff_d15;\n  return;\n}\n\n\n/* === FUN_00011bc8 @ 00011bc8 === */\n\nvoid FUN_00011bc8(undefined8 *param_1)\n\n{\n  undefined8 in_d16;\n  undefined8 in_d17;\n  undefined8 in_d18;\n  undefined8 in_d19;\n  undefined8 in_d20;\n  undefined8 in_d21;\n  undefined8 in_d22;\n  undefined8 in_d23;\n  undefined8 in_d24;\n  undefined8 in_d25;\n  undefined8 in_d26;\n  undefined8 in_d27;\n  undefined8 in_d28;\n  undefined8 in_d29;\n  undefined8 in_d30;\n  undefined8 in_d31;\n  \n  *param_1 = in_d16;\n  param_1[1] = in_d17;\n  param_1[2] = in_d18;\n  param_1[3] = in_d19;\n  param_1[4] = in_d20;\n  param_1[5] = in_d21;\n  param_1[6] = in_d22;\n  param_1[7] = in_d23;\n  param_1[8] = in_d24;\n  param_1[9] = in_d25;\n  param_1[10] = in_d26;\n  param_1[0xb] = in_d27;\n  param_1[0xc] = in_d28;\n  param_1[0xd] = in_d29;\n  param_1[0xe] = in_d30;\n  param_1[0xf] = in_d31;\n  return;\n}\n\n\n/* === unw_init_local @ 00011bd0 === */\n\nundefined4 unw_init_local(int *param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  \n  *(undefined1 *)((int)param_1 + 0x4a) = 0;\n  *(undefined2 *)(param_1 + 0x12) = 0;\n  iVar1 = DAT_00011c10 + 0x11be8;\n  *param_1 = DAT_00011c14 + 0x11bf2;\n  param_1[1] = iVar1;\n  __aeabi_memcpy(param_1 + 2,param_2,0x40);\n  __aeabi_memclr(param_1 + 0x14,0x132);\n  FUN_00011e60(param_1,0);\n  return 0;\n}\n\n\n/* === unw_get_reg @ 00011c18 === */\n\nundefined4 unw_get_reg(int *param_1,undefined4 param_2,undefined4 *param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  \n  iVar1 = (**(code **)(*param_1 + 8))(param_1);\n  uVar2 = DAT_00011c48;\n  if (iVar1 != 0) {\n    uVar2 = (**(code **)(*param_1 + 0xc))(param_1,param_2);\n    *param_3 = uVar2;\n    uVar2 = 0;\n  }\n  return uVar2;\n}\n\n\n/* === unw_set_reg @ 00011c4c === */\n\nundefined4 unw_set_reg(int *param_1,int param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  \n  iVar1 = (**(code **)(*param_1 + 8))(param_1);\n  uVar2 = DAT_00011c90;\n  if (iVar1 != 0) {\n    (**(code **)(*param_1 + 0x10))(param_1,param_2,param_3);\n    if (param_2 == -1) {\n      (**(code **)(*param_1 + 0x34))(param_1,0);\n      uVar2 = 0;\n    }\n    else {\n      uVar2 = 0;\n    }\n  }\n  return uVar2;\n}\n\n\n/* === unw_get_fpreg @ 00011c94 === */\n\nundefined4 unw_get_fpreg(int *param_1,undefined4 param_2,undefined8 *param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined8 uVar3;\n  \n  iVar1 = (**(code **)(*param_1 + 0x14))(param_1);\n  uVar2 = DAT_00011cc8;\n  if (iVar1 != 0) {\n    uVar3 = (**(code **)(*param_1 + 0x18))(param_1,param_2);\n    *param_3 = uVar3;\n    uVar2 = 0;\n  }\n  return uVar2;\n}\n\n\n/* === unw_set_fpreg @ 00011ccc === */\n\nundefined4 unw_set_fpreg(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  \n  iVar1 = (**(code **)(*param_1 + 0x14))(param_1);\n  uVar2 = DAT_00011d04;\n  if (iVar1 != 0) {\n    (**(code **)(*param_1 + 0x1c))(param_1,param_2,param_3,param_4);\n    uVar2 = 0;\n  }\n  return uVar2;\n}\n\n\n/* === unw_step @ 00011d08 === */\n\nvoid unw_step(int *param_1)\n\n{\n                    /* WARNING: Could not recover jumptable at 0x00011d0c. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(*param_1 + 0x20))();\n  return;\n}\n\n\n/* === unw_get_proc_info @ 00011d0e === */\n\nundefined4 unw_get_proc_info(int *param_1,int param_2)\n\n{\n  undefined4 uVar1;\n  \n  (**(code **)(*param_1 + 0x24))(param_1,param_2);\n  uVar1 = 0;\n  if (*(int *)(param_2 + 4) == 0) {\n    uVar1 = 0xffffe66b;\n  }\n  return uVar1;\n}\n\n\n/* === unw_resume @ 00011d30 === */\n\nundefined4 unw_resume(int *param_1)\n\n{\n  (**(code **)(*param_1 + 0x28))();\n  return DAT_00011d40;\n}\n\n\n/* === unw_get_proc_name @ 00011d44 === */\n\nundefined4 unw_get_proc_name(int *param_1)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  \n  iVar1 = (**(code **)(*param_1 + 0x30))();\n  uVar2 = DAT_00011d5c;\n  if (iVar1 != 0) {\n    uVar2 = 0;\n  }\n  return uVar2;\n}\n\n\n/* === unw_is_fpreg @ 00011d60 === */\n\nvoid unw_is_fpreg(int *param_1)\n\n{\n  (**(code **)(*param_1 + 0x14))();\n  return;\n}\n\n\n/* === unw_regname @ 00011d6c === */\n\nvoid unw_regname(int *param_1)\n\n{\n                    /* WARNING: Could not recover jumptable at 0x00011d70. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(*param_1 + 0x38))();\n  return;\n}\n\n\n/* === unw_is_signal_frame @ 00011d72 === */\n\nvoid unw_is_signal_frame(int *param_1)\n\n{\n  (**(code **)(*param_1 + 0x2c))();\n  return;\n}\n\n\n/* === unw_save_vfp_as_X @ 00011d7e === */\n\nvoid unw_save_vfp_as_X(int *param_1)\n\n{\n                    /* WARNING: Could not recover jumptable at 0x00011d82. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(*param_1 + 0x3c))();\n  return;\n}\n\n\n/* === FUN_00011dbe @ 00011dbe === */\n\nint FUN_00011dbe(int *param_1)\n\n{\n  int iVar1;\n  \n  if ((char)param_1[0x60] != '\\0') {\n    return 0;\n  }\n  iVar1 = FUN_00012128(param_1);\n  if (iVar1 == 1) {\n    (**(code **)(*param_1 + 0x34))(param_1,1);\n    if ((char)param_1[0x60] != '\\0') {\n      return 0;\n    }\n    if (param_1[0x5a] != 0) {\n      iVar1 = (**(code **)(*param_1 + 0xc))(param_1,0xfffffffe);\n      (**(code **)(*param_1 + 0x10))(param_1,0xfffffffe,param_1[0x5a] + iVar1);\n    }\n    iVar1 = 1;\n  }\n  return iVar1;\n}\n\n\n/* === FUN_00011e2c @ 00011e2c === */\n\nvoid FUN_00011e2c(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  \n  iVar2 = param_1[1];\n  uVar1 = (**(code **)(*param_1 + 0xc))(param_1,0xffffffff);\n  FUN_000121bc(iVar2,uVar1,param_2,param_3,param_4);\n  return;\n}\n\n\n/* === FUN_00011e60 @ 00011e60 === */\n\nvoid FUN_00011e60(int *param_1,int param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int local_24 [2];\n  int local_1c;\n  \n  piVar3 = *(int **)(DAT_00011ec0 + 0x11e78);\n  local_1c = *piVar3;\n  uVar1 = (**(code **)(*param_1 + 0xc))(param_1,0xffffffff);\n  param_2 = (uVar1 & 0xfffffffe) - param_2;\n  iVar2 = FUN_0001221c(param_1[1],param_2,local_24);\n  if (((iVar2 == 0) || (local_24[0] == 0)) ||\n     (iVar2 = FUN_00012260(param_1,param_2,local_24), iVar2 == 0)) {\n    *(undefined1 *)(param_1 + 0x60) = 1;\n  }\n  if (*piVar3 != local_1c) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}\n\n\n/* === FUN_00011ed4 @ 00011ed4 === */\n\nundefined4 FUN_00011ed4(int param_1,uint param_2)\n\n{\n  undefined4 *puVar1;\n  FILE *__stream;\n  \n  if (param_2 != 0xfffffffe) {\n    if (param_2 == 0xffffffff || param_2 == 0xf) {\n      puVar1 = (undefined4 *)(param_1 + 0x3c);\n      goto LAB_00011f00;\n    }\n    if (param_2 == 0xe) {\n      puVar1 = (undefined4 *)(param_1 + 0x38);\n      goto LAB_00011f00;\n    }\n    if (param_2 != 0xd) {\n      if (0xc < param_2) {\n        __stream = (FILE *)(*(int *)(DAT_00011f3c + 0x11f1a) + 0xa8);\n        fprintf(__stream,(char *)(DAT_00011f40 + 0x11f20),DAT_00011f44 + 0x11f24,\n                DAT_00011f48 + 0x11f26,0x5db,DAT_00011f38 + 0x11f10);\n        fflush(__stream);\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n      puVar1 = (undefined4 *)(param_1 + param_2 * 4);\n      goto LAB_00011f00;\n    }\n  }\n  puVar1 = (undefined4 *)(param_1 + 0x34);\nLAB_00011f00:\n  return *puVar1;\n}\n\n\n/* === FUN_00012128 @ 00012128 === */\n\nvoid FUN_00012128(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 uVar1;\n  int *piVar2;\n  undefined4 local_1c;\n  undefined4 uStack_18;\n  int local_14;\n  \n  piVar2 = *(int **)(DAT_00012170 + 0x12138);\n  local_14 = *piVar2;\n  local_1c = 0;\n  uStack_18 = 0;\n  uVar1 = decode_eht_entry(*(undefined4 *)(param_1 + 0x178),&local_1c,&uStack_18,param_4,param_1);\n  uVar1 = _Unwind_VRS_Interpret(param_1,uVar1,local_1c,uStack_18);\n  if (*piVar2 != local_14) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail(uVar1);\n  }\n  return;\n}\n\n\n/* === FUN_00012188 @ 00012188 === */\n\nvoid FUN_00012188(int param_1)\n\n{\n  if (*(char *)(param_1 + 0x41) != '\\0') {\n    if (*(char *)(param_1 + 0x40) == '\\0') {\n      FUN_000128e4(param_1 + 0x48);\n    }\n    else {\n      FUN_000128ec();\n    }\n  }\n  if (*(char *)(param_1 + 0x42) == '\\0') {\n    return;\n  }\n                    /* WARNING: Could not recover jumptable at 0x00012924. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*(code *)(&DAT_0001292c + DAT_00012928))(param_1 + 0xd0);\n  return;\n}\n\n\n/* === FUN_000121bc @ 000121bc === */\n\nvoid FUN_000121bc(undefined4 param_1,int param_2,char *param_3,size_t param_4,int *param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int unaff_r5;\n  int *piVar4;\n  int unaff_r6;\n  size_t sStack_34;\n  \n  piVar4 = *(int **)(DAT_00012214 + 0x121d0);\n  iVar1 = *piVar4;\n  sStack_34 = param_4;\n  iVar2 = dladdr(param_2,&sStack_34,param_3,param_4,param_3);\n  if ((iVar2 == 0) || (unaff_r5 == 0)) {\n    uVar3 = 0;\n  }\n  else {\n    snprintf(param_3,param_4,(char *)(DAT_00012218 + 0x121f0));\n    *param_5 = param_2 - unaff_r6;\n    uVar3 = 1;\n  }\n  if (*piVar4 != iVar1) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail(uVar3);\n  }\n  return;\n}\n\n\n/* === FUN_0001221c @ 0001221c === */\n\nvoid FUN_0001221c(undefined4 param_1,undefined4 param_2,int *param_3)\n\n{\n  int iVar1;\n  int *piVar2;\n  int local_18;\n  int local_14;\n  \n  piVar2 = *(int **)(DAT_0001225c + 0x1222a);\n  local_14 = *piVar2;\n  local_18 = 0;\n  iVar1 = __gnu_Unwind_Find_exidx(param_2,&local_18);\n  *param_3 = iVar1;\n  param_3[1] = local_18;\n  if (*piVar2 != local_14) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail(iVar1 != 0);\n  }\n  return;\n}\n\n\n/* === FUN_00012260 @ 00012260 === */\n\nvoid FUN_00012260(int param_1,undefined4 param_2,int param_3)\n\n{\n  bool bVar1;\n  uint *puVar2;\n  uint *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  FILE *__stream;\n  bool bVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  uint uVar11;\n  int *piVar12;\n  int local_38 [2];\n  int *local_30;\n  undefined4 local_2c;\n  int local_28;\n  \n  piVar12 = *(int **)(DAT_000123e0 + 0x1227a);\n  local_28 = *piVar12;\n  iVar10 = *(int *)(param_3 + 4);\n  local_2c = param_2;\n  FUN_00012408(local_38,0,*(undefined4 *)(param_1 + 4),param_3,iVar10,*(undefined4 *)(param_1 + 4),\n               param_3,&local_2c);\n  if ((local_38[0] == 0) || (local_38[0] == iVar10)) goto LAB_0001238a;\n  puVar3 = (uint *)(*local_30 + local_38[0] * 8);\n  puVar2 = puVar3 + -1;\n  uVar4 = *puVar3;\n  if ((puVar2 == (uint *)0x0) || (uVar5 = *puVar2, uVar5 == 1)) goto LAB_0001238a;\n  uVar11 = puVar3[-2];\n  if ((int)uVar5 < 0) {\n    bVar1 = true;\nLAB_00012300:\n    uVar8 = (uVar5 & 0xfffffff) >> 0x18;\n    if (uVar8 == 2) {\n      iVar10 = *(int *)(DAT_00012400 + 0x12338);\n      bVar7 = true;\n    }\n    else {\n      if (uVar8 != 1) {\n        if (uVar8 != 0) {\n          uVar9 = 0x32e;\n          iVar10 = DAT_000123ec + 0x123ac;\n          goto LAB_000123b4;\n        }\n        puVar6 = puVar2 + 1;\n        if (bVar1) {\n          puVar6 = (uint *)0x0;\n        }\n        iVar10 = *(int *)(DAT_000123e8 + 0x12320);\n        goto LAB_00012322;\n      }\n      iVar10 = *(int *)(DAT_000123e4 + 0x1232c);\n      bVar7 = false;\n    }\n    uVar5 = (uVar5 & 0xffffff) >> 0x10;\n    if (uVar5 != 0 && !(bool)(bVar1 ^ 1)) {\n      uVar9 = 0x335;\n      iVar10 = DAT_00012404 + 0x123b6;\nLAB_000123b4:\n      __stream = (FILE *)(*(int *)(DAT_000123f0 + 0x123c0) + 0xa8);\n      fprintf(__stream,(char *)(DAT_000123f4 + 0x123c6),DAT_000123f8 + 0x123ca,\n              DAT_000123fc + 0x123cc,uVar9,iVar10);\n      fflush(__stream);\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    puVar6 = puVar2 + uVar5 + 1;\n  }\n  else {\n    uVar8 = uVar5 | (uVar5 & 0x40000000) << 1;\n    uVar5 = *(uint *)(uVar8 + (int)puVar2);\n    puVar2 = (uint *)((int)puVar2 + uVar8);\n    if ((int)uVar5 < 0) {\n      bVar1 = false;\n      goto LAB_00012300;\n    }\n    bVar1 = false;\n    iVar10 = (uVar5 | (uVar5 & 0x40000000) << 1) + (int)puVar2;\n    puVar6 = puVar2 + 1 + (puVar2[1] >> 0x18) + 1;\nLAB_00012322:\n    bVar7 = false;\n  }\n  *(uint **)(param_1 + 0x178) = puVar2;\n  *(uint *)(param_1 + 0x158) = (uVar11 | (uVar11 & 0x40000000) << 1) + (int)(puVar3 + -2);\n  *(uint *)(param_1 + 0x15c) = (int)puVar3 + (uVar4 | (uVar4 & 0x40000000) << 1);\n  *(uint **)(param_1 + 0x160) = puVar6;\n  *(int *)(param_1 + 0x164) = iVar10;\n  uVar9 = 0;\n  if (bVar7) {\n    uVar9 = 2;\n  }\n  if (bVar1) {\n    uVar9 = 1;\n  }\n  *(undefined4 *)(param_1 + 0x16c) = uVar9;\nLAB_0001238a:\n  iVar10 = *piVar12 - local_28;\n  if (iVar10 == 0) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail(iVar10);\n}\n\n\n/* === FUN_00012408 @ 00012408 === */\n\nvoid FUN_00012408(void)\n\n{\n  int *piVar1;\n  int iVar2;\n  \n  piVar1 = *(int **)(DAT_00012440 + 0x12414);\n  iVar2 = *piVar1;\n  FUN_00012444();\n  if (*piVar1 != iVar2) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}\n\n\n/* === FUN_00012444 @ 00012444 === */\n\nint * FUN_00012444(int *param_1,int param_2,int param_3,int *param_4,int param_5,undefined4 param_6,\n                  undefined4 param_7,uint *param_8)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  \n  uVar1 = param_5 - param_2;\n  while (uVar3 = uVar1, uVar3 != 0) {\n    iVar2 = param_2 + (uVar3 >> 1);\n    uVar4 = *(uint *)(*param_4 + iVar2 * 8);\n    uVar1 = uVar3 >> 1;\n    if ((uVar4 | (uVar4 & 0x40000000) << 1) + *param_4 + iVar2 * 8 <= *param_8) {\n      param_2 = iVar2 + 1;\n      uVar1 = uVar3 + ~(uVar3 >> 1);\n    }\n  }\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  param_1[2] = (int)param_4;\n  return param_1 + 3;\n}\n\n\n/* === FUN_000128e4 @ 000128e4 === */\n\nundefined4 FUN_000128e4(undefined8 *param_1)\n\n{\n  return (int)*param_1;\n}\n\n\n/* === FUN_000128ec @ 000128ec === */\n\nundefined4 FUN_000128ec(undefined8 *param_1)\n\n{\n  return (int)*param_1;\n}\n\n\n/* total=104 ok=47 skip=57 cfgs=47 */\n","decompile_error":"","decompile_success":true,"decompiled_at":{"$date":"2026-06-13T14:03:08.461Z"},"endianness":"little","file_name":"libtool-checker.so","file_size":18004,"format":"ELF","function_count":50,"ghidra_processor":"ARM","mime_type":null,"rel_path":"lib/armeabi-v7a/libtool-checker.so","status":"done"}
{"_id":"b8d3ea6823e89861365e723ea740f733b3479af849b31f21419359845641079d","abi":"x86_64","apk_sha256":"76c308fac6a655a3534771777780e004feb1d91be032857768c891b2baf40ba6","architecture":"x86-64","bits":"64","cfg_count":54,"combined_c":"/* Decompiled: libtool-checker.so arch=x86 */\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdint.h>\n\n\n/* === FUN_00100850 @ 00100850 === */\n\nvoid FUN_00100850(void)\n\n{\n  (*(code *)PTR_00102fa8)();\n  return;\n}\n\n\n/* === _FINI_1 @ 00100900 === */\n\nvoid _FINI_1(void)\n\n{\n  __cxa_finalize();\n  return;\n}\n\n\n/* === FUN_00100910 @ 00100910 === */\n\nvoid FUN_00100910(void)\n\n{\n  return;\n}\n\n\n/* === Java_com_scottyab_rootbeer_RootBeerNative_setLogDebugMessages @ 00100960 === */\n\nvoid Java_com_scottyab_rootbeer_RootBeerNative_setLogDebugMessages(undefined8 param_1,char param_2)\n\n{\n  DAT_00103000 = (uint)(param_2 != '\\0');\n  return;\n}\n\n\n/* === exists @ 001009a0 === */\n\n/* exists(char const*) */\n\nundefined4 exists(char *param_1)\n\n{\n  FILE *pFVar1;\n  char *in_RDX;\n  FILE *unaff_RDI;\n  undefined4 local_c;\n  \n  pFVar1 = fopen(param_1,in_RDX);\n  if (pFVar1 == (FILE *)0x0) {\n    if (DAT_00103000 != 0) {\n      __android_log_print(unaff_RDI,\"LOOKING FOR BINARY: %s Absent :(\");\n    }\n    local_c = 0;\n  }\n  else {\n    if (DAT_00103000 != 0) {\n      __android_log_print(unaff_RDI,\"LOOKING FOR BINARY: %s PRESENT!!!\");\n      param_1 = (char *)unaff_RDI;\n    }\n    fclose((FILE *)param_1);\n    local_c = 1;\n  }\n  return local_c;\n}\n\n\n/* === Java_com_scottyab_rootbeer_RootBeerNative_checkForRoot @ 00100a50 === */\n\nbool Java_com_scottyab_rootbeer_RootBeerNative_checkForRoot(_jobjectArray *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined4 local_2c;\n  undefined4 local_24;\n  \n  local_24 = 0;\n  iVar1 = _JNIEnv::GetArrayLength((_jarray *)param_1);\n  for (local_2c = 0; local_2c < iVar1; local_2c = local_2c + 1) {\n    _JNIEnv::GetObjectArrayElement(param_1,local_2c);\n    param_1 = (_jobjectArray *)0x0;\n    pcVar3 = (char *)_JNIEnv::GetStringUTFChars((_jstring *)0x0,(uchar *)0x0);\n    iVar2 = exists((char *)param_1);\n    local_24 = iVar2 + local_24;\n    _JNIEnv::ReleaseStringUTFChars((_jstring *)param_1,pcVar3);\n  }\n  return 0 < local_24;\n}\n\n\n/* === GetArrayLength @ 00100b00 === */\n\n/* _JNIEnv::GetArrayLength(_jarray*) */\n\nvoid _JNIEnv::GetArrayLength(_jarray *param_1)\n\n{\n  longlong *unaff_RDI;\n  \n  (**(code **)(*unaff_RDI + 0x558))();\n  return;\n}\n\n\n/* === GetObjectArrayElement @ 00100b30 === */\n\n/* _JNIEnv::GetObjectArrayElement(_jobjectArray*, int) */\n\nvoid _JNIEnv::GetObjectArrayElement(_jobjectArray *param_1,int param_2)\n\n{\n  longlong *unaff_RDI;\n  \n  (**(code **)(*unaff_RDI + 0x568))(*(code **)(*unaff_RDI + 0x568),param_2);\n  return;\n}\n\n\n/* === GetStringUTFChars @ 00100b70 === */\n\n/* _JNIEnv::GetStringUTFChars(_jstring*, unsigned char*) */\n\nvoid _JNIEnv::GetStringUTFChars(_jstring *param_1,uchar *param_2)\n\n{\n  longlong *unaff_RDI;\n  \n  (**(code **)(*unaff_RDI + 0x548))(*(code **)(*unaff_RDI + 0x548),param_2);\n  return;\n}\n\n\n/* === ReleaseStringUTFChars @ 00100bb0 === */\n\n/* _JNIEnv::ReleaseStringUTFChars(_jstring*, char const*) */\n\nvoid _JNIEnv::ReleaseStringUTFChars(_jstring *param_1,char *param_2)\n\n{\n  longlong *unaff_RDI;\n  \n  (**(code **)(*unaff_RDI + 0x550))(*(code **)(*unaff_RDI + 0x550),param_2);\n  return;\n}\n\n\n/* total=25 ok=10 skip=15 cfgs=10 */\n","decompile_error":"","decompile_success":true,"decompiled_at":{"$date":"2026-06-13T14:03:38.928Z"},"endianness":"little","file_name":"libtool-checker.so","file_size":10336,"format":"ELF","function_count":54,"ghidra_processor":"x86","mime_type":null,"rel_path":"lib/x86_64/libtool-checker.so","status":"done"}
{"_id":"3470795002fc8f85d9fec3c8b84f82eebe9aee944705a0e3efb385e41cf05e70","abi":"x86","apk_sha256":"76c308fac6a655a3534771777780e004feb1d91be032857768c891b2baf40ba6","architecture":"x86","bits":"32","cfg_count":47,"combined_c":"/* Decompiled: libfrida-check.so arch=x86 */\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdint.h>\n\n\n/* === FUN_00010480 @ 00010480 === */\n\nvoid FUN_00010480(void)\n\n{\n  (*(code *)PTR_00011fe4)();\n  return;\n}\n\n\n/* === _FINI_1 @ 000104f0 === */\n\nvoid _FINI_1(void)\n\n{\n  __cxa_finalize(&PTR_LOOP_00011ec8);\n  return;\n}\n\n\n/* === FUN_00010520 @ 00010520 === */\n\nvoid FUN_00010520(void)\n\n{\n  return;\n}\n\n\n/* === Java_com_app_damnvulnerablebank_FridaCheckJNI_fridaCheck @ 000105b0 === */\n\nuint Java_com_app_damnvulnerablebank_FridaCheckJNI_fridaCheck\n               (undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  int __fd;\n  int iVar1;\n  uint uVar2;\n  int in_GS_OFFSET;\n  undefined4 local_18 [2];\n  \n  local_18[0] = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  __fd = socket(2,1,0);\n  uVar2 = 0;\n  if (-1 < __fd) {\n    iVar1 = inet_pton(2,\"127.0.0.1\",local_18);\n    if (0 < iVar1) {\n      uVar2 = connect(__fd,(sockaddr *)&stack0xfffffff0,0x10);\n      uVar2 = ~uVar2 >> 0x1f;\n    }\n  }\n  if (*(int *)(in_GS_OFFSET + 0x14) == param_3) {\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n\n/* total=16 ok=4 skip=12 cfgs=4 */\n","decompile_error":"","decompile_success":true,"decompiled_at":{"$date":"2026-06-13T14:03:15.095Z"},"endianness":"little","file_name":"libfrida-check.so","file_size":5564,"format":"ELF","function_count":47,"ghidra_processor":"x86","mime_type":null,"rel_path":"lib/x86/libfrida-check.so","status":"done"}
